Как синтезировать громовой звук с полосовым фильтром

Я работаю над синтезом звука грома в 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 Гц для начинающих, затем настраивайте, пока не получите то, что вам нравится).

Другие вопросы по тегам