Как синтезировать громовой звук с полосовым фильтром
Я работаю над синтезом звука грома в MATLAB. Я генерировал розовый шум, и теперь я пытаюсь добавить полосовой фильтр на 30 Гц, но я получаю ошибку:
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 ответ
Решение
Я получаю ошибку. "Спецификации частоты Fpass, Fstop должны иметь возрастающие значения".
Эта ошибка означает, что Fstop
должно быть больше чем Fpass
, Вы упомянули, что вам нужно Fpass=30Hz
, Так что вам нужно Fstop > 30
, но вы указали значение 10 Гц. Чтобы исправить эту ошибку, вы должны увеличить Fstop
значение (например, 100 Гц для начинающих, затем настраивайте, пока не получите то, что вам нравится).