错误使用 firls>eFirls F 中的频率必须在 [0,1] 范围内。 出错 firls (第 66 行) [h,a] = eFirls(varargin{:}); 出错 FIR2 (第 19 行) b = firls(100,f,a,dev); % 滤波器系数
时间: 2024-01-18 13:04:34 浏览: 125
基于kaiser窗的FIR滤波器设计.doc
这个错误提示表明在执行firls函数时,输入的频率向量超出了[0,1]的范围。在这个问题中,我们的频率向量f是以采样频率为单位的,因此需要将其除以采样频率fs,以得到在[0,1]范围内的频率向量。修改代码如下:
```
% 设计多通带滤波器
fs = 1/T; % 采样频率
f1 = 2*f/fs; % 通带1,基波的两倍频率
f2 = 3*f/fs; % 通带2,基波的三倍频率
f3 = 4*f/fs; % 通带3,基波的四倍频率
f4 = 5*f/fs; % 通带4,基波的五倍频率
f5 = 6*f/fs; % 阻带1,避免基波的六倍频率被滤除
f6 = 1/2; % 阻带2,避免采样频率的一半被滤除
a = [1 1 0 0 0 0]; % 通带增益
dev = [0.001 0.001 0.01 0.01 0.01 0.01]; % 通带波动和阻带衰减
f = [f1 f2 f3 f4 f5 f6]; % 频率向量
b = firls(100,f,a,dev); % 滤波器系数
```
在这里,我们将f1~f6的频率除以采样频率fs,以得到在[0,1]范围内的频率向量。同时,f6的频率直接设为1/2,以避免采样频率的一半被滤除。
修改后的代码应该可以顺利执行。
阅读全文