このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
iqcoef2imbal
補償器係数の、振幅と位相の不均衡への変換
説明
例
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
詳細
関数 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 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.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- 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)