DSPRelated.com
Forums

Code for I/Q mismatch calibration

Started by Peter Mairhofer July 14, 2016
Hi,

Does anyone have some code for I/Q mismatch calibration/compensation for
a direct conversion receiver which I may use?

So far I used a spectrum analyzer as capturing device which can do I/Q
calibration automatically ... but now I use an RF board and I have an
image at -30dBc ... and NMSE=-30 dB only.

I was told I should just filter out the image but this makes it even
worse. I don't think it makes sense because isn't also crap from the
image on top of the wanted signal?

Then I followed [1]. But since I just want to understand if the error is
indeed caused by I/Q mismatch, I don't want to bother implementing an
algorithm but just use Eq (13) while sweeping over possible values of
alpha and phi:

for k1=1:length(alphas)
  for k2=1:length(phis)
    alpha = alphas(k1);
    phi = phis(k2);
    A = alpha^-1;
    C = -sin(phi)/(alpha*cos(phi));
    D = 1/cos(phi);
    ycorr = real(yrx)*A + 1i*(real(yrx)*C + imag(yrx)*C);

    % in order to check for NMSE, need to time align
    ycorr = ycorr/std(ycorr)*std(x);
    [~,ycorr] = fitSignal_120825(x, ycorr);
    NMSE(k1,k2) = 20*log10(norm(ycorr-x)/norm(x));
  end
end

... but the NMSE is stuck at -30dB with alpha~1 and phi~0.

Maybe doing something wrong.

I wonder that I could not find a single sample code in google or matlab
file exchange ...

Thank you!

Peter





[1] http://www.faculty.ece.vt.edu/swe/argus/iqbal.pdf


On Thursday, July 14, 2016 at 10:39:11 PM UTC-4, Peter Mairhofer wrote:
> Hi, > > Does anyone have some code for I/Q mismatch calibration/compensation for > a direct conversion receiver which I may use? > > So far I used a spectrum analyzer as capturing device which can do I/Q > calibration automatically ... but now I use an RF board and I have an > image at -30dBc ... and NMSE=-30 dB only. > > I was told I should just filter out the image but this makes it even > worse. I don't think it makes sense because isn't also crap from the > image on top of the wanted signal? > > Then I followed [1]. But since I just want to understand if the error is > indeed caused by I/Q mismatch, I don't want to bother implementing an > algorithm but just use Eq (13) while sweeping over possible values of > alpha and phi: > > for k1=1:length(alphas) > for k2=1:length(phis) > alpha = alphas(k1); > phi = phis(k2); > A = alpha^-1; > C = -sin(phi)/(alpha*cos(phi)); > D = 1/cos(phi); > ycorr = real(yrx)*A + 1i*(real(yrx)*C + imag(yrx)*C); > > % in order to check for NMSE, need to time align > ycorr = ycorr/std(ycorr)*std(x); > [~,ycorr] = fitSignal_120825(x, ycorr); > NMSE(k1,k2) = 20*log10(norm(ycorr-x)/norm(x)); > end > end > > ... but the NMSE is stuck at -30dB with alpha~1 and phi~0. > > Maybe doing something wrong. > > I wonder that I could not find a single sample code in google or matlab > file exchange ... > > Thank you! > > Peter > > > > > > [1] http://www.faculty.ece.vt.edu/swe/argus/iqbal.pdf
For starters it looks like the line in your code which computes ycorr does not follow your reference. You have: ycorr = real(yrx)*A + 1i*(real(yrx)*C + imag(yrx)*C); But shouldn't it be: ycorr = real(yrx)*A + 1i*(real(yrx)*C + imag(yrx)*D);
On Thu, 14 Jul 2016 19:39:29 -0700, Peter Mairhofer <63832452@gmx.net>
wrote:

