信号与系统的matlab表示
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
连续信号与系统分析
一、典型信号的matlab 表示
表示连续信号,需定义自变量的范围和取样间隔,如t=0:0.01:3
1.实指数信号y=k*exp(a*t)
2.正弦信号k*sin(w*t+phi)k*cos(w*t+phi)
3.复指数信号y=k*exp((a+i*b)*t)
实部real(y)虚部imag(y)模abs(y)相角angle(y)共轭conj(y)
4.抽样信号Sat=sinc(t/pi)
5.矩形脉冲信号y=rectpuls(t,width)
周期方波信号y=square(2*pi*f*t,duty)%产生频率为fHZ ,占空比为duty%的方波
6.三角脉冲信号
非周期三角波y=tripuls(t,width,skew)%斜度skew ,最大幅度出现在t=(width/2)*skew 周期三角波y=sawtooth(t,width)
7.单位阶跃信号function y=uCT(t)y=(t>=0)
阶跃信号符号函数Heaviside()y=sym(‘Heaviside(t)’)%调用时必须用sym 定义冲激信号符号函数Dirac()
二、Matlab 的符号运算
1.定义符号变量
syms 变量名syms x
sym(‘变量名’)x=sym(‘x’)
sym(‘表达式’)sym(‘x+1’)
2.化简符号运算结果simple 或simplify
3.绘制符号表达式图形ezplot(y,[a,b])
三、连续信号的运算
微分和积分运算(用符号表达式来表示)
1.微分运算
Diff(function,’variable’,n)%variable 为求导变量,n 为求导阶数
例:syms a x y
y=sin(a*x^2);
dy=diff(y,’x’)
2.积分运算
int(function,’variable’,a,b)%a 为积分下限,b 为积分上限
3.信号的反折fliplr(x)
4.卷积计算
1)符号运算计算卷积(求解积分的方法)例:)
(*)()(t u e t u e t y t t
--=syms T t tao
xt1=exp(-t);
xt2=exp(-t/T);
xt_tao=subs(xt1,t,tao)*subs(xt2,t,t-tao);
yt=int(xt_tao,tao,0,t);
yt=simplify(yt);
2)数值计算法求卷积
conv()
y =dt*conv(e,h)
例:求e(t)=u(t)-u(t-1)和h(t)=u(t)-u(t-1)的卷积
t0=-2;t1=4;dt =0.01;
t =t0:dt:t1;
e =u(t)-u(t-1);
h =u(t)-u(t-1);
y =dt*conv(e,h);%Compute the convolution of x(t)and h(t)
subplot(221)
plot(t,e),grid on,title('Signal e(t)'),axis([t0,t1,-0.2,1.2])
subplot(222)
plot(t,h),grid on,title('Signal h(t)'),axis([t0,t1,-0.2,1.2])
subplot(212)
t =2*t0:dt:2*t1;%the time range to the convolution of e and h.
plot(t,y),grid on,title('The convolution of x(t)and h(t)'),axis([2*t0,2*t1,-0.1,1.2]),
xlabel('Time t sec')
四、连续LTI 系统的时域分析
1.系统响应的符号求解dsolve(‘eq1,eq2,…’,’cond1,cond2,…’);
%eqi 表示微分方程,condi 表示初始条件
例:eq=’D3y+2*D2y+Dy=0’;
cond=’y(0)=1,Dy(0)=1,D2y(0)=2’;
yzi=dsolve(eq,cond);%零输入响应
simplify(yzi);
eq1=’D3y+4*D2y+8*Dy=3*Dx+8*x’;
eq2=’x=Heaviside(t)’;
cond=’y(-0.01)=0,Dy(-0.01)=0,D2y(-0.01)=0’;
yzs=dsolve(eq1,eq2,cond);
simplify(yzs.y);%零状态响应
2.零状态响应的数值求解
1)y=lsim(sys,f,t)
%sys 表示系统模型,由sys=tf(b,a)生成的系统函数对象
%f 输入信号向量,t 时间抽样点向量
例:)
()sin()(),()()()('''t u t t f t f t y t y t y π210665==++ts=0;te=5;dt=0.01;
sys=tf([6],[1,5,6]);
t=ts:dt:te;
f=10*sin(2*pi*t).*UT(t);
y=lsim(sys,f,t);
plot(t,y),grid on;
xlabel(‘time’),ylabel(‘y(t)’);
title(‘零状态响应’);
2)y=conv(f,impul)
3.连续系统冲激响应y=impulse(sys,t)%sys 表示系统模型
4.连续系统阶跃响应y=step(sys,t)
五、信号的频域分析
1.傅立叶变换
1)符号运算求法
fourier()和ifourier()
例:)()(t u e t f t 2-=的傅立叶变换
ft=sym(‘exp(-2*t)*Heaviside(t)’);
fw=fourier(ft)
ezplot(abs(fw));%或者fw_conj=conj(fw);Gw=sqrt(fw*fw_conj);
phase=atan(image(fw)/real(fw));%或者angle(fw)ezplot(phase)
211
Ω+=Ω)(j F 的傅立叶反变换
syms t
fw=sym(‘1/(1+w^2’);
ft=ifourier(fw,t)
2)数值计算求法
[][][]N
k k N e n f k F k T
N M n j T M T N k ≤≤∆=∆∆=-⨯-∆--⨯-⨯02111111,)()()
()()()(π
ωω例:求)(t G 82的傅立叶变换
1)数值计算
dt=0.01;t=-4:dt:4;
ft=(t+4)/2.*uCT(t+4)-t.*uCT(t)+(t-4)/2.*uCT(t-4);
N=2000;
k=-N:N;
W=pi*k/(N*dt);
F=dt*ft*exp(-j*t'*W);
F=abs(F);
plot(W,F),grid on;
axis([-pi pi -19]);
title('amplitude spectrum');
2)符号计算