FM波の周波数スペクトルを描く

(プログラム)

n=1024*64;
dt=0.0001;
t=0:dt:(n-1)*dt;
fc=100;
fs=20;
Ec=1;
mf=1;
y=Ec*sin(2*pi*fc*t+mf*sin(2*pi*fs*t));
#vs=sin(2*pi*fs*t);
#mplot(t,vs,t,y);
#input (“Enter key:”);
spectrum=fft(y,n);
df=1/dt/n;
i=1:n/32;
#data = [20*log(abs(spectrum(i)))];
data = abs(spectrum(i));
plot (df*i,data);
データ数.分解能をあげるために多くしている
計算する時間間隔.サンプリング時間である
0秒から(n-1)dt秒まで計算
搬送波周波数 100Hz
信号波周波数 20Hz
搬送波振幅 1V
変調指数 1
FM波の計算
FFTの計算
周波数分解能は,FFTするn個分のデータの時間の逆数=(サンプリング数×サンプリング時間)の逆数
つまり,1/(n*dt)=1/dt/n
出力する周波数範囲の設定.データ数が多いので,n/32だけ出力
結果は複素数なので,絶対値を取る
結果の表示.x軸は1目盛りがdfの周波数なので,df*iで表示

(応用)
(1) 変調指数を変えて,スペクトルの変化を見てみよう. → 大きさが変わる.
(2) 変調周波数を変えて,スペクトルの変化を見て見よう. → 間隔,大きさが変わる.

(注意)
周波数スペクトルは,本来搬送波を中心にして対称なはずであるが,計算誤差のため,非対称になっているので注意してみること.データ数を減らすと非対称がはっきりする.逆にデータ数を増やすと非対称が改善される.