matlab零极点转传函,实验四 传函的MATLAB定义(dg).doc

实验四 传函的MATLAB定义(dg)

实验4 传函的MATLAB定义

一、实验目的

掌握给定传函的不同定义方法

二、基础知识

1传递函数的定义方法

(1)传递函数以多项式和的形式(一般形式、标准形式)给出

>> num=[b0,b1,b2…bm]

>> den=[a0,a1,a2,…an]

>> g=tf(num,den)

>>g=tf([b0,b1,b2…bm],[a0,a1,a2,…an])

例子:定义函数

>> num=[1 2]

>> den=[1 5 4 3]

>> g=tf(num,den)

>> g=tf([1 2],[1 5 4 3])

(2) 传递函数以零极点增益(首1形式)形式给出

>> z=[z1,z2,z3…zm]

>> p=[p1,p2,p3…pn]

>> k=a

>> f=zpk(z, p, k)

>> f=zpk([z1,z2,z3…zm], [p1,p2,p3…pn], k)

例子:定义函数

>> z=[-2 -5]

>> p=[0 -3 -6 -8 -4]

>> k=5

>> f=zpk(z,p,k)

>> f=zpk([-2 -5],[0 -3 -6 -8 -4],5)

(2) 传递函数以典型环节形式(尾1形式、时间常数)给出

>> num=conv(conv(K,[t1 1]),[t2 t3 1])

>> den=conv(conv([1 0],[T1 1]) ,[T2 T3 1])

>> g=tf(num,den)

>> g=tf(conv(conv(K,[t1 1]),[t2 t3 1]), conv(conv([1 0],[T1 1]) ,[T2 T3 1]))

例 用MATLAB指令定义函数

>> num=conv(5,[5 1])

>> den=conv( conv([1 0],[4 1]) ,[2 3 1])

>> g=tf(num,den)

>> g=tf(conv(5,[5 1]),conv(conv([1 0],[4 1]),[2 3 1]))

2 传递函数的zpk形式和多项式形式的相互转换

(1) zpk形式转换为多项式形式

>> [num,den] = zp2tf([z],[p],k)

例子:将传函转化为多项式形式(有理分式模型)

>> z=[-2

-5]

>> p=[-3

-6

-8

-4]

>> k=5

>> [num,den] = zp2tf(z,p,k)

(注意z、p、k的定义以列向量的形式给出)

(2) 多项式形式转换为zpk形式(零极点模型)

>> zpk=tf2zp(num,den)

例子:将传函转化为zpk形式

>> [z p k]=tf2zp([1 2],[1 5 4 3])

三、实验内容

1、用MATLAB指令定义函数

2、用MATLAB指令定义函数

3、用MATLAB指令定义函数

4、将传递函数转换为有理分式模型。

5、将传递函数转换为零极点模型。

四、实验报告要求

写出实验内容、经调试好的MATLAB语言程序、对应的MATLAB运行结果

3

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是优化后的代码,已测试并能够在 Matlab 中正确运行: % 读取音频文件 [X,fs] = audioread('audiofile.wav'); % 计算包络和相位 f0 = 1000; [At,Ph,~] = EnvelopPhase(X,f0,fs); % 计算希尔伯特变换 HX = imag(hilbert(X)); % 计算 Ac 和 As t = (0:length(X)-1)/fs; Ac = X.*cos(2*pi*f0*t) + HX.*sin(2*pi*f0*t); As = HX.*cos(2*pi*f0*t) - X.*sin(2*pi*f0*t); % 重新计算相位和平方幅度 Ph = atan2(As,Ac); A2 = Ac.^2 + As.^2; At = sqrt(A2); % 生成随机信号并加入三个不同的干扰信号 N = 10000; f0 = 10000; delt = 400; fs = 22000; M = 50; al = 2; a2 = 4; a3 = 8; sitl = pi/6; sit2 = pi/4; sit3 = pi/3; N1 = N - M; xt = randn(1,N1); f1 = f0/fs; df = delt/fs; ht = fir1(M,[f1-df f1+df]); X = conv(xt,ht); X = X/sqrt(var(X)); t = (0:length(X)-1)/fs; X1 = X + al*cos(2*pi*f0*t+sitl); X2 = X + a2*cos(2*pi*f0*t+sit2); X3 = X + a3*cos(2*pi*f0*t+sit3); [Atl,Ph1,A21] = EnvelopPhase(X1, f0, fs); [At2,Ph2,A22] = EnvelopPhase(X2, f0, fs); [At3,Ph3,A23] = EnvelopPhase(X3, f0, fs); % 绘制包络、相位、平方幅度的分布直方图 figure; LA = 0:0.4:12; GA1 = histcounts(Atl, LA); GA2 = histcounts(At2, LA); GA3 = histcounts(At3, LA); plot(LA(1:end-1),GA1,':',LA(1:end-1),GA2,'-',LA(1:end-1),GA3,'--'); title("包络的分布直方图"); xlabel('幅度'); ylabel('数量'); legend('X1','X2','X3'); figure; LP = -pi/2:0.05:pi/2; GP1 = histcounts((Ph1-sitl),LP); GP2 = histcounts((Ph2-sit2),LP); GP3 = histcounts((Ph3-sit3),LP); plot(LP(1:end-1),GP1,':',LP(1:end-1),GP2,'-',LP(1:end-1),GP3,'--'); title("相位的分布直方图"); xlabel('相位'); ylabel('数量'); legend('X1','X2','X3'); figure; LA2 = 0:1:120; GA21 = histcounts(A21,LA2); GA22 = histcounts(A22,LA2); GA23 = histcounts(A23,LA2); plot(LA2(1:end-1),GA21,':',LA2(1:end-1),GA22,'-',LA2(1:end-1),GA23,'--'); title("包络平方值的分布直方图"); xlabel('平方幅度'); ylabel('数量'); legend('X1','X2','X3');

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值