Main Content

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

単側波帯振幅変調

この例では、ヒルベルト変換を使用して信号の単側波帯 (SSB) 振幅変調 (AM) を実行する方法を説明します。単側波帯 AM 信号の帯域幅は、通常の AM 信号の帯域幅より狭くなります。

関数 sinc を使用してシミュレートされた広帯域信号のサンプルを 512 個生成します。π/4 ラジアン/サンプルの帯域幅を指定します。

N = 512;
n = 0:N-1;

bw = 1/4;
x = sinc((n-N/2)*bw);

S/N 比が 20 dB となるホワイト ガウス ノイズを付加します。再現可能な結果が必要な場合は、乱数発生器をリセットします。関数 periodogram を使用して信号のパワー スペクトル密度 (PSD) を推定します。

rng default

SNR = 20;
noise = randn(size(x))*std(x)/db2mag(SNR);
x = x + noise;

periodogram(x)

Figure contains an axes object. The axes object with title Periodogram Power Spectral Density Estimate, xlabel Normalized Frequency ( times pi blank rad/sample), ylabel Power/frequency (dB/(rad/sample)) contains an object of type line.

搬送周波数 ωc=π/2 の余弦を使用して信号の振幅変調を行います。変調された信号のパワーが元の信号のパワーと等しくなるように 2 で乗算します。PSD を推定します。

wc = pi/2;

x1 = x.*cos(wc*n)*sqrt(2);

periodogram(x1)
legend('Modulated')

Figure contains an axes object. The axes object with title Periodogram Power Spectral Density Estimate, xlabel Normalized Frequency ( times pi blank rad/sample), ylabel Power/frequency (dB/(rad/sample)) contains an object of type line. This object represents Modulated.

SSB 振幅変調では信号の帯域幅が半減します。SSB 振幅変調を実行するには、最初に信号のヒルベルト変換を計算しなければなりません。続いて、同じ搬送周波数 ωc を持つ正弦を使用して、前と同様に信号の振幅変調を行い、それを前の信号に付加します。

関数 designfilt を使用してヒルベルト変換器を設計します。フィルター次数 64 と遷移幅 0.1 を指定します。信号をフィルター処理します。

Hhilbert = designfilt('hilbertfir','FilterOrder',64, ...
    'TransitionWidth',0.1);

xh = filter(Hhilbert,x);

関数 grpdelay を使用して、フィルターによって生じる遅延 gd を測定します。フィルター処理した信号の最初の gd 点を破棄し、末尾をゼロでパディングすることで遅延を補正します。結果を振幅変調して元の信号に付加します。PSD を比較します。

gd = mean(grpdelay(Hhilbert));
xh = xh(gd+1:end);
eh = zeros(size(x));
eh(1:length(xh)) = xh;

x2 = eh.*sin(wc*n)*sqrt(2);

y = x1+x2;

periodogram([x1;y]')
legend('Modulated','SSB')

Figure contains an axes object. The axes object with title Periodogram Power Spectral Density Estimate, xlabel Normalized Frequency ( times pi blank rad/sample), ylabel Power/frequency (dB/(rad/sample)) contains 2 objects of type line. These objects represent Modulated, SSB.

信号をダウンコンバートし、PSD を推定します。

ym = y.*cos(wc*n)*sqrt(2);

periodogram(ym)
legend('Downconverted')

Figure contains an axes object. The axes object with title Periodogram Power Spectral Density Estimate, xlabel Normalized Frequency ( times pi blank rad/sample), ylabel Power/frequency (dB/(rad/sample)) contains an object of type line. This object represents Downconverted.

変調された信号をローパス フィルター処理し、元の信号を復元します。カットオフ周波数 π/2 の 64 次 FIR ローパス フィルターを指定します。フィルターによって生じた遅延を補正します。

d = designfilt('lowpassfir','FilterOrder',64, ...
    'CutoffFrequency',0.5);
dem = filter(d,ym);

gd = mean(grpdelay(d));
dem = dem(gd+1:end);

dm = zeros(size(x));
dm(1:length(dem)) = dem;

フィルター処理された信号の PSD を推定し、元の信号の PSD と比較します。

periodogram([x;dm]')
legend('Original','Recovered')

Figure contains an axes object. The axes object with title Periodogram Power Spectral Density Estimate, xlabel Normalized Frequency ( times pi blank rad/sample), ylabel Power/frequency (dB/(rad/sample)) contains 2 objects of type line. These objects represent Original, Recovered.

関数 snr を使用して 2 つの信号の S/N 比を比較します。時間領域に 2 つの信号をプロットします。

snrOrig = snr(x,noise)
snrOrig = 20.0259
snrRecv = snr(dm,noise)
snrRecv = 20.1373
plot(n,[x;dm]')
legend('Original','Recovered')
axis tight

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent Original, Recovered.

参考文献

Buck, John R., Michael M. Daniel, and Andrew C. Singer. Computer Explorations in Signals and Systems Using MATLAB. 2nd Edition. Upper Saddle River, NJ: Prentice Hall, 2002.

参考

| |