高通滤波器matlab

High Pass filter matlab

我正在研究 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));

您可以使用逻辑索引:

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)进行比较,则向量会被 return 编辑,条件为假时为 0,条件为真时为 1。这将是 [0,0,0,1,1](4 和 5 是更大的 3,其他的更小)。 然后可以将该向量用于逻辑索引。 freq(freq>3) 将 return 大于 3 的频率:[4,5]。 ydft(freq>3) 将 return 相应频率大于 3 的值。