实验三 信号与系统数字信号部分1.docx

上传人:b****2 文档编号:2199868 上传时间:2022-10-27 格式:DOCX 页数:13 大小:116.30KB
下载 相关 举报
实验三 信号与系统数字信号部分1.docx_第1页
第1页 / 共13页
实验三 信号与系统数字信号部分1.docx_第2页
第2页 / 共13页
实验三 信号与系统数字信号部分1.docx_第3页
第3页 / 共13页
实验三 信号与系统数字信号部分1.docx_第4页
第4页 / 共13页
实验三 信号与系统数字信号部分1.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

实验三 信号与系统数字信号部分1.docx

《实验三 信号与系统数字信号部分1.docx》由会员分享,可在线阅读,更多相关《实验三 信号与系统数字信号部分1.docx(13页珍藏版)》请在冰豆网上搜索。

实验三 信号与系统数字信号部分1.docx

实验三信号与系统数字信号部分1

实验三

1.信号的尺度变换、翻转和时移

信号的尺度变换、翻转和平移运算实际上是函数自变量的运算。

例1已知某三角波脉冲信号f(t),试绘制f(2t)、f(-2t)和f(2-2t)的波形。

t=-3:

0.001:

3;

ft=tripuls(t,4,0.5);

subplot(2,2,1);plot(t,ft);title('原始信号');

ft1=tripuls(2*t,4,0.5);%尺度变换

