iqimbal
入力信号への I/Q 不均衡の適用
説明
例
16-QAM への振幅の不均衡の適用
16-QAM 信号を生成します。散布図を表示します。
x = qammod(randi([0 15],1000,1),16);
h = scatterplot(x);
hold on
10 dB の振幅の不均衡を適用します。振幅の不均衡が正の場合、コンスタレーションが水平方向に広がります。
y = iqimbal(x,10);
scatterplot(y,1,0,'ro',h)
-10 dB の振幅の不均衡を適用します。振幅の不均衡が負の場合、コンスタレーションが垂直方向に広がります。
z = iqimbal(x,-10); scatterplot(z,1,0,'k*',h) hold off
16-QAM 信号への位相および振幅の不均衡の適用
2 つのチャネルをもつ 16-QAM 信号を生成します。
x = qammod(randi([0 15],1000,2),16);
3 dB の振幅の不均衡および 10 度の位相の不均衡を最初のチャネルに適用します。–5 dB の振幅の不均衡および –15 度の位相の不均衡を 2 番目のチャネルに適用します。
y = iqimbal(x,[3 -5],[10 -15]);
劣化した信号の両方のチャネルのコンスタレーション ダイアグラムをプロットします。
h = scatterplot(y(:,1),1,0,'b*'); hold on scatterplot(y(:,2),1,0,'ro',h) hold off
最初のチャネルは水平方向に広がり、2 番目のチャネルは垂直方向に広がっています。
QPSK への I/Q 不均衡および DC オフセットの適用
1 dB、5 度の I/Q 不均衡を QPSK 信号に適用します。次に、DC オフセットを適用します。スペクトル アナライザーを使用して、オフセットを可視化します。
QPSK シーケンスを生成します。
x = pskmod(randi([0 3],1e4,1),4,pi/4);
1 dB の振幅の不均衡および 5 度の位相の不均衡を QPSK 信号に適用します。0.5 + 0.3i の DC オフセットを適用します。
y = iqimbal(x,1,5); z = y + complex(0.5,0.3);
劣化のない信号と劣化のある信号のスペクトルをプロットします。
sa = spectrumAnalyzer( ... SampleRate=1000, ... ChannelNames=["Nonimpaired","Impaired"], ... YLimits=[-50 30]); sa(x,z)
対応する散布図を表示して、I/Q 不均衡と DC オフセットの影響を確認します。
cd = comm.ConstellationDiagram( ... NumInputPorts=2, ... ChannelNames=["Nonimpaired","Impaired"]); cd(x,z)
ノイズを含む 8-PSK 信号の I/Q 不均衡の補正
ランダム データを生成して 8-PSK 変調を適用します。
data = randi([0 7],2000,1); txSig = pskmod(data,8,pi/8);
AWGN チャネルを通して送信された信号を渡します。I/Q 不均衡を適用します。
noisySig = awgn(txSig,20); rxSig = iqimbal(noisySig,2,20);
最後の 1000 個のシンボルのみを表示する constellation diagram オブジェクトを作成します。劣化した信号のコンスタレーション ダイアグラムをプロットします。
cd = comm.ConstellationDiagram('ReferenceConstellation',pskmod(0:7,8,pi/8), ... 'SymbolsToDisplaySource','Property','SymbolsToDisplay',1000); cd(rxSig)
comm.IQImbalanceCompensator
オブジェクトを使用して、I/Q 不均衡を補正します。補正後に、信号のコンスタレーション ダイアグラムをプロットします。
iqComp = comm.IQImbalanceCompensator('StepSize',1e-3);
compSig = iqComp(rxSig);
cd(compSig)
補償器により I/Q 不均衡が除去されます。
入力引数
x
— 入力信号
列ベクトル | 行列
入力信号。列ベクトルまたは行列として指定します。この関数はマルチチャネル演算をサポートします。ここで、列数はチャネル数に対応します。
例: pskmod(randi([0 3],100,1),4,pi/4)
データ型: single
| double
複素数のサポート: あり
A
— 振幅の不均衡
実数スカラー | 行ベクトル
振幅の不均衡 (dB)。実数スカラーまたは行ベクトルとして指定します。
A
がスカラーの場合、関数は同じ振幅の不均衡を各チャネルに適用します。A
がベクトルの場合、各要素は、入力信号の対応する列 (チャネル) に適用された振幅の不均衡を指定します。A
の要素数はx
の列数と等しくなければなりません。
例: 3
例: [0 5]
データ型: single
| double
P
— 位相の不均衡
0
(既定値) | 実数スカラー | 行ベクトル
位相の不均衡 (度)。実数スカラーまたは行ベクトルとして指定します。
P
を省略した場合、ゼロ度の位相の不均衡が使用されます。P
がスカラーの場合、関数は同じ位相の不均衡を各チャネルに適用します。P
がベクトルの場合、各要素は、入力信号の対応する列 (チャネル) に適用された位相の不均衡を指定します。P
の要素数はx
の列数と等しくなければなりません。
例: 10
例: [2.5 7]
データ型: single
| double
出力引数
アルゴリズム
関数 iqimbal
は、入力信号に I/Q 振幅および位相の不均衡を適用します。
振幅の不均衡 Ia を dB で指定すると、不均衡によって生じるゲイン g が次のように定義されます。
入力信号 x に I/Q 不均衡を適用すると、出力信号 y は次のようになります。
ここで、g は不均衡によるゲイン、Ip は位相の不均衡 (度) です。
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
バージョン履歴
R2016b で導入
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)