# Documentation

### This is machine translation

Translated by
Mouseover text to see original. Click the button below to return to the English verison of the page.

# iqimbal2coef

Convert I/Q imbalance to compensator coefficient

## Syntax

C = iqimbal2coef(A,P)

## Description

example

C = iqimbal2coef(A,P) converts an I/Q amplitude and phase imbalance to its equivalent compensator coefficient.

## Examples

collapse all

Generate coefficients for the I/Q imbalance compensator System object™ using iqimbal2coef. The compensator corrects for an I/Q imbalance using the generated coefficients.

Create a QAM modulator and a raised cosine transmit filter to generate a 64-QAM signal.

hMod = comm.RectangularQAMModulator('ModulationOrder',64);
hTxFilter = comm.RaisedCosineTransmitFilter;

Modulate and filter random 64-ary symbols.

data = randi([0 63],100000,1);
dataMod = step(hMod,data);
txSig = step(hTxFilter,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 by creating and applying a comm.IQImbalanceCompensator object. Set the compensator such that the complex coefficients are made available as an output argument.

hIQComp = comm.IQImbalanceCompensator('CoefficientOutputPort',true);
[compSig,coef] = step(hIQComp,rxSig);

Compare the final compensator coefficient to the coefficient generated by the iqimbal2coef function. Observe that there is good argreement.

idealcoef = iqimbal2coef(ampImb,phImb);
[coef(end); idealcoef]
ans =
-0.1137 + 0.1296i
-0.1126 + 0.1334i

## Input Arguments

collapse all

Amplitude imbalance in dB, specified as a real-valued row or column vector.

Example: 3

Example: [0; 5]

Data Types: single | double

Phase imbalance in degrees, specified as a real-valued row or column vector.

Example: 10

Example: [15; 45]

Data Types: single | double

## Output Arguments

collapse all

Coefficient that perfectly compensates for the I/Q imbalance, returned as a complex-valued vector having the same dimensions as A and P.

collapse all

### I/Q Imbalance Compensation

The function iqimbal2coef is a supporting function for the comm.IQImbalanceCompensator System object™.

Define S and X as 2-by-1 vectors representing the I and Q components of the ideal and I/Q imbalanced signals, respectively.

$X=K\cdot S$

where K is a 2-by-2 matrix whose values are determined by the amplitude imbalance, A, and phase imbalance, P. A is expressed in dB and P is expressed in degrees.

The imbalance can be expressed as:

$\begin{array}{l}{I}_{gain}={10}^{0.5A/20}\\ {Q}_{gain}={10}^{-0.5A/20}\\ {\theta }_{i}=-\left(\frac{P}{2}\right)\left(\frac{\pi }{180}\right)\\ {\theta }_{q}=\frac{\pi }{2}+\left(\frac{P}{2}\right)\left(\frac{\pi }{180}\right)\end{array}$

Then K has the form:

$K=\left[\begin{array}{cc}{I}_{gain}\mathrm{cos}\left({\theta }_{i}\right)& {Q}_{gain}\mathrm{cos}\left({\theta }_{q}\right)\\ {I}_{gain}\mathrm{sin}\left({\theta }_{i}\right)& {Q}_{gain}\mathrm{sin}\left({\theta }_{q}\right)\end{array}\right]$

The vector Y is defined as the I/Q imbalance compensator output.

$Y=R\cdot X$

For the compensator to perfectly remove the I/Q imbalance, R must be the matrix inversion of K, namely:

$R={K}^{-1}$

Using complex notation, the vector Y can be rewritten as:

$\begin{array}{c}y={w}_{1}x+{w}_{2}\mathrm{conj}\left(x\right)\\ ={w}_{1}\left(x+\left({w}_{2}}{{w}_{1}}\right)\mathrm{conj}\left(x\right)\right)\end{array}$

where,

$\begin{array}{l}\mathrm{Re}\left\{{w}_{1}\right\}=\left({R}_{11}+{R}_{22}\right)/2\\ \mathrm{Im}\left\{{w}_{1}\right\}=\left({R}_{21}-{R}_{12}\right)/2\\ \mathrm{Re}\left\{{w}_{2}\right\}=\left({R}_{11}-{R}_{22}\right)/2\\ \mathrm{Im}\left\{{w}_{2}\right\}=\left({R}_{21}+{R}_{12}\right)/2\end{array}$

The output of the function is w2/w1. To exactly obtain the original signal, the compensator output needs to be scaled and rotated by the complex number w1.

### Note

There are cases for which the output of iqimbal2coef is unreliable.

• If the phase imbalance is ±90°, the in-phase and quadrature components will become co-linear; consequently, the I/Q imbalance cannot be compensated.

• If the amplitude imbalance is 0 dB and the phase imbalance is 180°, w1 = 0 and w2 = 1i; therefore, the compensator takes the form of y = 1i*conj(x).