Main Content

iqimbal2coef

I/Q 不均衡の補償器係数への変換

説明

C = iqimbal2coef(A,P) は、I/Q 振幅および位相の不均衡を同等の補償器係数に変換します。

すべて折りたたむ

iqimbal2coef を使用して、I/Q 不均衡補償器 System object™ の係数を生成します。補償器は生成された係数を使用して I/Q 不均衡を補正します。

レイズド コサイン送信フィルター System object を作成します。

txRCosFilt = comm.RaisedCosineTransmitFilter;

ランダム 64 値シンボルを変調してフィルター処理します。

M= 64;
data = randi([0 M-1],100000,1);
dataMod = qammod(data,M);
txSig = txRCosFilt(dataMod);

振幅と位相の不均衡を指定します。

ampImb = 2; % dB
phImb = 15; % degrees

指定された I/Q 不均衡を適用します。

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;

受信信号の強度を正規化します。

rxSig = rxSig/std(rxSig);

comm.IQImbalanceCompensator オブジェクトを作成して適用することにより、I/Q 不均衡を除去します。複素数係数を出力引数として使用できるように、補償器を設定します。

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

最終的な補償器係数を、関数 iqimbal2coef によって生成された係数と比較します。よく一致していることがわかります。

idealcoef = iqimbal2coef(ampImb,phImb);
[coef(end); idealcoef]
ans = 2×1 complex

  -0.1137 + 0.1296i
  -0.1126 + 0.1334i

入力引数

すべて折りたたむ

振幅の不均衡 (dB)。実数値の行または列ベクトルとして指定します。

例: 3

例: [0; 5]

データ型: double

位相の不均衡 (度)。実数値の行または列ベクトルとして指定します。

例: 10

例: [15; 45]

データ型: double

出力引数

すべて折りたたむ

I/Q 不均衡を完全に補正する係数。A および P と同じ次元の複素数値ベクトルとして返されます。

詳細

すべて折りたたむ

I/Q 不均衡の補正

関数 iqimbal2coefcomm.IQImbalanceCompensator System object™ のサポート関数です。

SX を、それぞれ理想の信号と I/Q 不均衡の信号の I 成分および Q 成分を表す 2 行 1 列のベクトルとして定義します。

X=KS

ここで、K は値が振幅の不均衡 A および位相の不均衡 P によって決定する 2 行 2 列の行列です。A は dB で表され、 P は度で表されます。

不均衡は次のように表すことができます。

Igain=100.5A/20Qgain=100.5A/20θi=(P2)(π180)θq=π2+(P2)(π180)

このとき、K は次の形になります。

K=[Igaincos(θi)Qgaincos(θq)Igainsin(θi)Qgainsin(θq)]

ベクトル Y は、I/Q 不均衡補償器出力として定義されます。

Y=RX

補償器が I/Q 不均衡を完全に除去するためには、RK の逆行列でなければなりません。すなわち、

R=K1

複素表記を使用すると、ベクトル Y は次のように書き直せます。

y=w1x+w2conj(x)=w1(x+(w2w1)conj(x))

ここで、

Re{w1}=(R11+R22)/2Im{w1}=(R21R12)/2Re{w2}=(R11R22)/2Im{w2}=(R21+R12)/2

関数の出力は w2/w1 です。元の信号を正確に取得するために、補償器の出力は複素数 w1 によってスケーリングおよび回転される必要があります。

メモ

iqimbal2coef の出力の信頼性が低い場合があります。

  • 位相の不均衡が ±90° の場合、同相成分および直交成分はともに線形です。したがって、I/Q 不均衡は補正できません。

  • 振幅の不均衡が 0 dB で位相の不均衡が 180° の場合、w1 = 0 かつ w2 = 1i であるため、補償器は y = 1i*conj(x) の形をとります。

拡張機能

C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。

バージョン履歴

R2014b で導入

参考

関数

オブジェクト