【发布时间】:2014-12-04 15:07:13
【问题描述】:
我正在尝试实现一个看起来像
的过滤器在 Matlab 中。我有:
omegas = (-length(t)/2:length(t)/2)*2*pi/tau/10;
SOS_freq_sum = zeros(1,length(omegas));
for i = 1:length(K_set)
k = K_set(i);
SOS_freq_sum = SOS_freq_sum + b_k(i)*sinc(omegas/(2*pi/tau)-k);
end
SOS_filter_in_frequency = (tau/sqrt(2*pi))*((SOS_freq_sum)');
如何使用它来过滤我的数据? Matlab 的过滤器函数定义了传递函数的分子和denom 系数,但不用于SOS 形式。有没有办法在不将输入信号转换到频域的情况下做到这一点?
非常感谢
【问题讨论】:
-
是的,除了将数据转换到频域之外,我没有看到任何其他方法。另一种可能性是对您的滤波器进行inverse FFT,使其处于时域中,然后通过
conv在时域中使用此滤波器对您的输入信号进行手动卷积。但是,您可以进行一些数学运算并将G转换为传递函数格式,您可以在那里提取分子和分母系数,但这种工作不适合在这里问,可能更符合 DSP StackExchange:dsp.stackexcahnge.com.