基于切比雪夫逼近法的滤波器的matlab设计与实现

目录

一、理论基础

1.1 切比雪夫逼近法理论概述

1.2基于切比雪夫逼近法的滤波器的设计

二、核心程序

三、仿真测试结果


一、理论基础

1.1 切比雪夫逼近法理论概述

        切比雪夫逼近法是一种基于多项式逼近函数的数学方法,它可以用于设计和实现高效的滤波器。这种方法的主要思想是通过多项式来逼近一些复杂的函数,从而实现简化计算和提高计算效率的目的。在滤波器设计中,切比雪夫逼近法通常被用于设计低通、高通和带通滤波器。以下是基于切比雪夫逼近法的滤波器的设计和实现的详细步骤:

定义滤波器规格

       首先,需要定义滤波器的规格,例如滤波器的类型(低通、高通或带通)、滤波器的截止频率和滤波器的阶数等。这些规格将决定滤波器的性能和计算复杂度。

计算切比雪夫多项式

接下来,需要计算切比雪夫多项式。切比雪夫多项式可以通过递归方式计算,其递归公式如下:

T0(x) = 1
T1(x) = x
Tk(x) = 2xTk-1(x) - Tk-2(x)

其中,x为变量,k为多项式的阶数。

3.构建滤波器传输函数

利用计算出的切比雪夫多项式,可以构建滤波器的传输函数。传输函数的公式如下:

H(w) = cos(M*acos(w/wc))

其中,w为角频率,wc为截止频率,M为滤波器的阶数。

4.转换传输函数为系统函数

将传输函数转换为系统函数,即得到滤波器的系统函数。系统函数的公式如下:

H(z) = (z-1/z)M * cos(M*acos(z/wc))

其中,z为复变量,M和wc与传输函数中的定义相同。

5.实现滤波器

       最后,根据滤波器的系统函数,可以实现滤波器。实现滤波器的方法可以是数字信号处理中的IIR(无限冲激响应)或FIR(有限冲激响应)方法。其中,IIR方法具有较高的计算效率,但可能存在稳定性问题;而FIR方法具有稳定的性能,但计算效率较低。在实际应用中,需要根据具体的需求和条件选择适合的方法。

除了以上步骤外,还需要注意以下几点:

  1. 滤波器的性能受到滤波器阶数的影响。阶数越高,滤波器的性能越好,但计算复杂度也越高。因此,需要在实际应用中根据具体需求和条件选择合适的阶数。
  2. 滤波器的截止频率可以根据需求进行调整。截止频率越高,滤波器的性能越好,但也会增加计算复杂度。因此,需要在实际应用中根据具体需求和条件选择合适的截止频率。
  3. 滤波器的稳定性是一个重要的问题。在实现滤波器时,需要注意保证滤波器的稳定性。可以通过选择适当的滤波器系数、使用稳定的数字信号处理算法等方法来保证滤波器的稳定性。
  4. 在实际应用中,还需要考虑滤波器的实时性、复杂度、精度等因素。可以根据具体需求和条件进行优化和调整。

1.2基于切比雪夫逼近法的滤波器的设计

       从FIR数字滤波器的系统函数可以看出,极点都是在Z平面的原点,而零点的分布是任意的。不同的分布对应不同的频率响应,最优设计实际上就是调节这些零点的分布,使得实际滤波器的频率响应和理想滤波器的频率响应之间的最大绝对误差最小。

       切比雪夫逼近法正是利用这种思想进行FIR数字滤波器设计的,对H作最佳逼近,因而获得了较好的通带和阻带性能,并能准确地制定通带和阻带的边缘,是一种更有效的设计方法。

        前面已经介绍了切比雪夫逼近法的基本理论过程,这里将使用MATLAB进行FIR滤波器的设计与仿真。整个滤波器的设计步骤如下: 

 

最后按如下的式子: 

二、核心程序

clc;
clear;
close all;

select = 2;%1:进行普通信号测试;2:音乐信号的测试


if select == 1
%普通信号测试
source = func_test_signal();
figure;
subplot(121);plot(source):title('原始音乐信号');
f     =[0 0.25 0.5 1]; %给定频率轴分点;
a     =[1 1 0 0];     %给定在这些频率分点上理想的幅频响应;
weigh =[1 10];         %给定在这些频率分点上的加权;
y=fftshift(abs(fft(source)));

subplot(122);plot(y);title('原始信号的频谱');

figure;
b=remez(10,f,a,weigh);%设计出切比雪夫最佳逼近滤波器;
[h,w]=freqz(b,1,512,1);%数字滤波器的频率响应;
h=abs(h);%绝对值;
h=20*log10(h);
subplot(121)%改置定位坐标系;
stem(b,'.');
grid;
title('切比雪夫逼近滤波器的抽样值');
subplot(122);
plot(w,h);%生成参数方程的图形;
grid;
title('切比雪夫逼近滤波器幅频特性(dB)');
source2=filter(b,1,source);    %滤波正常实现
figure;
subplot(121);plot(source2):title('通过切比雪夫逼近法滤波后的音乐信号');
y2=fftshift(abs(fft(source2)));
subplot(122);plot(y2);title('滤波后的信号频谱');
end


if select == 2
%音乐信号测试
[source,Fs,nbits] = wavread('source.wav');
figure;
plot(source):title('原始音乐信号');
f     =[0 0.4 0.6 1]; %给定频率轴分点;
a     =[1 1 0 0];     %给定在这些频率分点上理想的幅频响应;
weigh =[1 10];         %给定在这些频率分点上的加权;
y=fftshift(abs(fft(source)));
figure;
plot(y):title('原始信号的频谱');
sound(source,Fs);
figure;
b=remez(32,f,a,weigh);%设计出切比雪夫最佳逼近滤波器;
[h,w]=freqz(b,1,512,1);%数字滤波器的频率响应;
h=abs(h);%绝对值;
h=20*log10(h);
subplot(121)%改置定位坐标系;
stem(b,'.');
grid;
title('切比雪夫逼近滤波器的抽样值');
subplot(122);
plot(w,h);%生成参数方程的图形;
grid;
title('切比雪夫逼近滤波器幅频特性(dB)');
source2=filter(b,1,source);    %滤波正常实现
figure;
plot(source2);title('通过切比雪夫逼近法滤波后的音乐信号');
y2=fftshift(abs(fft(source2)));
figure;
plot(y2);title('滤波后的信号频谱');
sound(source2,Fs);
end



三、仿真测试结果

测试信号为:

针对真个信号的特点,设计如下的切比雪夫逼近滤波器。

    滤波之后,可以看到如下的效果:

        通过上述仿真可以看到,设计的基于切比雪夫逼近法的滤波器具有良好的滤波效果。下面通过适当修改滤波器的参数,对一组音乐信号进行滤波。

这个就是remez算法的基本过程。

在MATLAB中通过如下代码实现:

%给定频率轴分点;

f     =[0 0.4  0.6 1];

%给定在这些频率分点上理想的幅频响应;

a     =[1 1 0 0];   

%给定在这些频率分点上的加权;

weigh =[1 10];  

%设计出切比雪夫最佳逼近滤波器;

b=remez(32,f,a,weigh);

运行MATLAB,可以得到通过切比雪夫逼近法得到的滤波器的幅频特性:

图2.8 切比雪夫逼近滤波器的抽样值和幅频特性

        从上面的仿真可以看到,基于切比雪夫逼近法实现得到的滤波器具有跟好的幅频特性。下面我们将给予切比雪夫逼近法滤波器进行测试,对实际中带噪声的信息进行滤波处理。

A25-02 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fpga和matlab

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值