Matlab 切比雪夫IIR滤波器:得到了系数,接下来呢?
这是我的Matlab/倍频程程序Matlab 切比雪夫IIR滤波器:得到了系数,接下来呢?,matlab,signals,signal-processing,octave,Matlab,Signals,Signal Processing,Octave,这是我的Matlab/倍频程程序 clc; close all; %BPF of pass 400-600Hz fs1=300; fp1=400; fp2=600; fs2=700; samp=1500; ap=1; %passband ripple as=60; %stopband attenuation %Normalizing the frequency wp=[fp1 fp2]/(samp); ws=[fs1 fs2]/(samp); [N,wn]=cheb1ord_test(
clc;
close all;
%BPF of pass 400-600Hz
fs1=300;
fp1=400;
fp2=600;
fs2=700;
samp=1500;
ap=1; %passband ripple
as=60; %stopband attenuation
%Normalizing the frequency
wp=[fp1 fp2]/(samp);
ws=[fs1 fs2]/(samp);
[N,wn]=cheb1ord_test(wp,ws,ap,as); %Generates order and cutoff parameters
[b,a]=cheby1(N,ap,wn); %Generates poles and zeros for the given order and cutoff
printf("b coeffs = %f\n",b);
printf("a coeffs = %f\n",a);
[H,W]=freqz(b,a,256);
plot(W/(2*pi),20*log10(abs(H))) %Transfer function works correctly, so coefficients are correct
%100 samples of 500hz
n = 1:100;
x=10*cos(2*pi*n*500*(1/samp));
printf("Order %d\n",N); %Depends on required ripple attenuation
figure;
subplot (2,1,1); plot(x);
y=filter(b,a,x); %**Apparently i suspect this does not work**
subplot (2,1,2); plot(y);
当我看到幅度/频率响应时,图表非常完美,显示400和600是我的滤波器截止值
但是,当我应用500Hz的输入信号时,我必须期望看到信号通过滤波器时不会受到伤害(正如我使用巴特沃斯函数时所观察到的),但是输出失真,几乎不包含任何信号
因此,我推断我的错误是使用滤波函数将切比雪夫系数与输入信号相结合
如果这就是问题所在,那么如何将切比雪夫系数应用于输入数字信号?我认为问题在于你的
x
信号:我不太清楚它是什么,但我可以告诉你它不是什么,那是500Hz的输入信号
我将首先定义时间向量,然后应用cos
函数(我假设您在1500Hz下采样):
我认为问题在于你的
x
信号:我不太清楚它是什么,但我可以告诉你它不是什么,这是一个500Hz的输入信号
我将首先定义时间向量,然后应用cos
函数(我假设您在1500Hz下采样):
我认为问题在于你的
x
信号:我不太清楚它是什么,但我可以告诉你它不是什么,这是一个500Hz的输入信号
我将首先定义时间向量,然后应用cos
函数(我假设您在1500Hz下采样):
我认为问题在于你的
x
信号:我不太清楚它是什么,但我可以告诉你它不是什么,这是一个500Hz的输入信号
我将首先定义时间向量,然后应用cos
函数(我假设您在1500Hz下采样):
对于cheb1ord和cheby1,频率在0和1之间标准化,1对应于采样频率的一半。您应该使用
wp=[fp1 fp2]/(samp/2);
ws=[fs1 fs2]/(samp/2);
其中samp是采样频率。对于cheb1ord和cheby1,频率在0和1之间标准化,1对应于采样频率的一半。您应该使用
wp=[fp1 fp2]/(samp/2);
ws=[fs1 fs2]/(samp/2);
其中samp是采样频率。对于cheb1ord和cheby1,频率在0和1之间标准化,1对应于采样频率的一半。您应该使用
wp=[fp1 fp2]/(samp/2);
ws=[fs1 fs2]/(samp/2);
其中samp是采样频率。对于cheb1ord和cheby1,频率在0和1之间标准化,1对应于采样频率的一半。您应该使用
wp=[fp1 fp2]/(samp/2);
ws=[fs1 fs2]/(samp/2);
其中samp是您的采样频率。实际上,我在这里发布的输入信号是错误的,我现在编辑了我的问题,我尝试了您发布的输入信号isgnla,但仍然没有成功……实际上,我在这里发布的输入信号是错误的,我现在编辑了我的问题,我尝试了你发布的输入信号,但仍然不走运…实际上我在这里发布的输入信号是错误的,我现在编辑了我的问题,我尝试了你发布的输入信号,但仍然不走运…实际上我在这里发布的输入信号是错误的,我现在编辑了我的问题,我尝试了你发布的输入isgnla,但仍然没有成功…谢谢,这解决了我的问题谢谢,这解决了我的问题谢谢,这解决了我的问题谢谢,这解决了我的问题