高通滤波器matlab

时间:2015-05-05 06:25:12

标签: matlab signal-processing fft

我正致力于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));

1 个答案:

答案 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的值。