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

我想知道的是 - 如何修改 specgram() 输出以仅显示特定的 dB 范围?现在它在 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 回答