MATLAB实现古比雪夫滤波(附完整代码)

1.MATLAB实现古比雪夫滤波器

clc;close all;clear all;warning off;%清除变量

rand('seed', 500);

randn('seed', 300);

format long g;

% 创建一个简单的正弦波信号

fs = 1000; % 采样频率

t = 0:1/fs:1-1/fs; % 时间向量

x = sin(2*pi*100*t) + sin(2*pi*200*t); % 输入信号

% 设计古比雪夫I型滤波器

Wp = 0.2; % 通带截止频率

Ws = 0.3; % 阻带截止频率

Rp = 1; % 通带纹波

Rs = 40; % 阻带衰减

[N, Wn] = cheb1ord(Wp, Ws, Rp, Rs); % 计算滤波器的阶数和3dB频率

[b, a] = cheby1(N, Rp, Wn); % 设计滤波器

% 使用滤波器

y = filter(b, a, x); % 过滤信号

% 绘制输入和输出信号

figure

subplot(2,1,1)

plot(t, x)

title('原始信号')

subplot(2,1,2)

plot(t, y)

title('Filtered Signal')

程序结果:

MATLAB实现古比雪夫滤波(附完整代码)_第1张图片

2. 古比雪夫滤波器

古比雪夫滤波器(Chebyshev filter)是一种模拟或数字滤波器,以古比雪夫多项式的特性作为设计的基础。古比雪夫滤波器在频率响应的通带和阻带之间提供了一种折衷:在通带中,它们具有最小的最大误差,但是会产生较大的波纹;在阻带中,它们会滚降得更快,但是阻带边沿的位置不那么精确。

在MATLAB中,可以使用以下方法实现古比雪夫滤波器设计:

使用cheb1ord()函数计算滤波器的最小阶数和3dB频率。这个函数的输入包括通过频率,停止频率,通带最大损耗和阻带最小衰减,并返回滤波器的最优阶数和3dB频率。

例如:

Wp = 0.4;

Ws = 0.6;

Rp = 1;

Rs = 40;

[N, Wn] = cheb1ord(Wp, Ws, Rp, Rs);

使用cheby1()函数设计滤波器。这个函数的输入是滤波器阶数,通带最大损耗和3dB频率,并返回滤波器的传递函数。

例如:

[b, a] = cheby1(N, Rp, Wn);

使用filter()函数应用滤波器。这个函数的输入是设计的滤波器和输入信号,并返回滤波后的信号。

例如:

y = filter(b, a, x);

以上是最基础的古比雪夫I型滤波器设计方法,对于更复杂的需求,例如带通滤波器,带阻滤波器或高阶滤波器,MATLAB提供了更多的函数和工具箱进行设计。

你可能感兴趣的:(matlab,开发语言)