iqcoef2imbal
Convert compensator coefficient to amplitude and phase imbalance
Syntax
Description
Examples
Use iqcoef2imbal to estimate the amplitude and phase imbalance for a given complex coefficient. The coefficients are an output from the step function of the IQImbalanceCompensator.
Create a raised cosine transmit filter to generate a 64-QAM signal.
M = 64; txFilt = comm.RaisedCosineTransmitFilter;
Modulate and filter random 64-ary symbols.
data = randi([0 M-1],100000,1); dataMod = qammod(data,M); txSig = step(txFilt,dataMod);
Specify amplitude and phase imbalance.
ampImb = 2; % dB phImb = 15; % degrees
Apply the specified I/Q imbalance.
gainI = 10.^(0.5*ampImb/20); gainQ = 10.^(-0.5*ampImb/20); imbI = real(txSig)*gainI*exp(-0.5i*phImb*pi/180); imbQ = imag(txSig)*gainQ*exp(1i*(pi/2 + 0.5*phImb*pi/180)); rxSig = imbI + imbQ;
Normalize the power of the received signal
rxSig = rxSig/std(rxSig);
Remove the I/Q imbalance using the comm.IQImbalanceCompensator System object™. Set the compensator object such that the complex coefficients are made available as an output argument.
hIQComp = comm.IQImbalanceCompensator('CoefficientOutputPort',true);
[compSig,coef] = step(hIQComp,rxSig);Estimate the imbalance from the last value of the compensator coefficient.
[ampImbEst,phImbEst] = iqcoef2imbal(coef(end));
Compare the estimated imbalance values with the specified ones. Notice that there is good agreement.
[ampImb phImb; ampImbEst phImbEst]
ans = 2×2
2.0000 15.0000
2.0178 14.5740
Input Arguments
Coefficient used to compensate for an I/Q imbalance, specified as a complex-valued vector.
Example: 0.4+0.6i
Example: [0.1+0.2i;
0.3+0.5i]
Data Types: single | double
Output Arguments
More About
The function iqcoef2imbal is
a supporting function for the comm.IQImbalanceCompensator System object™.
Given a scaling and rotation factor, G, compensator coefficient, C, and received signal, x, the compensated signal, y, has the form
In matrix form, this can be rewritten as
where X is a 2-by-1 vector representing the imbalanced signal [XI, XQ] and Y is a 2-by-1 vector representing the compensator output [YI, YQ].
The matrix R is expressed as
For the compensator to perfectly remove the I/Q imbalance, R = K-1 because , where K is a 2-by-2 matrix whose values are determined by the amplitude and phase imbalance and S is the ideal signal. Define a matrix M with the form
Both M and M-1 can be thought of as scaling and rotation matrices that correspond to the factor G. Because K = R-1, the product M-1 R K M is the identity matrix, where M-1 R represents the compensator output and K M represents the I/Q imbalance. The coefficient α is chosen such that
where L is a constant. From this form, we can obtain Igain, Qgain, θI, and θQ. For a given phase imbalance, ΦImb, the in-phase and quadrature angles can be expressed as
Hence, cos(θQ) = sin(θI) and sin(θQ) = cos(θI) so that
The I/Q imbalance can be expressed as
Therefore,
The equation can be written as a quadratic equation to solve for the variable α, that is D1α2 + D2α + D3 = 0, where
When |C| ≤ 1, the quadratic equation has the following solution:
Otherwise, when |C| > 1, the solution has the following form:
Finally, the amplitude imbalance, AImb, and the phase imbalance, ΦImb, are obtained.
Note
If C is real and |C| ≤ 1, the phase imbalance is 0 and the amplitude imbalance is 20log10((1–C)/(1+C))
If C is real and |C| > 1, the phase imbalance is 180° and the amplitude imbalance is 20log10((C+1)/(C−1)).
If C is imaginary, AImb = 0.
Extended Capabilities
C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.
Version History
Introduced in R2014b
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Sélectionner un site web
Choisissez un site web pour accéder au contenu traduit dans votre langue (lorsqu'il est disponible) et voir les événements et les offres locales. D’après votre position, nous vous recommandons de sélectionner la région suivante : .
Vous pouvez également sélectionner un site web dans la liste suivante :
Comment optimiser les performances du site
Pour optimiser les performances du site, sélectionnez la région Chine (en chinois ou en anglais). Les sites de MathWorks pour les autres pays ne sont pas optimisés pour les visites provenant de votre région.
Amériques
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)