Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

BSPK 信号のイコライズ

最小平均二乗 (LMS) アルゴリズムをもつ線形イコライザーを使用して BPSK 信号をイコライズします。

ランダムなバイナリ データを生成し、BPSK 変調を適用します。

data = randi([0 1],1000,1);
modData = pskmod(data,2);

変調した信号に 2 タップの静的フェージングを適用します。

rxSig = conv(modData,[0.5 0.05]);

0.06 のステップ サイズで LMS 適応アルゴリズム オブジェクトを作成します。

alg = lms(0.06);
Warning: LMS will be removed in a future release. Use comm.LinearEqualizer or comm.DecisionFeedbackEqualizer instead. See <a href="matlab:helpview(fullfile(docroot, 'toolbox','comm', 'comm.map'), 'REPLACE_udd_equalizer')">Communications Toolbox Release Notes</a> for more information.

先に作成したアルゴリズム オブジェクトを使用して、8 個のタップをもつ線形イコライザー オブジェクトを作成します。リファレンス タップ インデックスを 4 に設定します。

eqlms = lineareq(8,alg);
Warning: LINEAREQ will be removed in a future release. Use comm.LinearEqualizer instead. See <a href="matlab:helpview(fullfile(docroot, 'toolbox','comm', 'comm.map'), 'REPLACE_udd_equalizer')">Communications Toolbox Release Notes</a> for more information.
eqlms.RefTap = 4;

最初の 200 データ ビットをトレーニング シーケンスとして使用しながら、受信信号 rxSig をイコライズします。

trSeq = data(1:200);
[eqSig,~,e] = equalize(eqlms,rxSig,trSeq);
Warning: EQUALIZE will be removed in a future release. Use comm.LinearEqualizer or comm.DecisionFeedbackEqualizer instead. See <a href="matlab:helpview(fullfile(docroot, 'toolbox','comm', 'comm.map'), 'REPLACE_udd_equalizer')">Communications Toolbox Release Notes</a> for more information.

受信した (イコライズされていない) 信号のパワーをフィルター処理してプロットします。信号の振幅はチャネルによって減衰しています。

rxSigPwr = filter(0.1*ones(10,1),1,abs(rxSig)).^2;
plot(rxSigPwr)
title('Received Signal')
xlabel('Bits')
ylabel('Power (W)')

イコライズした信号をプロットします。信号は目的とした 1 W のパワー レベルに達しています。

eqSigPwr = filter(0.1*ones(10,1),1,abs(eqSig)).^2;
plot(eqSigPwr)
title('Equalized Signal')
xlabel('Bits')
ylabel('Power (W)')

誤差推定 e の振幅をプロットします。誤差は 400 ビット後にほぼゼロになるまで減少します。

plot(abs(e))
title('Error Estimate')
xlabel('Bits')
ylabel('Amplitude (V)')