MATLAB实验.docx
- 文档编号:11134543
- 上传时间:2023-02-25
- 格式:DOCX
- 页数:27
- 大小:212.09KB
MATLAB实验.docx
《MATLAB实验.docx》由会员分享,可在线阅读,更多相关《MATLAB实验.docx(27页珍藏版)》请在冰豆网上搜索。
MATLAB实验
实验一MATLAB基本运算
(五)矩阵的运算
运算符:
+(加)、-(减)、*(乘)、/(右除)、\(左除)、^(乘方)、’(转置)等;
常用函数:
det(行列式)、inv(逆矩阵)、rank(秩)、eig(特征值、特征向量)、rref(化矩阵为行最简形)
例5:
>>A=[20–1;132];B=[17–1;423;201];
>>M=A*B%矩阵A与B按矩阵运算相乘
>>det_B=det(B)%矩阵A的行列式
>>rank_A=rank(A)%矩阵A的秩
>>inv_B=inv(B)%矩阵B的逆矩阵
>>[V,D]=eig(B)%矩阵B的特征值矩阵V与特征向量构成的矩阵D
>>X=A/B%A/B=A*B-1,即XB=A,求X
>>Y=B\A%B\A=B-1*A,即BY=A,求Y
(六)上机练习
1.练习数据和符号的输入方式,将前面的命令在命令窗口中执行通过;
2.输入A=[715;256;315],B=[111;222;333],在命令窗口中执行下列表达式,掌握其含义:
A(2,3)A(:
2)A(3,:
)A(:
1:
2:
3)A(:
3).*B(:
2)A(:
3)*B(2,:
)A*BA.*BA^2A.^2B/AB./A
3.输入C=1:
2:
20,则C(i)表示什么?
其中i=1,2,3,…,10;
>>c=1:
2:
20
>>i=1:
10
>>c(i)
4.查找已创建变量的信息,删除无用的变量;
5.创建如下变量:
在0-3均匀的产生10个点值,形成10维向量>>A=linspace(0,3,10))
3*3阶单位距阵>>B=eye(3),随机距阵:
>>randn(3,3),魔方距阵>>magic(3),全0距阵>>zeros(3,3),全1距阵>>E=ones(3,3),
6求方程组的解
>>A=[122;212;345];
B=[256];
x=A/B
x=
0.3692
0.3231
0.8615
实验二MATLAB程序设计
三、实验内容:
1、熟悉MATLAB程序编辑与设计环境
2、用for循环语句实现求1~100的和。
>>sum=0;
fori=1:
100
sum=sum+i;
end
>>sum
3、用for循环语句实现编写一个求n阶乘的函数文件。
functiony=a(n)
y=1;
fori=1:
n
y=y*i;
end
4、 利用for循环求1!
+2!
+3!
+ … +5!
的值
>>sum=0;y=1;
fori=1:
5
y=y*i;
sum=sum+y;
end
>>sum
sum=
153
>>
5、已知一维数组A=[2,4,5,8,10],B=[4,6,9,3,4],用for循环语句实现
,
求和函数可用sum()。
>>A=[245810];
B=[46934];
sum=0;
fori=1:
5
C(i)=(A(i)*B(5-i+1));
sum=sum+C(i);
end
>>sum
sum=
153
>>
6、编写程序,计算1+3+5+7+…+(2n+1)的值(用input语句输入n值)。
>>sum=0;
n=input('Pleaseinputanumber:
');
t=2*n+1;
fori=1:
2:
t
sum=sum+i;
end
四运行下列参考例题程序,观察运行结果:
1.用for循环计算100!
和
解:
s=0;
p=1;
form=1:
100
s=s+m;
p=p*m;
end
disp(['100!
=',num2str(p)])
disp(['sigma(1-100)=',num2str(s)])
2.编程计算函数y=|x|+|x-2|,x从屏幕输入
解:
x=input('x=')
ifx<0
y=-x-(x+2);
elseif0 y=2; elsey=2*x-2; end disp(['y=',num2str(y)]) 3.分别用for循环和while循环求1000以内所有奇数之和。 解: 方法一用for循环 s=0; form=1: 2: 999 s=s+m; end disp(['s=',num2str(s)]) 方法二用while循环 s=0; m=1; whilem<1000 s=s+m; m=m+2; end disp(['s=',num2str(s)]), 4.随机产生0~100之间的20个数,求其中最大数和最小数。 要求: 方法1: 采用循环结构实现 方法2: 调用MATLAB的max函数、min函数来实现。 方法二: 用max、min函数 A=randint(1,20,[0,100]) a=max(A); b=min(A); disp(['max=',num2str(a)]) disp(['min=',num2str(b)]) 5.从屏幕输入两个正整数,求它们的最小公倍数。 法二: 直接调用函数 x=input('x='); y=input('y='); k=lcm(x,y); disp(['最小公倍数是',num2str(k)]); 实验三 MATLAB的图形绘制 三、实验内容 (一)二维曲线绘图基本指令演示。 plot(t), plot(Y), plot(Y,t) ,以观察产生图形的不同。 t=(0: pi/50: 2*pi)'; k=0.4: 0.1: 1; Y=cos(t)*k; plot(t,Y) (二)用图形表示连续调制波形Y=sin(t)sin(9t) 及其包络线。 t=(0: pi/100: pi)'; y1=sin(t)*[1,-1]; y2=sin(t).*sin(9*t); t3=pi*(0: 9)/9; y3=sin(t3).*sin(9*t3); plot(t,y1,'r: ',t,y2,'b',t3,y3,'bo') axis([0,pi,-1,1]) (三)在一个图形窗口绘制正弦和余弦曲线,要求给图形加标题“正弦和余弦曲线”, X轴Y轴分别标注为“时间t”和“正弦、余弦”,在图形的某个位置标注“sin(t)”“cos(t)”,并加图例,显示网格,坐标为正方形坐标系。 >>t=0: pi/100: 2*pi; y1=sin(t);y2=cos(t); plot(t,y1,'r-',t,y2,'k--'); legend('sin(t)','cos(t)'); axissquare;%设图形为正方形 gridon title('正弦和余弦曲线') text(1,cos (1),'\leftarrowcos(t)')%左箭头 text(2.8,sin(2.8),'\leftarrowsin(t)') xlabel('时间t');ylabel('正弦、和余弦') (四)绘制向量x=[1 3 0.5 2.5 2]的饼形图,并把3对应的部分分离出来。 x=[130.52.52]; pie(x,[01000]) (五)绘制参数方程x=t,y=sin(t),z=cos(t)在t=[0 7]区间的三维曲线。 >>t=0: 0.01: 7; x=t; y=sin(t); z=cos(t); plot3(x,y,z) gridon (六)用hold on命令在同一个窗口绘制曲线y=sin(t),y1=sin(t+0.25) ,y2=sin(t+0.5),其中t=[0 10] >>t=0: pi/100: 10; y=sin(t); plot(y) holdon y1=sin(t+0.25); plot(y1) holdon y2=sin(t+0.5); plot(y2) holdon (七)观察各种轴控制指令的影响。 演示采用长轴为3.25,短轴为1.15的椭圆。 注意: 采用多子图。 参考程序: t=0: 2*pi/99: 2*pi; x=1.15*cos(t);y=3.25*sin(t); subplot(2,3,1),plot(x,y),axis normal,grid on, title('Normal and Grid on') subplot(2,3,2),plot(x,y),axis equal,grid on,title('Equal') subplot(2,3,3),plot(x,y),axis square,grid on,title('Square') subplot(2,3,4),plot(x,y),axis image,box off,title('Image and Box off') subplot(2,3,5),plot(x,y),axis image fill,box off title('Image and Fill') subplot(2,3,6),plot(x,y),axis tight,box off,title('Tight') 实验四MATLAB在《信号与系统》中的应用 二、实验内容 1.基本信号的表示及可视化 (1)在MATLAB命令窗口输入funtool,在弹出的figureNo.3 产生以下信号波形: 3sin(x),5exp(-x),sin(x)/x,1-2abs(x)/a,sqrt(a*x)(a=2) (2)产生50hz的正弦波的程序 t=0: 0.001: 50; y=sin(2*pi*50*t); plot(t(1: 50),y(1: 50)) title('sin') 或者>>t=0: 0.02/100: 0.04; plot(t,sin(100*pi*t)) (3)产生加入随机噪声的正弦波: t=0: 0001: 50; y=sin(2*pi*50*t); s=y+randn(size(t)); plot(t(1: 50),s(1: 50)) (4)产生周期方波的的程序: (f=30hz) t=0: .0001: .0625; y=SQUARE(2*pi*30*t); plot(t,y) (5)产生周期锯齿波 t=0: 0.001: 0.25; y=sawtooth(2*pi*30*t); plot(t,y) axis([00.2-11]) 2.试用MATALB绘制两正弦序列 的时域波形,观察它们的周期性,并验证是否与理论分析结果相符。 (提示: 并非所有的离散时间正弦序列信号都是周期的,不同于连续时间正弦信号) 3、用MATLAB画出下图中的信号的卷积波形。 (a) (b) 解: (1)参考程序: dt=0.01; t=-4: dt: 4; L=length(t); tp=[2*t (1): dt: 2*t(L)]; f1=2*rectpuls(t,2); f2=t.*rectpuls(t,4); y=dt*conv(f1,f2); subplot(3,1,1),plot(t,f1,'linewidth',2),ylabel('f1(t)'); axis([t (1)t(L)-48]);grid, subplot(3,1,2),plot(t,f2,'linewidth',2),ylabel('f2(t)'); axis([t (1)t(L)-48]);grid subplot(3,1,3),plot(tp,y,'linewidth',2),ylabel('y(t)'); axis([t (1)t(L)-48]);grid %f1=2*rectpuls(t+1.5)+2*rectpuls(t-1.5); %f2=2*rectpuls(t-2,4); %f1=2*rectpuls(t,2); %f2=t.*rectpuls(t,4); %用MATLAB计算连续信号的卷积。 % dt=0.01; t=-1: dt: 5; L=length(t); tp=[2*t (1): dt: 2*t(L)]; f1=rectpuls(t-0.5); f2=0.5*rectpuls(t-2,2); y=dt*conv(f1,f2); subplot(3,1,1),plot(t,f1,'linewidth',2),ylabel('f1(t)'); axis([t (1)t(L)-0.21.2]);grid, subplot(3,1,2),plot(t,f2,'linewidth',2),ylabel('f2(t)'); axis([t (1)t(L)-0.21.2]);grid subplot(3,1,3),plot(tp,y,'linewidth',2),ylabel('y(t)'); axis([t (1)t(L)-0.21]);grid %用MATLAB计算连续信号的卷积。 dt=0.01; t=-2: dt: 4; L=length(t); tp=[2*t (1): dt: 2*t(L)]; f1=2*rectpuls(t-0.5); f2=2*tripuls(t-1,2,1); y=dt*conv(f1,f2); subplot(3,1,1),plot(t,f1,'linewidth',2),ylabel('f1(t)'); axis([t (1)t(L)-0.52.5]);grid, subplot(3,1,2),plot(t,f2,'linewidth',2),ylabel('f2(t)'); axis([t (1)t(L)-0.52.5]);grid subplot(3,1,3),plot(tp,y,'linewidth',2),ylabel('y(t)'); axis([t (1)t(L)-0.53.5]);grid 4、 (1)用“拉普拉斯变换和系统函数的曲面图演示”程序,观察零极点三维图,加深对系统零极点的理解。 考虑以下系统函数: (a) ;(b) ;(c) 。 (2)用“连续系统零极点和冲激响应的关系”程序,观察零极点对冲激响应的影响,加深对系统稳定性的理解。 画出下列系统的零极点分布图和冲激响应,确定系统的稳定性。 (a) ;(b) ; (c) ;(d) ; (e) ;(f) 参考程序 t=linspace(0,15,200); a1=[1,0,1]; b1=[1,2,1]; figure (1), subplot(221) pzmap(b1,a1),title('零极点分布') subplot(222) impulse(b1,a1,t),title('冲激响应') p2=[-3,-2,1]; a2=poly(p2); b2=[1,0,0]; subplot(223) pzmap(b2,a2),title('零极点分布') subplot(224) impulse(b2,a2,t),title('冲激响应') t=linspace(0,15,200); a3=[1,1,0]; b3=[1,-2]; figure (2) subplot(221) pzmap(b3,a3),title('零极点分布') subplot(222) impulse(b3,a3,t),title('冲激响应') p4=[0,-2,j,-j]; a4=poly(p4);%ploly多项式系数的求解 b4=[2,0,8]; subplot(223) pzmap(b4,a4),title('零极点分布') subplot(224) impulse(b4,a4,t),title('冲激响应') a5=[1,4,0,0]; b5=[16]; figure(3) subplot(221) pzmap(b5,a5),title('零极点分布') subplot(222) impulse(b5,a5,t),title('冲激响应') p6=[0,j,-j]; a6=poly(p6); b6=[2,2]; subplot(223) pzmap(b6,a6),title('零极点分布') subplot(224) impulse(b6,a6,t),title('冲激响应') 说明: 在s域,系统函数H(s)的极点位于s左半平面,系统是稳定的。 极点在虚轴上有单极点,系统是临界稳定。 极点在s右半平面或在虚轴上有重极点,系统不稳定。 故(a)临界稳定、(b)不稳定、(c)稳定、(d)临界稳定、(e)不稳定、(f)临界稳定 5、下图所示为 的零极点分布图,试判别它们是低通、高通、带通、带阻中哪一种网络? 零点和极点的数据自己设定。 参考程序 w=linspace(0,200,200); p1=[-10-j*25,-10+j*25]; a1=poly(p1); b1=[1,0]; figure (1),pzmap(b1,a1),title('零极点分布') figure (2),freqs(b1,a1,w),title('频率响应') p2=[-20-j*40,-20+j*40]; a2=poly(p2); z1=[j*50,-j*50]; b2=poly(z1); figure(3),pzmap(b2,a2),title('零极点分布') figure(4),freqs(b2,a2,w),title('频率响应') p3=[-10-j*20,-10+j*20]; a3=poly(p3); b3=[1,0,0]; figure(5),pzmap(b3,a3),title('零极点分布') figure(6),freqs(b3,a3),title('频率响应') p4=[j*40,-j*40]; a4=poly(p4); z4=[-j*50,-j*50]; b4=poly(z4); figure(7),pzmap(b4,a4),title('零极点分布') figure(8),freqs(b4,a4),title('频率响应') 6.已知描述某连续系统的微分方程为: ,试用MATLAB: (1)绘出该系统在0~30s范围内,并以时间间隔0.01s取样的冲激响应和阶跃响应的时域波形; (2)求出系统在0~30s范围内,并以时间间隔0.01s取样的冲激响应和阶跃响应的数值解。 7.已知某一连续时间信号为 ,试绘出它的时域波形响应的频谱图。 实验五MATLAB在《数字信号处理》课程中的应用 (4学时) 1.产生正弦序列。 2判断下述各序列是否为周期的,如果是周期的,试确定其周期: (a)f(k)=sin( )-2cos( ); (b)f(k)=cos( ) 解: (1)程序: figure (1) k=-35: 35; f1=sin(k*pi/4)-2*cos(k*pi/6); subplot(211) stem(k,f1) subplot(212) f2=cos(3*k/7-pi/8); stem(k,f2) 3已知离散系统的系统函数为 ,绘出其零、极点分布图;求系统的频率响应和单位脉冲响应,试编程。 >>b=[1-0.80]; a=[1-10.25]; figure (1) zplane(b,a) title('零极点分布图') delta=[1zeros(1,63)]; h=impz(b,a,64); figure (2) stem(h) title('单位脉冲响应') figure(3) [hf]=freqz(b,a,256,1); hr=abs(h); hph=angle(h)*180/pi; subplot(2,1,1) plot(f,hr); xlabel('归一化频率') ylabel('幅度') title('频率响应') subplot(2,1,2) plot(f,hph); xlabel('归一化频率') ylabel('相位') title('相频响应') 4已知序列 求两序列的卷积。 >>a=[1234]; b=[1112]; x=conv(a,b) stem(x); title('线性卷积') 给定两个序列x(n)=[2,1,1,2],h(n)=[1,-1,-1,1]。 首先直接在时域计算两者的线性卷积;其次用FFT快速计算二者的线性卷积,验证结果。 >>x=[2,1,1,2]; h=[1-1-11]; XK=fft(x,N); HK=fft(h,N); YK=XK.*HK;yn=ifft(YK,N); ifall(imag(x)==0)&(all(imag(h)==0)) yn=real(yn); end y=conv(x,h); n=0: N-1; subplot(2,1,1);stem(y); ylabel('时域计算'); subplot(2,1,2);stem(yn,'.'); ylabel('FFT快速'); 5已知序列 分别求两序列4点、8点的DFT。 >>a=[1234]; b=[1112]; y1=conv(b,a); subplot(2,1,1) stem(y1); x1=fft(b,7); x2=fft(b,7); x=x1.*x2; x=ifft(x) subplot(2,1,2) stem(x); title('DFT') 6用双线性变换法设计一个巴特沃斯低通IIR数字滤波器。 设计指标参数为: 在通带截止频率为0.2π,最大衰减为1dB;阻带截止频率为0.3π,最小衰减为15dB。 画出幅频响应特性曲线。 T=1;Fs=1/T;wpz=0.2;wsz=0.3;wp=2*tan(wpz*pi/2);ws=2*tan(wsz*pi/2);rp=1;rs=15;%预畸变校正转换指标 [N,wc]=buttord(wp,ws,rp,rs,'s');%设计过渡模拟滤波器 [B,A]=butter(N,wc,'s');[Bz,Az]=bilinear(B,A,Fs);%用双线性变换法转换成数字滤波器 fk=0: 1/512: 1; wk=2*pi*fk; Hk=freqs(B,A,wk); figure (1); subplot(2,1,1); plot(fk,20*log10(abs(Hk))); gridon; title('模拟滤波器幅值响应曲线'); xlabel('\omega/\pi'); ylabel('幅度(dB)'); axis([0,1,-100,5]); [Nd,wdc]=buttord(wpz,wsz,rp,rs);%调用buttord和butter直接设计数字滤波器[Bz,Az]=butter(N,wdc);wk=0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 实验