我正致力于wav文件的频谱分析。我已经绘制了整个频率的频谱,但是我如何只绘制文件的高频? 这是代码:
[a,fs] = wavread('ori1.wav');
ydft = fft(a);
ydft = ydft(1:length(a)/2+1);
freq = 0:fs/length(a):fs/2;
plot(freq,abs(ydft));
答案 0 :(得分:0)
您可以使用逻辑索引:
a = randn(1,1000);
fs=10;
ydft = fft(a);
ydft = ydft(1:length(a)/2+1);
freq = 0:fs/length(a):fs/2;
lowestFrequencyToPlot = 2;
idxHigherFrequencies = freq >= lowestFrequencyToPlot;
plot(freq(idxHigherFrequencies),abs(ydft(idxHigherFrequencies)));
只能使用end
绘制最高频率。
编辑:数组freq
将包含以下频率:[1,2,3,4,5]。
如果将这样的数组与值(比如3 - (freq > 3
)进行比较,则返回一个向量,其中0表示条件为假,1表示条件为真。这将是[0,0,0,1,1](4和5更大3,其他更小)。
然后,该向量可用于逻辑索引。 freq(freq>3)
将返回大于3的频率:[4,5]。
ydft(freq>3)
将返回相应频率大于3的值。