我是靠谱客的博主 昏睡鲜花,最近开发中收集的这篇文章主要介绍MATLAB中滤波函数、频率响应函数以及频率响应函数不同表达形式的转换一、理论公式二、滤波函数filter三、频率响应函数 四、频率响应函数不同形式的转换,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、理论公式

        频率响应函数的表达式:

        对应的z变换的多项表达式:

        Z变换的零极点表达形式:

        Z变换的二阶因子级联形式:

二、滤波函数filter

  1. filter函数,仅可以用于零状态响应系统。

        y=filter(b,a,x) ;       

        %b为z变换多项表达式公式中[b0,b1...bM]的矩阵

        %a为z变换多项表达式公式中[a0,a1...aN]的矩阵

        %x为输入的原始信号

移动平均滤波的matlab程序示例:

%求解零状态差分方程函数--LTI系统
% y=filter(b,a,x);
N=201;
n=rand(1,N)-0.5;%噪声信号
k=0:N-1;%
x=2*k.*(0.9.^k)+2.0*cos(0.02*pi*k)+5.0;%输入信号
y=x+n;%包含噪声的信号
plot(k,n,'g--',k,x,'b--',k,y,'r-');%显示三个函数图像,
xlabel('Time index k');
legend('n[k]','x[k]','y[k]');%添加图例
M=10;
b=ones(M,1)/M;%移动平均滤波,10个点相加,再除10,算出平均值
a=[1];
filter_y=filter(b,a,y);
plot(k,x,'b-',k,y,'g--',k,filter_y,'r-');%显示三个函数的波形
xlabel('Time index k');
legend('x[k]','y[k]','filter_y[k]');%添加图例

得出的波形如下图:

三、频率响应函数

 H=freqz(b,a,w);

%b为z变换多项表达式公式中[b0,b1...bM]的矩阵

        %a为z变换多项表达式公式中[a0,a1...aN]的矩阵

        %w为输入的角频率

matlab程序示例

%freqz用以分析离散系统的频率响应
b=[1]; %分子矩阵
a1=[1,-0.9]; a2=[1,0.9];%分母矩阵
w=linspace(0,pi,512);%在0-π范围内等间隔分512份
h1=freqz(b,a1,w);%计算频率响应
h2=freqz(b,a2,w);%计算频率响应
% plot(w,abs(h1),w,abs(h2),':');
plot(w/pi,abs(h1),w/pi,abs(h2),':');
legend('a=0.9','a=-0.9');

 

可以看出在分母矩阵为[1,-0.9]时,系统为低通滤波器;分母矩阵为[1,0.9]时,系统为高通滤波器。

 四、频率响应函数不同形式的转换

b=[1,4];%Z变换的分子矩阵
a=[1,0.1,-0.2];%Z变换的分母矩阵
z=zeros(1,2);%2*1的矩阵,值为0
% [z,p,K]=tf2zp(b,a);%多项式转零极点表达式
[z,p,K]=tf2zpk(b,a);%多项式转零极点表达式
sos=zp2sos(z,p,K);%零极点转二阶因子级联形式

多项式表达式为

经过matlab计算,得到其零极点表达式为

二阶因子级联形式:         (只有1级)

需要注意的是:tf2zp计算出来的结果中只有一个零点,而 tf2zpk计算出来的结果中有两个零点(多出来一个位置在0处的零点)

        tf2zpk是用于离散系统传递函数,基于z变换;而tf2zp是用于连续系统传递函数,基于拉普拉斯变换。依据二者的函数公式,计算该系统函数的零极点出来,确实会存在零点的细微差别。此处不做讨论,注意即可。

最后

以上就是昏睡鲜花为你收集整理的MATLAB中滤波函数、频率响应函数以及频率响应函数不同表达形式的转换一、理论公式二、滤波函数filter三、频率响应函数 四、频率响应函数不同形式的转换的全部内容,希望文章能够帮你解决MATLAB中滤波函数、频率响应函数以及频率响应函数不同表达形式的转换一、理论公式二、滤波函数filter三、频率响应函数 四、频率响应函数不同形式的转换所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部