1
所以我已经写在Matlab快速脚本做一些可视化我 -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()输出,只显示一个具体的dB范围?现在它显示了0到40 dB范围内的一大堆不必要的噪声,我只想看到0到-50 dB(不幸的是,由于我是新手,我无法发布示例图片)。
哟已经使用ylim,请尝试zlim命令。如果这样做不能达到你想要的,在绘图之前从specgram(data = specgram(。。。))和手动提取数据 – learnvst
事实证明(直到现在我还没有真正检查过),来自Specgram()的输出数据是一系列复数。由于我不完全明白他们为什么是复数,我必须先弄清楚。 – user1172075
这些值非常复杂,因为频谱图为您提供了每个时期每个频点的振幅和相位分量。当您使用频谱图命令绘图时,它相当于做冲浪(20 * log10(abs(spectrogram_output)))。 abs命令将实数/复数值对转换为一个数值,而对数项将其转换为数据库比例。 – learnvst