メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

iqcoef2imbal

補償器係数の、振幅と位相の不均衡への変換

説明

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

すべて折りたたむ

iqcoef2imbal を使用して、所定の複素数係数の振幅と位相の不均衡を推定します。係数は、IQImbalanceCompensator の関数 step からの出力です。

レイズド コサイン送信フィルターを作成して、64-QAM 信号を生成します。

M = 64;
txFilt = comm.RaisedCosineTransmitFilter;

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

data = randi([0 M-1],100000,1);
dataMod = qammod(data,M);
txSig = step(txFilt,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 System object™ を使用して、I/Q 不均衡を除去します。複素数係数を出力引数として使用できるように、補償器オブジェクトを設定します。

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

補償器係数の最後の値から、不均衡を推定します。

[ampImbEst,phImbEst] = iqcoef2imbal(coef(end));

推定した不均衡値を指定されたものと比較します。よく一致していることがわかります。

[ampImb phImb; ampImbEst phImbEst]
ans = 2×2

    2.0000   15.0000
    2.0178   14.5740

入力引数

すべて折りたたむ

I/Q 不均衡を補正するために使用される係数。複素数値のベクトルとして指定されます。

例: 0.4+0.6i

例: [0.1+0.2i; 0.3+0.5i]

データ型: single | double

出力引数

すべて折りたたむ

振幅の不均衡 (dB)。C と同じ次元の実数値ベクトルとして返されます。

位相の不均衡 (度)。C と同じ次元の実数値のベクトルとして返されます。

詳細

すべて折りたたむ

拡張機能

すべて展開する

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

バージョン履歴

R2014b で導入

参考

関数

オブジェクト