iqcoef2imbal
Convert compensator coefficient to amplitude and phase imbalance
Syntax
Description
Examples
Estimate I/Q Imbalance from Compensator Coefficient
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
C
— Compensator coefficient
complex-valued scalar or vector
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
I/Q Imbalance Compensation
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.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- 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)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)