1

だから私はMatlabで簡単なスクリプトを書いて、私のためにいくつかの視覚化を行いました-

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');

私が疑問に思っていたのは、特定の dB 範囲のみを表示するように specgram() 出力を変更するにはどうすればよいですか? 現在、0 から 40 dB の範囲に不要なノイズがたくさん表示されていますが、0 から -50 dB だけを見たいのです (残念ながら、私は初心者なので、例の写真を投稿できません)。

4

1 に答える 1

1

とてもクールです、みんなありがとう。40 dB 以上の信号をフィルタリングするためにこれを書きましたが、うまくいくようです-

[y,fs] = wavread('matrecord.wav'); 
centerval = mean(y); 
gdb = 20*log10(y/centerval);
ogv = (gdb > 40); 
x = y;
x(ogv) = 0; 

これで specgram() を実行すると、うまくいくようです。

于 2012-01-30T18:48:20.860 に答える