1
だから私はMATLABで迅速なスクリプトを書いたが、私が思っていた何ME-specgramが振幅フィルタリング - MATLAB R2008aの
function spectro(filename,maxFreq)
wavchunksizefix(filename);
[y,fs] = wavread(filename);
subplot(2,1,1);
plot(y);
ylim([0 1]);
title('Signal Amplitude');
subplot(2,1,2);
specgram(y,1024,fs);
ylim([0 maxFreq]);
cb = colorbar;
set(get(cb,'title'),'string','dB');
title('Original Signal Spectrogram');
のためにいくつかの可視化を行う(specgramがを変更しない方法this-である)だけを出力するには、show特定のdB範囲?今では、0〜40 dBの範囲で不必要なノイズがたくさん表示され、0〜-50 dBしか表示されません(残念ながら、私は新しいので、サンプル画像を投稿できません)。
yimはylimを使っていますが、zlimコマンドを試してみてください。それがあなたの望むことをしないなら、specgram(data = specgram(。。))からデータを抽出し、プロットする前に手動で閾値を設定してください。 – learnvst
Specgram()の出力データは一連の複素数です。彼らがなぜ複雑な数字なのか完全に理解していないので、まずそれを理解しなければならないでしょう。 – user1172075
スペクトログラムは各エポックの周波数ビンごとに振幅成分と位相成分を与えるので、値は複雑です。 spectrogramコマンドを使用してプロットすると、surf(20 * log10(abs(spectrogram_output)))を実行するのと同じことになります。 absコマンドは実数/複素数の値の対を大きさに変換し、対数項はそれをdbスケールに変換します。 – learnvst