<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def correct_crosstalk(fl1, fl2, fl3, fl_channel, ct21=0, ct31=0, ct12=0, ct32=0, ct13=0, ct23=0):
 """Perform crosstalk correction Parameters fli: int, float, or np.ndarray Measured fluorescence signals fl_channel: int (1, 2, or 3) The channel number for which the crosstalk-corrected signal should be computed cij: float Spill (crosstalk or bleed-through) from channel i to channel j This spill is computed from the fluorescence signal of e.g. single-stained positive control cells; It is defined by the ratio of the fluorescence signals of the two channels, i.e cij = flj / fli. See Also -------- get_compensation_matrix: compute the inverse crosstalk matrix Notes ----- If there are only two channels (e.g. fl1 and fl2), then the crosstalk to and from the other channel (ct31, ct32, ct13, ct23) should be set to zero. """

    fl_channel = int(fl_channel)
    if fl_channel not in [1, 2, 3]:
        raise ValueError("`fl_channel` must be 1, 2, or 3!")

    minv = get_compensation_matrix(ct21=ct21, ct31=ct31, ct12=ct12,
                                   ct32=ct32, ct13=ct13, ct23=ct23)

    col = minv[:, fl_channel - 1].flatten()
    flout = col[0] * fl1 + col[1] * fl2 + col[2] * fl3
    return flout