高通滤波器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 的值。
我正在研究 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 的值。