MATLAB で学ぶ信号処理 チャープ信号を畳み込むとどうなる?

はじめに

ドラゴンクエストのテリーのワンダーランドでは、
スライム+5♂ と スライム+5♀
を配合するとキングスライムができます。

これと同様に、チャープ信号♂とチャープ信号♀を畳み込み積分するとインパルス波形になります。

 

「えっ??なんでー?」って疑問に思った方はおそらく、チャープ信号(サインスイープ信号やTSPとも呼ぶ)というものを理解していませんし、逆FFTや畳み込み積分についても理解できていません。

本記事では、チャープ信号の理解が不足していそうな点だけざっくりと説明します。

チャープ信号とチャープ信号の畳み込み

MATLABによる検証

下図のようにチャープ信号(スイープ①とスイープ②)を畳み込み積分すると、インパルス応答になっていることがわかりますね。

MATLABのコード

clear all;close all

fs=1024*8*4;
t=0:1/fs:1;
% t=t(1:fs);

y1 = chirp(t,10,1,10000,'linear', -90);
y2=y1(end:-1:1);
figure
subplot(211)
plot(t,y1)
subplot(212)
plot(t,y2)


sig=conv(y1,y2);

figure
plot(sig)


figure
subplot(141)
spectrogram(y1,1024,1024/2,1024,fs)
view([90 -90])
caxis([-70 -20])
title('スイープ①')

subplot(142)
spectrogram(y2,1024,1024/2,1024,fs)
view([90 -90])
caxis([-70 -20])
title('スイープ②')

subplot(1,4,3:4)
spectrogram(sig,1024,1024/2,1024,fs)
view([90 -90])
caxis([-30 10])
title('①②の畳み込み積分')

 

チャープ信号の考え方

みなさんチャープ信号はご存じかと思います。下図のような、時々刻々と周波数が変化する正弦波のような信号ですね。

この信号をFFTしてみます。
ただ、上記信号の1s付近の拡大図を先に紹介しておきます。

上図に示すように1s付近がきれいに0になってませんね。。。。なので、FFTすると変なノイズがのってしまいますが、ご了承ください。

FFTの結果が下記です。

今回のチャープ信号はfs=4096で、下記のように作成しています。

y1 = chirp(t,10,1,1000,'linear', -90);
Y1=fft(y1,fs);

従って、周波数成分は10~1000Hzしか存在しません。

 

FFTの結果からわかることは、10~1000Hzで振幅がフラットであることです。
もう少しわかりやすく説明するために、200Hzまでの拡大図を示します。

振幅が(ほぼ)フラットで、位相が線形的に遅れていることがわかりますね。そのため、インパルス信号に位相成分を持たせて、時間軸上に引き延ばした信号がチャープ信号という考え方ができますね。

 

今日はここらへんで、やめておきます。
後日もう少しディープな世界の話をしたいと思います。

 

コメント