为了设计1型Chebyshev低通滤波器,我尝试使用matlab中的设计文件,但是,我不断地收到以下错误:
使用设计文件时出错(第411行) 筛选器响应无效。
我的代码比较简单:
filt = designfilt('cheby1','FilterOrder',3,'CutoffFrequency', 20, 'PassbandRipple', 10);
filtered_signal = filter(filt, signal);这应该做的是,创建一个切比雪夫1型滤波器,3阶,截止频率为20赫兹和通带波纹10赫兹。最后,但同样重要的是,它应该在我的信号上调用它,并带有名称信号。
在matlab中实现低通切比雪夫1型滤波器还有什么别的吗?还是我只是简单地混淆了designfilt的输入。
发布于 2017-08-25 23:53:54
关于你在这里的问题,有几个是:
'cheby1'不是designfilt的第一个参数(MATLAB,2014年)允许的字符串之一。如果键入help designfilt,它将给出允许的不同选项的列表。我看到的最接近的字符串是:'lowpassiir'。查看示例3,特别是使用带命名过滤器的参数'designmethod' (例如'cheby1')。'PassbandRipple‘不是以Hz指定的,而是在dB中指定的。它不是一个频率范围,而是在指定的频率范围内你的纹波的期望幅度响应的规范。'PassbandFrequency'而不是'CutoffFrequency'。Chebyshev滤波器有一个通带,允许在该频带内产生指定的最大纹波。在低通滤波器中,从概念上讲,它是在频率的末尾截止,但在这里,它理解将频率从0传递到您指定的截止频率。下面是一个100赫兹采样率的情况。
filt = designfilt('lowpassiir', 'FilterOrder', 3, 'PassbandFrequency', 20,...
'PassbandRipple', 10, 'SampleRate', 100, 'DesignMethod', 'cheby1');您最好直接使用cheby1 (该方法)来设计滤波器系数,然后将其传递给filter。这是文档。这样,就没有那么多的选项可以混合和匹配,这些选项和引用可能有助于更早地解决任何差异。
https://stackoverflow.com/questions/45890561
复制相似问题