matlab抽样.docx
- 文档编号:6132329
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:19
- 大小:123.60KB
matlab抽样.docx
《matlab抽样.docx》由会员分享,可在线阅读,更多相关《matlab抽样.docx(19页珍藏版)》请在冰豆网上搜索。
matlab抽样
实验一、MATLAB基本应用
实验二、实验二信号的时域表示
实验三、连续信号卷积
实验四、典型周期信号的频谱表示
实验五、傅立叶变换性质研究
实验六、系统的零极点分析
实验七离散信号分析
实验一MATLAB基本应用
一、实验目的:
学习MATLAB的基本用法,了解MATLAB的目录结构和基本功能以及MATLAB在信号与系统中的应用。
二、实验内容:
例一已知x的取值范围,画出y=sin(x)的图型。
参考程序:
x=0:
0.05:
4*pi;
y=sin(x);
plot(y)
例二计算y=sin(/5)+4cos(/4)
例三已知z取值范围,x=sin(z);y=cos(z);画三维图形。
z=0:
pi/50:
10*pi;
x=sin(z);
y=cos(z);
plot3(x,y,z)
xlabel('x')
ylabel('y')
zlabel('z')
例四已知x的取值范围,用subplot函数绘图。
参考程序:
x=0:
0.05:
7;
y1=sin(x);
y2=1.5*cos(x);
y3=sin(2*x);
y4=5*cos(2*x);
subplot(2,2,1),plot(x,y1),title('sin(x)')
subplot(2,2,2),plot(x,y2),title('1.5*cos(x)')
subplot(2,2,3),plot(x,y3),title('sin(2*x)')
subplot(2,2,4),plot(x,y4),title('5*cos(2*x)')
连续信号的MATLAB表示
1、指数信号:
指数信号Aeat在MATLAB中可用exp函数表示,其调用形式为:
y=A*exp(a*t)(例取A=1,a=-0.4)
参考程序:
A=1;a=-0.4;
t=0:
0.01:
10;
ft=A*exp(a*t);
plot(t,ft);gridon;
2、正弦信号:
正弦信号Acos(w0t+)和Asin(w0t+)分别由函数cos和sin表示,其调用形式为:
A*cos(w0t+phi);A*sin(w0t+phi)(例取A=1,w0=2,=/6)
参考程序:
A=1;w0=2*pi;phi=pi/6;
t=0:
0.001:
8;
ft=A*sin(w0*t+phi);
plot(t,ft);gridon;
3、抽样函数:
抽样函数Sa(t)在MATLAB中用sinc函数表示,其定义为:
sinc(t)=sin(t)/(t)
其调用形式为:
y=sinc(t)
参考程序:
t=-3*pi:
pi/100:
3*pi;
ft=sinc(t/pi);
plot(t,ft);gridon;
4、矩形脉冲信号:
在MATLAB中用rectpuls函数来表示,其调用形式为:
y=rectpuls(t,width),用以产生一个幅值为1,宽度为width,相对于t=0点左右对称的矩形波信号,该函数的横坐标范围由向量t决定,是以t=0为中心向左右各展开width/2的范围,width的默认值为1。
例:
以t=2T(即t-2T=0)为对称中心的矩形脉冲信号的MATLAB源程序如下:
(取T=1)
t=0:
0.001:
4;
T=1;
ft=rectpuls(t-2*T,2*T);
plot(t,ft);gridon;axis([04–0.51.5]);
周期性矩形波(方波)信号在MATLAB中用square函数来表示,其调用形式为:
y=square(t,DUTY)用以产生一个周期为2、幅值为1的周期性方波信号,其中的DUTY参数表示占空比,即在信号的一个周期中正值所占的百分比。
例如频率为30Hz的周期性方波信号的MATLAB参考程序如下:
t=-0.0625:
0.0001:
0.0625;
y=square(2*pi*30*t,75);
plot(t,y);axis([-0.06250.0625–1.51.5]);gridon;
实验二信号的时域表示
实验目的:
利用MATLAB实现信号的时域表示以及图形表示
题目一:
连续信号的MATLAB描述
设计要求:
列出单位冲激函数、单位阶跃函数、复指数函数的MATLAB表达式。
建模:
1、单位冲激函数(t)无法直接用MATLAB描述,可以把它看作是宽度为(程序中用dt表示),幅度为1/的矩形脉冲,即
x1(t)=(t-t1)=1/t1 1其余 表示在t=t1处的冲激。 2、单位阶跃函数: 在t=t1处跃升的阶跃可写为u(t-t1).定义为 x2(t)=u(t-t1)=1t1 1t<0 3、复指数函数x3(t)=e(u+j)t 若=0,它是实指数函数,如u=0,则为虚指数函数,其实部为余弦函数,虚部为正弦函数。 本例u=-0.5,=10. 参考程序: clear,t0=0;tf=5;dt=0.05;t1=1; t=[t0: dt: tf];st=length(t); n1=floor((t1-t0)/dt); x1=zeros(1,st); x1(n1)=1/dt; subplot(2,2,1),stairs(t,x1),gridon axis([0,5,0,22]) x2=[zeros(1,n1-1),ones(1,st-n1+1)]; subplot(2,2,3),stairs(t,x2),gridon axis([0,5,0,1.1]) alpha=-0.5;w=10;x3=exp((alpha+j*w)*t); subplot(2,2,2),plot(t,real(x3)),gridon subplot(2,2,4),plot(t,imag(x3)),gridon 程序运行结果: 如图2-1 图2-1程序运行结果 题目二: LTI系统的零输入响应 设计要求: 描述n阶线性时不变(LTI)连续系统的微分方程为: a1(dny/dtn)+a2(dn-1y/dt)+…+an(dy/dt)+(an+1)y=b1(dmu/dtm)+…+bm(du/dt)+(bm+1)u,已知y及其各阶导数的初始值为y(0),y (1)(0),…,y(n-1)(0),求系统的零输入响应。 参考程序: a=input('输入分母系数向量a=[a1,a2......]='); n=length(a)-1; Y0=input('输入初始条件向量Y0=[y0,Dy0,D2y0,....]='); p=roots(a);V=rot90(vander(p));c=V\Y0'; dt=input('dt=');tf=input('tf=') t=0: dt: tf;y=zeros(1,length(t)); fork=1: ny=y+c(k)*exp(p(k)*t);end plot(t,y),grid; holdon 运行此程序并输入: a=[3,5,7,1];dt=0.2;tf=8; Y0取[1,0,0];[0,1,0];[0,0,1],三种情况,运行结果如图2-2 图2-2程序运行结果 实验三连续信号卷积 实验目的: 掌握使用MATLAB实现信号的卷积运算、卷积的可视化 题目一: 卷积的计算 设计要求: 某LTI系统的冲激响应h(t)=e-0.1t,输入u(t)如图3-1(a)所示,初始条件为零,求系统的响应y(t). 参考程序: clear uls=input('输入u数组u=(例如ones(1,10))'); lu=length(uls); hls=input('输入h数组h=(例如exp(-0.1*[1: 15]))'); lh=length(hls); lmax=max(lu,lh); iflu>lhnu=0;nh=lu-lh; elseiflu elsenu=0;lh=0; end dt=input('输入时间间隔dt=(例如0.5)') lt=lmax; u=[zeros(1,lt),uls,zeros(1,nu),zeros(1,lt)]; t1=(-lt+1: 2*lt)*dt; h=[zeros(1,2*lt),hls,zeros(1,nh)]; hf=fliplr(h); y=zeros(1,3*lt); fork=0: 2*lt p=[zeros(1,k),hf(1: end-k)]; y1=u.*p*dt; yk=sum(y1); y(k+lt+1)=yk; subplot(4,1,1);stairs(t1,u) axis([-lt*dt,2*lt*dt,min(u),max(u)]),holdon ylabel('u(t)') subplot(4,1,2);stairs(t1,p) axis([-lt*dt,2*lt*dt,min(p),max(p)]) ylabel('h(k-t)') subplot(4,1,3);stairs(t1,y1) axis([-lt*dt,2*lt*dt,min(y1),max(y1)+eps]) ylabel('s=u*h(k-t)') subplot(4,1,4);stem(k*dt,yk) axis([-lt*dt,2*lt*dt,floor(min(y)+eps),ceil(max(y+eps))]) holdon,ylabel('y(k)=sum(s)*dt') ifk==round(0.8*lt)disp('暂停,按任意键继续'),pause elsepause (1), end end 运行结果如图3-1 图3-1程序运行结果 程序2: u=input('输入u数组u='); h=input('输入h数组h='); dt=input('输入时间间隔dt='); y=conv(u,h); plot(dt*([1: length(y)]-1),y),grid 题目二: LTI系统的零状态响应 设计要求: 设二阶连续系统,其特性可用常微分方程表示: d2y/dt2+2(dy/dt)+8y=u 求其冲激响应。 若输入为u=3t+cos(0.1t),求其零状态响应。 参考程序: clf,clear a=input('多项式分母系数向量a='); b=input('多项式分子系数向量b='); t=input('输入时间序列t=[0: dt: tf]'); u=input('输入序列u='); tf=t(end); dt=tf/(length(t)-1); [r,p,k]=residue(b,a); h=r (1)*exp(p (1)*t)+r (2)*exp(p (2)*t); subplot(2,1,1),plot(t,h);grid; y=conv(u,h)*dt; subplot(2,1,2); plot(t,y(1: length(t)));grid 运行该程序,取a=[1,2,8],b=1,t=[0: 0.1: 5]及u=3*t+cos(0.1*t),所得结果如图3-2 图3-2冲激响应和卷积法求输出 实验四典型周期信号的频谱表示 实验目的: 用MATLAB分析周期矩形脉冲、三角波脉冲的频谱 题目一: 周期信号的频谱 设计要求: 周期电流、电压(统称其为信号)f(t)可展开为直流与各次谐波之和,即 式中=2/T是基波角频率,T为周期。 4.1 周期信号的有效值定义为 4.2 若用各谐波有效值 则表示为 全波整流电压Us(t)的波形如图13所示,用傅立叶级数可求得 可写出其展开式为(它只含直流和偶次谐波,令k=2n) 若Um=100V,频率f=50Hz,(相应的T=0.02S,1=100rad/s),分别用式(6.1)和式(6.2)计算其有效值Us1和Us2(取至六次谐波),并求Us2的误差。 参考程序: clear,formatcompact Um=100;T=0.02;w=2*pi*5 方法一: 按傅立叶分析定义计算 N=input('取的谐波次数N='); t=linspace(-T/2,T/2);dt=T/99; u=Um*abs(sin(w*t)); fork=0: N a(k+1)=trapz(u.*cos(k*w*t))*dt/T*2; b(k+1)=trapz(u.*sin(k*w*t))*dt/T*2; A(k+1)=sqrt(a(k+1)^2+b(k+1)^2); end [[0: N]',[A (1)/2,A(2: end)]'] stem(0: N,[a (1)/2,A(2: end)]) Usll=sqrt(trapz(u.^2)*dt/T) Us12=sqrt(A (1)^2/4+sum(A(2: end).^2/2)) 方法二: 按推导出的全波傅立叶分量公式计算 Us21=Um*sqrt(trapz(sin(w*t).^2)*dt/T) Us22=4*Um/pi*sqrt(0.5^2+0.5*sum((1./(4*[1: 3].^2-1)).^2)) e=(Us21-Us22)/Us21 运行程序,按提示输入。 取得谐波次数N=10 半波信号的波形图如图4-1所示,半波信号的各谐波分量如图4-2所示 图4-1半波信号的波形图图4-2半波信号的各谐波分量 题目二: 非周期信号(方波)的频谱分析 设计要求: 如图4-3a的矩形脉冲信号,求其在=-40rad/s~40rad/s区间的频谱。 参考程序: cleartf=10; N=input('N='); dt=10/N;t=[1: N]*dt; f=[ones(1,N/2),zeros(1,N/2)]; wf=input('wf='); Nf=input('Nf='); w1=linspace(0,wf,Nf);dw=wf/(Nf-1); F1=f*exp(-j*t'*w1)*dt; w=[-fliplr(w1),w1(2: Nf)]; F=[fliplr(F1),F1(2: Nf)]; subplot(1,2,1),plot(t,f,'linewidth',1.5),grid subplot(1,2,2),plot(w,abs(F),'linewidth',1.5),grid 程序运行结果: 取时间分隔的点数N=256,需求的频谱宽度wf=40,需求的频谱点数Nf=64,得出图4-3b 图4-3a矩形脉冲信号图4-3b程序运行结果 若取时间分隔的点数N=64,需求的频谱宽度wf=40,需求的频谱点数Nf=256,得出图4-4 图4-4程序运行结果 实验五傅立叶变换性质研究 实验目的: 学习用MATLAB的Fourier变换函数,验证Fourier变换的一些性质 题目一: 方波分解为多次正弦波之和 设计要求: 如图5-1所示的周期性方波,其傅立叶级数为: f(t)=4/[sint+1/3(sin3t)+…+(1/(2k-1))sin(2k-1)t+…] k=1,2,…用MATLAB演示谐波合成情况。 参考程序: t=0: 0.01: 2*pi; y=sin(t);plot(t,y),figure(gcf),pause y=sin(t)+sin(3*t)/3;plot(t,y),pause y=sin(t)+sin(3*t)/3+sin(5*t)/5+sin(7*t)/7+sin(9*t)/9; plot(t,y) y=zeros(10,max(size(t)));x=zeros(size(t)); fork=1: 2: 19 x=x+sin(k*t)/k;y((k+1)/2,: )=x; end pause,figure (1),plot(t,y(1: 9,: )),grid line([0,pi+0.5],[pi/4,pi/4]) text(pi+0.5,pi/4,'pi/4') halft=ceil(length(t)/2);pause, figure (2),mesh(t(1: halft),[1: 10],y(: 1: halft)) 程序运行结果如图5-2 图5-1周期性方波 图5-2程序运行结果 题目二: 周期信号的滤波 设计要求: 如图5-3滤波电路,已知L=400mH,C=10F,R1=200.如激励电压us(t)为全波整流信号,Um=100V,1=100rad/s,求负载R两端的直流和各次谐波(它只含偶次谐波)分量。 图5-3滤波电路 参考程序: clear,formatcompact L=0.4;C=10e-6;R=200; Um=100;w1=100*pi; N=input('需分析的谐波次数2N=(键入偶数)'); n=1: N/2;w=[eps,2*n*w1]; Us=4*Um/pi*[0.5,-1./(4*n.^2-1)]; z1=j*w*L;z2=1./(j*w*C);z3=R; z23=z2.*z3./(z2+z3) UR=Us.*z23./(z1+z23) disp('谐波次数谐波幅度谐趣波相移(度)') disp([2*[0,n]',abs(UR)',angle(UR)'*180/pi]) 程序运行结果: 根据程序提示: 需分析的谐波次数2N=(键入偶数),如键入10后,得出结果。 实验六系统的零极点分析 实验目的: 学习使用MATLAB绘制连续系统的零极点图,分析系统的零极点 题目一: 利用MATLAB计算H(Z)的零极点与系统稳定性 设计要求: 已知一离散因果LTI系统的系统函数为: 利用MATLAB画出该系统的零极点分布图,求系统的单位冲激响应h[k]和幅频响应 |H(ej)|,并判断系统是否稳定。 分析: 根据已知的H(z),利用MATLAB中的zplane函数即可画出系统的零极点分布图。 而利用impz函数和freqz函数求系统的单位冲激响应和频率响应时,一般需要将H(z)改写为下列形式: 参考程序: b=[0121]; a=[1-0.5-0.0050.3]; figure (1);zplane(b,a); num=[0121]; den=[1-0.5-0.0050.3]; h=impz(num,den); figure (2);stem(h); xlabel('k');ylabel('h[k]');title('impulserespone'); [H,w]=freqz(num,den); figure(3);plot(w/pi,abs(H)); xlabel('ang.freq.\Omega(rad/s)');ylabel('|H(e^j^\Omega)|');title('magnituderesponse'); 运行结果如下图: 图6-1系统函数的零极点分布 图6-2系统的幅频响应图6-3系统的单位冲激响应 题目二: 求离散系统在各种输入下的响应 设计要求: 二阶巴特沃斯低通数字滤波器的频率响应 二阶巴特沃斯低通数字滤波器的系统函数(传递函数)为 求其频率响应并做图(0~2)。 参考程序: b=[1,2,1];a=[2+sqrt (2),0,2-sqrt (2)]; N=input('N='); w=[0: N-1]*pi/N; H=polyval(b,exp(i*w))./polyval(a,exp(i*w)); figure (1) subplot(211),plot(w,abs(H)),grid subplot(212),plot(w,unwrap(angle(H))),grid figure (2) subplot(211),semilogx(w,20*log10(abs(H))),grid subplot(212),semilogx(w,unwrap(angle(H))),grid 运行结果如图6-4 频率频率 图6-4线性频率特性对数频率特性 实验七离散信号分析 实验目的: 学习用MATLAB对离散信号分析的方法和编程方法。 题目一: 离散信号的MATLAB表述 设计要求: 编写MATLAB程序来产生下列基本脉冲序列: (1)单位脉冲序列,起点n0,终点nf,在ns处有一单位脉冲(n0nsnf)。 (2)单位阶跃序列,起点n0,终点nf,在ns前为0,在ns后为1(n0nsnf)。 (3)复指数序列。 参考程序: clear,n0=0;nf=10;ns=3; n1=n0: nf;x1=[zeros(1,ns-n0),1,zeros(1,nf-ns)]; n2=n0: nf;x2=[zeros(1,ns-n0),ones(1,nf-ns+1)]; n3=n0: nf;x3=exp((-0.2+0.5j)*n3); subplot(2,2,1),stem(n1,x1);title('单位脉冲序列') subplot(2,2,3),stem(n2,x2);title('单位阶跃序列') subplot(2,2,2),stem(n3,real(x3));line([0,10],[0,0]) title('复指数序列'),ylabel('实部') subplot(2,2,4),stem(n3,imag(x3));line([0,10],[0,0]), ylabel('虚部') 程序运行结果如图7-1 图7-1程序运行结果 题目二: 差分方程的通用递推程序 设计要求: 描述线性时不变离散系统的差分方程为 a1y(n)+a2y(n-1)+…+anay(n-na+1)=b1u(n)+b2u(n-1)+…+bnbu(n-nb+1) 编写解上述方程的通用程序。 参考程序: a=input('差分方程左端的系数向量a=[a (1),...a(na)]='); b=input('差分方程右端的系数向量b=[b (1),...b(na)]='); u=input('输入信号序列u='); na=length(a);nb=length(b);nu=length(u); s=['起算点前',int2str(na-1),'点y的值=[y(',int2str(na-2),'),...,y(0)]=']; ym=zeros(1,na+nu-1);ym(1: na-1)=input(s); um=[zeros(1,na-2),u]; forn=na: na+nu-1 ys=ym(n-1: -1: n-na+1);us=um(n: -1: n-nb+1); ym(n)=(b*us'-a(2: na)*ys')/a (1); end y=ym(na: na+nu-1);stem(y),gridon line([0,nu],[0,0]) 执行此程序,输入 a=[1,0.1,0.15,-0.225];b=[3,7,1] u=exp(0.1*[1: 20]);及y
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 抽样