subplot(2,2,2);plot(t,ft1);title(尺度变换');

ft2=tripuls(-2*t,4,0.5);%翻转

subplot(2,2,3);plot(t,ft2);title('翻转');

ft3=tripuls(2-2*t,4,0.5);%时移

subplot(2,2,4);plot(t,ft3);title('时移');

f(t)、f(2t)、f(-2t)和f(2-2t)的波形如图1所示。

图1信号的尺度变换、翻转和时移

2.信号的微分和积分

连续信号的微分可用diff函数来计算,连续信号的定积分可用quad函数或quad8函数来计算。

其调用格式为:

y=diff(x)/h

其中x为待微分的信号,h为步长,y为信号x的微分。

y=quad(‘function-name’,a,b)

其中function-name为被积函数名,a、b为积分区间的下限和上限,y为积分后信号。

quad和quad8都是积分函数,只是采用的积分方法不同而已。

quad采用较低次的可塑性递回辛普森积分法则,quad8采用可塑性递回八段Newton-Cotes积分法则,quad8不管是在精度上还是在速度上都明显高于quad。

例2如图2所示的三角波脉冲信号f(t),试利用MATLAB绘制和的波形。

为了使用quad函数来计算三角波脉冲信号f(t)的积分,将f(t)编写成MATLAB的函数文件,函数名为ft_tri.m。

此函数文件如下:

functionyt=ft_tri(t)

yt=tripuls(t,4,0.5);

利用diff和quad函数,并调用ft_tri.m即可计算三角波脉冲信号f(t)的微分、积分。

程序如下:

h=0.001;t=-3:

h:

3;

y1=diff(ft_tri(t))/h;

subplot(1,2,1);plot(t(1:

length(t)-1),y1);title('信号的微分');

t=-3:

0.1:

3;

forx=1:

length(t)

y2(x)=quad('ft_tri',-3,t(x));

end

subplot(1,2,2);plot(t,y2);

title('信号的积分');

程序运行结果如图2所示。

图2信号的微分和积分

3.信号的差分和迭分

离散序列的差分为:

,用diff函数实现,其调用格式为y=diff(f)。

离散序列的迭分是,与信号的相加运算不同,迭分运算把k1到k2之间的所有样本加起来,在MATLAB中用sum函数实现,其调用格式为y=sum(f(k1:

k2))。

例3计算指数信号的能量。

解:

离散信号的能量定义为

根据上式,计算能量的程序如下:

k=0:

10;

fk=(-1.6).^k;

E=sum(abs(fk).^2)

E=

1.9838e+004

4.系统的冲激动响应和阶跃响应

若系统的微分方程或传递函数为:

对于物理上可实现的系统,。

一般情况下,系数a0=1,若不为1则分子分母可以同时除以a0。

由微分方程和传递函数的关系可知,传递函数和微分方程中的系数ai和bi是严格对应的,因此,两种形式给出系统函数都可以用下面的方法解决。

y=ipulse(b,a),用于绘制向量a和b定义的LTI(线性时不变)系统的冲激响应。

y=step(b,a),用于绘制向量a和b定义的LTI(线性时不变)系统的阶跃响应。

其中,a和b表示由系统微分方程中的ai和bi组成的系数向量。

例4求系统的冲激响应和阶跃响应。

a=[746];

b=[11];

subplot(1,2,1);impulse(b,a);%冲激响应

title('冲激响应');xlabel('时间');ylabel('幅值');

subplot(1,2,2);step(b,a);%阶跃响应

title('阶跃响应');xlabel('时间');ylabel('幅值');

系统的冲激响应和阶跃响应如图3所示。

图3系统的冲激响应和阶跃响应

5.系统的零状态响应

LTI连续系统以常系数微分方程描述,系统的零状态响应可通过求解初始状态为零的微分方程得到。

MATLAB提供的零状态响应函数为lsim,其调用格式为:

y=lsim(sys,f,t)

其中,t是系统零状态响应的抽样点,f是输入信号,sys是LTI(线性时不变)系统的模型,可以是微分方程、差分方程或状态空间方程。

在求解微分方程时,LTI(线性时不变)系统的模型sys要借助函数tf来获得,其调用格式为:

sys=tf(b,a)

其中,a、b分别对应系统函数中输出和输入的系数向量。

例5已知系统。

求当输入信号为时,该系统的零状态响应。

sys=tf([1],[1277]);

t=1:

0.01:

5;

f=10*sin(2*pi*t);

y=lsim(sys,f,t);

plot(t,y);

系统的零状态响应如图9-11所示。

图5零状态响应

6离散系统的零状态响应

离散系统可以用差分方程来描述:

其中,、分别表示离散系统的输入和输出,n表示差分方程的阶数。

已知差分方程的n个初始状态和输入,就可以利用迭代计算法来计算系统的输出。

在零初始状态下,MATLAB工具箱提供了一个filter函数来计算差分方程的零状态响应,其调用格式如下:

y=filter(b,a,f)

其中,b、a分别是差分方程输入和输出各阶差分的系数所组成的向量,f为输入序列,y为输出序列。

注意:

输出序列和输入序列的长度应当相等。

例6已知某LTI系统的输入输出关系为:

,输入信号为,其中,是随机信号。

试用MATLAB编程求解系统的零状态响应。

随机信号可以由rand函数产生,假设M=5。

则程序如下:

R=51;%信号长度

d=rand(1,R)-0.5;%产生[-0.50.5]的随机数

k=0:

R-1;

s=2*k.*(0.9.^k);

f=s+d;

subplot(1,2,1)

stem(k,f);

title('输入信号f(k)');

axis([05008]);

M=5;

b=ones(M,1)/M;

a=1;

y=filter(b,a,f);

subplot(1,2,2)

stem(k,y);

title('系统响应y(k)');

axis([05008]);

该系统的零状态响应如图6所示。

图6离散系统的零状态响应

7离散系统的冲激响应

在MATLAB中,可以用impz函数来求解系统的冲激响应,其调用格式为:

h=impz(b,a,k)

其中,b、a分别是差分方程输入、输出的系数向量,k表示输出序列的时间取值范围,h就是系统的单位冲激响应。

例7某离散系统的差分方程为,初始条件为y[0]=0,y[1]=1,求其冲激响应、零状态响应和完全响应。

k=-10:

20;a=[6-51];b=[1];

subplot(1,3,1),impz(b,a,k);title('冲激响应');%冲激响应

kj=0:

30;fk=cos(kj*pi/2);yf=filter(b,a,fk);%零状态响应

subplot(1,3,2),stem(kj,yf);title('零状态响应');axis([030-0.150.2]);%完全响应

y

(1)=0;y

(2)=1;%初值

form=3:

length(kj);

y(m)=(1/6)*(5*y(m-1)-y(m-2)+fk(m));

end

subplot(1,3,3),stem(kj,y);title('完全响应');axis([030-0.151.1]);

程序运行结果如图7所示。

图7离散系统的冲激响应、零状态响应和完全响应

8卷和运算

卷和是计算离散系统零状态响应的强有力的工具之一,卷和函数conv的调用格式为:

c=conv(a,b)

其中,序列c的时间起点为两个向量a、b的时间起点之和,终点为两两个向量a、b的时间终点之和,长度为a、b长度之和减1。

例8已知序列x[k]={1,2,3,4;k=0,1,2,3},y[k]={1,1,1,1,1;k=0,1,2,3,4},计算x[k]*y[k],并绘制卷和的结果。

x=[1234];y=[11111];z=conv(x,y)

k=0:

7%z的时间起点为0+0,终点为3+4

stem(k,z)

k=

01234567

z=

1361010974

程序运行结果如图8所示:

图9-14离散信号的卷和运算结果

9信号的分解与合成

周期信号按照傅里叶级数可以分解成三角函数的线性组合:

其中,w为基波频率。

N为截断位置,当N选取较大时,信号的傅里叶级数就是原信号的较好的近似。

分解和合成的程序如下:

function[A_sym,B_sym]=CTFShchsym;%设定函数名及参数

%Nf=6谐波的阶数;Nn输出数据的准确位数;tao=τ

%A_sym:

第1元素是直流项,其后元素依次是1,2,3,…次谐波cos项的展开系数

%B_sym:

第2,3,4,···元素依次是1,2,3,…次谐波sin项的展开系数

symstnkx%说明为符号变量

tao=1;T=5;a=0.5;

ifnargin<4;Nf=6;end%设定默认参数的个数及默认值

ifnargin<5;Nn=32;end%设定默认参数的个数及默认值

x=time_fun_x(t);

A0=int(x,t,-a,T-a)/T;%求三角函数展开系数a0=A0

As=int(2*x*cos(2*pi*n*t/T)/T,t,-a,T-a);%求三角函数展开系数an=As

Bs=int(2*x*sin(2*pi*n*t/T)/T,t,-a,T-a);%求三角函数展开系数bn=Bs

A_sym

(1)=double(vpa(A0,Nn));%获取数组A0所对应的ASCII码数值数组

fork=1:

Nf

A_sym(k+1)=double(vpa(subs(As,n,k),Nn));%获取数组A所对应的ASCII码数值数组

B_sym(k+1)=double(vpa(subs(Bs,n,k),Nn));%获取数组B所对应的ASCII码数值数组

end

ifnargout==0%没有输入参数

c=A_sym;disp(c);%disp(c)输出系数an(n=0,1,2,3,…)

d=B_sym;disp(d);%disp(d)函数输出系数bn(n=0,1,2,3,…)

t=-8*a:

0.01:

T-a;

f1=c

(1)+c

(2).*cos(2*pi*1*t/5)+0.*sin(2*pi*1*t/5);%基波

f2=c(3).*cos(2*pi*2*t/5)+0.*sin(2*pi*2*t/5);%2次谐波

f3=c(4).*cos(2*pi*3*t/5)+0.*sin(2*pi*3*t/5);%3次谐

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1