>Hi, > >Does anyone have some code for I/Q mismatch calibration/compensation for >a direct conversion receiver which I may use? > >So far I used a spectrum analyzer as capturing device which can do I/Q >calibration automatically ... but now I use an RF board and I have an >image at -30dBc ... and NMSE=-30 dB only. > >I was told I should just filter out the image but this makes it even >worse. I don't think it makes sense because isn't also crap from the >image on top of the wanted signal? > >Then I followed [1]. But since I just want to understand if the error is >indeed caused by I/Q mismatch, I don't want to bother implementing an >algorithm but just use Eq (13) while sweeping over possible values of >alpha and phi: > >for k1=1:length(alphas) > for k2=1:length(phis) > alpha = alphas(k1); > phi = phis(k2); > A = alpha^-1; > C = -sin(phi)/(alpha*cos(phi)); > D = 1/cos(phi); > ycorr = real(yrx)*A + 1i*(real(yrx)*C + imag(yrx)*C); > > % in order to check for NMSE, need to time align > ycorr = ycorr/std(ycorr)*std(x); > [~,ycorr] = fitSignal_120825(x, ycorr); > NMSE(k1,k2) = 20*log10(norm(ycorr-x)/norm(x)); > end >end > >... but the NMSE is stuck at -30dB with alpha~1 and phi~0. > >Maybe doing something wrong. > >I wonder that I could not find a single sample code in google or matlab >file exchange ... > >Thank you! > >Peter > > >[1] http://www.faculty.ece.vt.edu/swe/argus/iqbal.pdf
The referenced link won't load for me, so I'm really a little puzzled at what you're trying to do. Is the "image" that you're trying to get of in-band or separate from the desired carrier? If it is separate, i.e., at a different frequency, then it is simply a filtering issue to get rid of it and it probably doesn't have much if anything to do with I-Q imbalance. There are different types of IQ imbalance, specifically gain and phase balance. You can handle each differently, and if you just want to compensate for distortion in a single tuner (e.g., a lab setup), you can do this by sending a sine wave at a slight offset frequency into the tuner. If it is an oval or an ellipse, you can change the relative I and Q gains if the distortion is on-axis, or slightly adjust their relative phase (i.e., sampling instance) if the distortion is off-axis. You don't need to do this real-time to calibrate out imbalance due to component or manufacturing variance. It used to be a normal production test procedure to do this on modems before they left the factory floor...back when separate components were used to tuning, filtering, sampling, etc. So you might want to give a little more info on what you're really trying to do.
On Friday, July 15, 2016 at 12:38:16 PM UTC-4, Eric Jacobsen wrote:
> On Thu, 14 Jul 2016 19:39:29 -0700, Peter Mairhofer <63832452@gmx.net> > wrote: >=20 > >Hi, > > > >Does anyone have some code for I/Q mismatch calibration/compensation for > >a direct conversion receiver which I may use? > > > >So far I used a spectrum analyzer as capturing device which can do I/Q > >calibration automatically ... but now I use an RF board and I have an > >image at -30dBc ... and NMSE=3D-30 dB only. > > > >I was told I should just filter out the image but this makes it even > >worse. I don't think it makes sense because isn't also crap from the > >image on top of the wanted signal? > > > >Then I followed [1]. But since I just want to understand if the error is > >indeed caused by I/Q mismatch, I don't want to bother implementing an > >algorithm but just use Eq (13) while sweeping over possible values of > >alpha and phi: > > > >for k1=3D1:length(alphas) > > for k2=3D1:length(phis) > > alpha =3D alphas(k1); > > phi =3D phis(k2); > > A =3D alpha^-1; > > C =3D -sin(phi)/(alpha*cos(phi)); > > D =3D 1/cos(phi); > > ycorr =3D real(yrx)*A + 1i*(real(yrx)*C + imag(yrx)*C); > > > > % in order to check for NMSE, need to time align > > ycorr =3D ycorr/std(ycorr)*std(x); > > [~,ycorr] =3D fitSignal_120825(x, ycorr); > > NMSE(k1,k2) =3D 20*log10(norm(ycorr-x)/norm(x)); > > end > >end > > > >... but the NMSE is stuck at -30dB with alpha~1 and phi~0. > > > >Maybe doing something wrong. > > > >I wonder that I could not find a single sample code in google or matlab > >file exchange ... > > > >Thank you! > > > >Peter > > > > > >[1] http://www.faculty.ece.vt.edu/swe/argus/iqbal.pdf >=20 > The referenced link won't load for me, so I'm really a little puzzled > at what you're trying to do. >=20 > Is the "image" that you're trying to get of in-band or separate from > the desired carrier? If it is separate, i.e., at a different > frequency, then it is simply a filtering issue to get rid of it and it > probably doesn't have much if anything to do with I-Q imbalance. >=20 > There are different types of IQ imbalance, specifically gain and phase > balance. You can handle each differently, and if you just want to > compensate for distortion in a single tuner (e.g., a lab setup), you > can do this by sending a sine wave at a slight offset frequency into > the tuner. If it is an oval or an ellipse, you can change the > relative I and Q gains if the distortion is on-axis, or slightly > adjust their relative phase (i.e., sampling instance) if the > distortion is off-axis.=20 >=20 > You don't need to do this real-time to calibrate out imbalance due to > component or manufacturing variance. It used to be a normal > production test procedure to do this on modems before they left the > factory floor...back when separate components were used to tuning, > filtering, sampling, etc. >=20 > So you might want to give a little more info on what you're really > trying to do.
From the reference provided it looks like the OP wants to correct for I/Q g= ain and phase imbalances associated with a direct-conversion receiver. The= se imbalances manifest as mirror image artifacts in the spectrum and are of= ten quantified in terms of sideband suppression. I think OP's 30dBc is the= measured SBS due to imbalance in his system. Agree each can be calibrated = out by injecting offset tones.
Hi,

