如何使用带通滤波器

时间:2017-01-21 14:58:22

标签: matlab audio signal-processing sound-synthesis

我正在研究在MATLAB中合成雷声。 我已经产生了粉红噪声,现在我试图在30Hz上添加带通滤波器,但是我收到了错误:

The frequency specifications Fpass, Fstop must have increasing values.

这是我的代码:

dur=[0:1/Fs:time-1/Fs];
sz=length(dur);
g=randn(1, sz); %
Y=fft(g);

NumUniquePts = sz/2 + 1;
n = 1:NumUniquePts;
n = sqrt(n);
Y(1:NumUniquePts) = Y(1:NumUniquePts)./n;

Y(NumUniquePts+1:sz) = real(Y(sz/2:-1:2)) -1i*imag(Y(sz/2:-1:2));

y = ifft(Y);

y = real(y(1, 1:sz));

y = y - mean(y);
yrms = sqrt(mean(y.^2));
y = y/yrms;

d = fdesign.lowpass('Fp,Fst,Ap,Ast',30,10,0.5,50,48e4);
Hd1 = design(d,'equiripple');
Hd2 = design(d,'butter');

out = filter(Hd1,y);

也许有其他方法来合成它?

1 个答案:

答案 0 :(得分:0)

  

我收到了错误消息。 “频率规格Fpass,Fstop必须具有增加的值。”

此错误表示Fstop应大于Fpass。您提到需要Fpass=30Hz。所以你需要Fstop > 30,但你指定的值为10Hz。要修复此错误,您应该增加Fstop值(例如,对于初学者,请调整为100Hz,然后进行调整,直到获得您喜欢的内容)。