iqcoef2imbal
補償器係数の、振幅と位相の不均衡への変換
説明
例
補償器からの I/Q 不均衡の推定
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
入力引数
C
— 補償器係数
複素数値スカラーまたはベクトル
I/Q 不均衡を補正するために使用される係数。複素数値のベクトルとして指定されます。
例: 0.4+0.6i
例: [0.1+0.2i; 0.3+0.5i]
データ型: single
| double
出力引数
詳細
I/Q 不均衡の補正
関数 iqcoef2imbal
は comm.IQImbalanceCompensator
System object™ のサポート関数です。
スケールと回転の係数 G、補償器係数 C および受信信号 x を与えると、補正された信号 y は次の形になります。
行列の形では次のように書き直すことができます。
ここで、X は不均衡な信号 [XI, XQ] を表す 2 行 1 列のベクトル、Y は補償器の出力 [YI, YQ] を表す 2 行 1 列のベクトルです。
行列 R は次のように表されます。
補償器が I/Q 不均衡を完全に除去するためには、 であるため、R = K-1 です。ここで、K は 2 行 2 列の行列で、その値は振幅と位相の不均衡により決まり、S は理想の信号です。次の形式の行列 M を定義します。
M と M-1 はいずれも係数 G に対応するスケール行列および回転行列と考えられます。K = R-1 であるため、積 M-1 R K M は単位行列で、M-1 R は補償器の出力を表し、K M は I/Q 不均衡を表します。係数 α は以下となるように選択されます。
ここで L は定数です。この形から、Igain、Qgain、θI および θQ を取得できます。所定の位相の不均衡 ΦImb に対して、同相および直交角度は次のように表されます。
したがって、 cos(θQ) = sin(θI) および sin(θQ) = cos(θI) であるため、次のようになります。
I/Q 不均衡は次のように表されます。
したがって次のようになります。
この方程式は、変数 α を求める 2 次方程式、すなわち D1α2 + D2α + D3 = 0 として記述できます。ここで、
|C| ≤ 1 の場合、この 2 次方程式は以下の解をもちます。
それ以外の場合、|C| > 1 であれば、解は次の形をとります。
最後に、振幅の不均衡 AImb と位相の不均衡 ΦImb が求められます。
メモ
C が実数で |C| ≤ 1 の場合、位相の不均衡は 0 で振幅の不均衡は 20log10((1–C)/(1+C)) です。
C が実数で |C| > 1 の場合、位相の不均衡は 180° で振幅の不均衡は 20log10((C+1)/(C−1)) です。
C が虚数の場合、AImb = 0 です。
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
バージョン履歴
R2014b で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
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)