On 2016-07-15 3:14, lito844@gmail.com wrote:
> [...] > > For starters it looks like the line in your code which computes ycorr does not follow your reference. > > You have: > ycorr = real(yrx)*A + 1i*(real(yrx)*C + imag(yrx)*C); > > But shouldn't it be: > ycorr = real(yrx)*A + 1i*(real(yrx)*C + imag(yrx)*D);
You are right, unfortunately this was only a copy & paste error from one screen to the other :-( My actual code was correct. Peter
On 2016-07-15 9:38, Eric Jacobsen wrote:
> On Thu, 14 Jul 2016 19:39:29 -0700, Peter Mairhofer <63832452@gmx.net> > wrote: > >> Hi, >> >> Does anyone have some code for I/Q mismatch calibration/compensation for >> a direct conversion receiver which I may use? >> >> So far I used a spectrum analyzer as capturing device which can do I/Q >> calibration automatically ... but now I use an RF board and I have an >> image at -30dBc ... and NMSE=-30 dB only. >> >> I was told I should just filter out the image but this makes it even >> worse. I don't think it makes sense because isn't also crap from the >> image on top of the wanted signal? >> >> Then I followed [1]. But since I just want to understand if the error is >> indeed caused by I/Q mismatch, I don't want to bother implementing an >> algorithm but just use Eq (13) while sweeping over possible values of >> alpha and phi: >> >> for k1=1:length(alphas) >> for k2=1:length(phis) >> alpha = alphas(k1); >> phi = phis(k2); >> A = alpha^-1; >> C = -sin(phi)/(alpha*cos(phi)); >> D = 1/cos(phi); >> ycorr = real(yrx)*A + 1i*(real(yrx)*C + imag(yrx)*C); >> >> % in order to check for NMSE, need to time align >> ycorr = ycorr/std(ycorr)*std(x); >> [~,ycorr] = fitSignal_120825(x, ycorr); >> NMSE(k1,k2) = 20*log10(norm(ycorr-x)/norm(x)); >> end >> end >> >> ... but the NMSE is stuck at -30dB with alpha~1 and phi~0. >> >> Maybe doing something wrong. >> >> I wonder that I could not find a single sample code in google or matlab >> file exchange ... >> >> Thank you! >> >> Peter >> >> >> [1] http://www.faculty.ece.vt.edu/swe/argus/iqbal.pdf > > The referenced link won't load for me, so I'm really a little puzzled > at what you're trying to do.
Indeed? Strange, link works flawlessly for me. Maybe this one? https://www.dropbox.com/s/7wxwwfbpsu67avv/iqbal.pdf?dl=0 In any case, maybe I should provide some actual data: https://www.dropbox.com/s/1l0tn3xa6kr34dd/IQ.zip?dl=0 This contains a mat file with tx and rx and the spectra look like: https://snag.gy/8X7pnh.jpg The transmitted data at RF if a random 20 MHz bandwidth signal centered at 1.84 GHz. The signal is then downconverted with an LO of 1.84GHz-122.88MHz, hence the spectra are shifted. Both sampling rates are 491.52MHz. As indicated above, the downconversion DAC uses an IF of 122.88 MHz but it is still a direct conversion receiver and IF downconversion is done in digital domain. Hence the rx signal can be shifted appropriately: rx = rx .* exp(-2i*pi/491.52*122.88*(0:length(rx)-1)); Clearly both signals are not yet time aligned either. As can be seen from the spectrum, the image (I guess due to I/Q mismatch) is about -30dBc lower. I want to correct for this mismatch and obtain a signal that is as close to tx as possible.
> Is the "image" that you're trying to get of in-band or separate from > the desired carrier? If it is separate, i.e., at a different > frequency, then it is simply a filtering issue to get rid of it and it > probably doesn't have much if anything to do with I-Q imbalance.
This is what I mentioned with "I was told I should just filter out the image [...]": I am not sure about it. Looking at the spectra again, just filtering out the second red band (the image) does not help AT ALL and there is significant error in band too. I think that I/Q mismatch not only generates the image but also adds error on top of the actual signal band.
> There are different types of IQ imbalance, specifically gain and phase > balance. You can handle each differently, and if you just want to > compensate for distortion in a single tuner (e.g., a lab setup), you > can do this by sending a sine wave at a slight offset frequency into > the tuner. If it is an oval or an ellipse, you can change the > relative I and Q gains if the distortion is on-axis, or slightly > adjust their relative phase (i.e., sampling instance) if the > distortion is off-axis. > [...]
I think I tired exactly this using the code snippet I provided without any good result. (instead of sending a sine wave I just sweep over all possible amplitude/phase mismatch values) I can't touch anything on the receiver though, I need to apply the correction to the I/Q baseband samples. Am I doing this the right way?
> So you might want to give a little more info on what you're really > trying to do.
See everything above, I hope this is more clear. Thanks! Peter
On 2016-07-15 10:08, lito844@gmail.com wrote:
> [...] > From the reference provided it looks like the OP wants to correct for > I/Q gain and phase imbalances associated with a direct-conversion > receiver. These imbalances manifest as mirror image artifacts in the > spectrum and are often quantified in terms of sideband suppression. > I think OP's 30dBc is the measured SBS due to imbalance in his > system.
Yes, this is all true (as far as I understand it). I hope my last posting fills all the details. Peter
On 15.7.16 20:50, Peter Mairhofer wrote:
> On 2016-07-15 9:38, Eric Jacobsen wrote: >> On Thu, 14 Jul 2016 19:39:29 -0700, Peter Mairhofer <63832452@gmx.net> >> wrote: >> >>> Hi, >>> >>> Does anyone have some code for I/Q mismatch calibration/compensation for >>> a direct conversion receiver which I may use? >>> >>> So far I used a spectrum analyzer as capturing device which can do I/Q >>> calibration automatically ... but now I use an RF board and I have an >>> image at -30dBc ... and NMSE=-30 dB only. >>> >>> I was told I should just filter out the image but this makes it even >>> worse. I don't think it makes sense because isn't also crap from the >>> image on top of the wanted signal? >>> >>> Then I followed [1]. But since I just want to understand if the error is >>> indeed caused by I/Q mismatch, I don't want to bother implementing an >>> algorithm but just use Eq (13) while sweeping over possible values of >>> alpha and phi: >>> >>> for k1=1:length(alphas) >>> for k2=1:length(phis) >>> alpha = alphas(k1); >>> phi = phis(k2); >>> A = alpha^-1; >>> C = -sin(phi)/(alpha*cos(phi)); >>> D = 1/cos(phi); >>> ycorr = real(yrx)*A + 1i*(real(yrx)*C + imag(yrx)*C); >>> >>> % in order to check for NMSE, need to time align >>> ycorr = ycorr/std(ycorr)*std(x); >>> [~,ycorr] = fitSignal_120825(x, ycorr); >>> NMSE(k1,k2) = 20*log10(norm(ycorr-x)/norm(x)); >>> end >>> end >>> >>> ... but the NMSE is stuck at -30dB with alpha~1 and phi~0. >>> >>> Maybe doing something wrong. >>> >>> I wonder that I could not find a single sample code in google or matlab >>> file exchange ... >>> >>> Thank you! >>> >>> Peter >>> >>> >>> [1] http://www.faculty.ece.vt.edu/swe/argus/iqbal.pdf >> >> The referenced link won't load for me, so I'm really a little puzzled >> at what you're trying to do. > > Indeed? Strange, link works flawlessly for me. > > Maybe this one? > > https://www.dropbox.com/s/7wxwwfbpsu67avv/iqbal.pdf?dl=0 > > In any case, maybe I should provide some actual data: > > https://www.dropbox.com/s/1l0tn3xa6kr34dd/IQ.zip?dl=0 > > This contains a mat file with tx and rx and the spectra look like: > > https://snag.gy/8X7pnh.jpg > > The transmitted data at RF if a random 20 MHz bandwidth signal centered > at 1.84 GHz. > > The signal is then downconverted with an LO of 1.84GHz-122.88MHz, hence > the spectra are shifted. > > Both sampling rates are 491.52MHz. As indicated above, the > downconversion DAC uses an IF of 122.88 MHz but it is still a direct > conversion receiver and IF downconversion is done in digital domain. > > Hence the rx signal can be shifted appropriately: > > rx = rx .* exp(-2i*pi/491.52*122.88*(0:length(rx)-1)); > > Clearly both signals are not yet time aligned either. > > As can be seen from the spectrum, the image (I guess due to I/Q > mismatch) is about -30dBc lower. > > I want to correct for this mismatch and obtain a signal that is as close > to tx as possible. > >> Is the "image" that you're trying to get of in-band or separate from >> the desired carrier? If it is separate, i.e., at a different >> frequency, then it is simply a filtering issue to get rid of it and it >> probably doesn't have much if anything to do with I-Q imbalance. > > This is what I mentioned with "I was told I should just filter out the > image [...]": I am not sure about it. > > Looking at the spectra again, just filtering out the second red band > (the image) does not help AT ALL and there is significant error in band > too. I think that I/Q mismatch not only generates the image but also > adds error on top of the actual signal band. > >> There are different types of IQ imbalance, specifically gain and phase >> balance. You can handle each differently, and if you just want to >> compensate for distortion in a single tuner (e.g., a lab setup), you >> can do this by sending a sine wave at a slight offset frequency into >> the tuner. If it is an oval or an ellipse, you can change the >> relative I and Q gains if the distortion is on-axis, or slightly >> adjust their relative phase (i.e., sampling instance) if the >> distortion is off-axis. >> [...] > > I think I tired exactly this using the code snippet I provided without > any good result. (instead of sending a sine wave I just sweep over all > possible amplitude/phase mismatch values) > > I can't touch anything on the receiver though, I need to apply the > correction to the I/Q baseband samples. Am I doing this the right way? > >> So you might want to give a little more info on what you're really >> trying to do. > > See everything above, I hope this is more clear. > > Thanks! > Peter
You can compensate small linear front end amplitude and phase imbalances in the baseband. You can adjust small phase errors by injecting a small amount of I signal (+ or -) into the Q path (or the other way round). You have to adjust the amplitude imbalances, as well. If the front end is in a consistent way imbalanced in its passband, this should do it. At the -30dB level you have to alternately tweak tha amplitude and phase balances. -- -TV
On Fri, 15 Jul 2016 10:50:35 -0700, Peter Mairhofer <63832452@gmx.net>
wrote:

>On 2016-07-15 9:38, Eric Jacobsen wrote: >> On Thu, 14 Jul 2016 19:39:29 -0700, Peter Mairhofer <63832452@gmx.net> >> wrote: >> >>> Hi, >>> >>> Does anyone have some code for I/Q mismatch calibration/compensation for >>> a direct conversion receiver which I may use? >>> >>> So far I used a spectrum analyzer as capturing device which can do I/Q >>> calibration automatically ... but now I use an RF board and I have an >>> image at -30dBc ... and NMSE=-30 dB only. >>> >>> I was told I should just filter out the image but this makes it even >>> worse. I don't think it makes sense because isn't also crap from the >>> image on top of the wanted signal? >>> >>> Then I followed [1]. But since I just want to understand if the error is >>> indeed caused by I/Q mismatch, I don't want to bother implementing an >>> algorithm but just use Eq (13) while sweeping over possible values of >>> alpha and phi: >>> >>> for k1=1:length(alphas) >>> for k2=1:length(phis) >>> alpha = alphas(k1); >>> phi = phis(k2); >>> A = alpha^-1; >>> C = -sin(phi)/(alpha*cos(phi)); >>> D = 1/cos(phi); >>> ycorr = real(yrx)*A + 1i*(real(yrx)*C + imag(yrx)*C); >>> >>> % in order to check for NMSE, need to time align >>> ycorr = ycorr/std(ycorr)*std(x); >>> [~,ycorr] = fitSignal_120825(x, ycorr); >>> NMSE(k1,k2) = 20*log10(norm(ycorr-x)/norm(x)); >>> end >>> end >>> >>> ... but the NMSE is stuck at -30dB with alpha~1 and phi~0. >>> >>> Maybe doing something wrong. >>> >>> I wonder that I could not find a single sample code in google or matlab >>> file exchange ... >>> >>> Thank you! >>> >>> Peter >>> >>> >>> [1] http://www.faculty.ece.vt.edu/swe/argus/iqbal.pdf >> >> The referenced link won't load for me, so I'm really a little puzzled >> at what you're trying to do. > >Indeed? Strange, link works flawlessly for me. > >Maybe this one? > >https://www.dropbox.com/s/7wxwwfbpsu67avv/iqbal.pdf?dl=0
That worked. That's just showing the math behind using a tone to create the correction matrix for a one-time calibration.
>In any case, maybe I should provide some actual data: > >https://www.dropbox.com/s/1l0tn3xa6kr34dd/IQ.zip?dl=0 > >This contains a mat file with tx and rx and the spectra look like: > >https://snag.gy/8X7pnh.jpg > >The transmitted data at RF if a random 20 MHz bandwidth signal centered >at 1.84 GHz. > >The signal is then downconverted with an LO of 1.84GHz-122.88MHz, hence >the spectra are shifted. > >Both sampling rates are 491.52MHz. As indicated above, the >downconversion DAC uses an IF of 122.88 MHz but it is still a direct >conversion receiver and IF downconversion is done in digital domain. > >Hence the rx signal can be shifted appropriately: > >rx = rx .* exp(-2i*pi/491.52*122.88*(0:length(rx)-1)); > >Clearly both signals are not yet time aligned either. > >As can be seen from the spectrum, the image (I guess due to I/Q >mismatch) is about -30dBc lower.
You guess due to IQ mismatch or you know? Is this really just a simulation where the simulated Tx output is fed into the Rx? If so, there's no reason to believe there's a mismatch unless there is specifically one created somewhere in the simulation. Numeric simulations won't experience imbalance unless it is created somewhere in the simulation. There are other reasone why an image may appear, aliasing being one of them.
>I want to correct for this mismatch and obtain a signal that is as close >to tx as possible. > >> Is the "image" that you're trying to get of in-band or separate from >> the desired carrier? If it is separate, i.e., at a different >> frequency, then it is simply a filtering issue to get rid of it and it >> probably doesn't have much if anything to do with I-Q imbalance. > >This is what I mentioned with "I was told I should just filter out the >image [...]": I am not sure about it.
It depends on why it is there. Who told you to just filter it out? Is this a school project or a work project?
>Looking at the spectra again, just filtering out the second red band >(the image) does not help AT ALL and there is significant error in band >too. I think that I/Q mismatch not only generates the image but also >adds error on top of the actual signal band.
Or the added filter created some unintended distortion.
>> There are different types of IQ imbalance, specifically gain and phase >> balance. You can handle each differently, and if you just want to >> compensate for distortion in a single tuner (e.g., a lab setup), you >> can do this by sending a sine wave at a slight offset frequency into >> the tuner. If it is an oval or an ellipse, you can change the >> relative I and Q gains if the distortion is on-axis, or slightly >> adjust their relative phase (i.e., sampling instance) if the >> distortion is off-axis. >> [...] > >I think I tired exactly this using the code snippet I provided without >any good result. (instead of sending a sine wave I just sweep over all >possible amplitude/phase mismatch values)
Put a constant-frequency tone into the receiver near the carrier frequency and make an I-Q plot of what comes out. If it is a circle, then there is no IQ imbalance. If it is an oval or an ellipse, then there is a correctable imbalance.
>I can't touch anything on the receiver though, I need to apply the >correction to the I/Q baseband samples. Am I doing this the right way?
I'm still not sure what you're doing.
>> So you might want to give a little more info on what you're really >> trying to do. > >See everything above, I hope this is more clear. > >Thanks! >Peter >
Peter Mairhofer  <63832452@gmx.net> wrote:

>>> [1] http://www.faculty.ece.vt.edu/swe/argus/iqbal.pdf
>In any case, maybe I should provide some actual data: > >https://www.dropbox.com/s/1l0tn3xa6kr34dd/IQ.zip?dl=0
The above link discusses the case of I/Q mismatch correction for a single-tone calibration signal, not actual data. So your actual data is irrelevant with respect to this particular method. Steve