【问题标题】:How to synthesize a thunder sound with bandpass filter如何用带通滤波器合成雷声
【发布时间】:2017-01-21 14:58:22
【问题描述】:

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

也许还有其他合成方法?

【问题讨论】:

  • 错误是什么?
  • 错误是“频率规格 Fpass, Fstop 必须有递增的值。”

标签: matlab audio signal-processing sound-synthesis


【解决方案1】:

我收到一个错误。 "频率规格 Fpass、Fstop 必须具有递增的值。"

这个错误意味着Fstop 应该大于Fpass。你提到你需要Fpass=30Hz。所以你需要Fstop > 30,但你指定了一个10Hz的值。要修复此错误,您应该增加 Fstop 值(例如,对于初学者来说,增加到 100Hz,然后调整直到您得到您喜欢的值)。

【讨论】:

  • 感谢您的回答,我已将值更改为 100Hz,但现在脚本无法正常工作。
  • @VadimTor “只是不工作”,因为您遇到另一个错误,或者没有产生听起来像您想要的音频?对于后者,这就是为什么我提到“调整直到你得到你喜欢的东西”。
  • 当我尝试运行它时,我使用了 480kHz 的采样频率并且我的计算机刚刚死机。所以现在它的作品完美了,再次感谢你。
猜你喜欢
  • 2010-10-23
  • 2012-05-15
  • 2020-07-30
  • 2013-03-15
  • 2015-03-05
  • 2019-04-09
  • 2017-01-05
  • 1970-01-01
  • 2023-04-10
相关资源
最近更新 更多