Matlab 切比雪夫IIR滤波器:得到了系数,接下来呢?

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(

这是我的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(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,但仍然没有成功…谢谢,这解决了我的问题谢谢,这解决了我的问题谢谢,这解决了我的问题谢谢,这解决了我的问题