资源描述
matlab实验指导书
———————————————————————————————— 作者:
———————————————————————————————— 日期:
2
个人收集整理 勿做商业用途
实验1 熟悉软件环境和基本的操作
一、实验目的
熟悉MATLAB运行环境和了解基本操作。
二、实验内容
MATLAB的启动、操作界面组成
1.熟悉MATLAB图形界面
打开MATLAB,单击命令窗口菜单栏中的各个下拉菜单按钮,试使用各个按钮引出的选项;把光标移动到工具栏中各个图标上(不要按下),查看它们与菜单选项的对应情况。
2.熟悉MATLAB的基本命令。
在命令窗口中分别键入以下内容,以建立若干变量:
A=[1 2;3 4;5 6]
B=[7,8,9;10,11,12]
C=[5 6 7;1 8 3];
D=B+C
问题1:如何输入一个矩阵变量的行元素和列元素?
问题2:观察每行命令后是否加“;”,对显示执行结果有什么区别?
键入以下命令或执行操作,查看效果,并体会命令功能:
(1)工作空间管理。
who
whos
clear A
(2)路径编辑。
试用菜单File/Set Path将D盘根目录及其下的所有子目录和文件夹包含进来,设为搜索路径。
问题3:当前路径是什么?
问题4:搜索路径是什么意思?
(3)联机帮助
help pause
helpwin
(4)窗口清理。
先画出正弦函数在0-2π之间的图形,再用以下各种窗口清理命令,看每项命令都清除了什么。
figure
plot(sin(0:0。1:6.28))
cla
clf
close
注意:
figure为打开一幅图形图像窗口
close为关闭当前图形图像窗口,而close all为关闭所有已打开的图形图像窗口。
(5)MATLAB基本矩阵操作演示
playshow intro
(6)MATLAB图形绘制演示
playshow buckydem
(7)MATLAB数学功能演示(快速傅氏变换)
playshow fftdemo
(8)MATLAB三维造型演示(茶壶演)
playshow teapotdemo
3.打开MATLAB命令窗口,键入demos,观看演示程序。
三、思考题
1.将pi分别用15位数字格式、分数格式、十六进制格式、5位数字的科学计数法显示.
实验2 矩阵的建立和基本运算(1)
一、 实验目的
熟悉和掌握MATLAB中关于矩阵变换以及矩阵运算的各种命令.
二、 实验内容
1.数、数组、矩阵的输入
(1)数的输入
a=5
b=2-5i
(2)数组的输入
c=[1,3,5,7,9,11] %元素之间要用逗号用空格分开
d=1:2:11
e=linspace(1,11,6)
体会以上输入有什么区别和联系.
(3)矩阵的输入
A=[2,3,5;1,3,5;6,9,4] %行之间要用分别隔开
2.矩阵大小的测试和定位
A=[3,5,6;,2,5,8;3,5,9;3,7,9]
[n,m]=size(A)
A(1,3)
3. 矩阵的块操作
A(2,:)
A([1,3],:)
A(2:3,1:2)
问题2。1 如何将A的2,3列互换?
4.矩阵的四则运算
A=[3,5,8;—2,3,6;1,4,9]
B=rand(3,3)
C=A+B
D=A—B
E=A*B
问题2.2 E为矩阵A、B的乘积运算结果,如果要求E的结果为A和B对应元素相乘的结果,应输入什么命令?
F=A/B
问题2。3 如果要求F为A,B对应元素作除法运算的结果,应输入什么命令?
5.矩阵的点运算
A=[1 2;3 4];
B=[5 6;7 8];
A*B
A。*B
A^2
A。^2
6.矩阵的逻辑运算
A=[1 2;3 4]; B=[0 6; 0 8]; A | B
A&B
xor(A,B)
a=—5;b=-10;(b~=0)&&(a/b>5)
(b= =0)||(a/b〉0)
~a
三、思考题
1.输入一个矩阵A,取出A的第2行第1列的元素;取出A的第1,3,4列的所有元素;让A的第1列和第3列互换;删除A的第二列。
2.用MATLAB可以识别的格式输入下面两个矩阵.
再求出它们的乘积矩阵C,并将C矩阵的右下角2×3子矩阵赋给D矩阵,赋值完成之后,调用相应的命令,查看MATLAB工作空间的情况。
3。已知,B=,求
i)A*B-2A ii)A*B iii)A。*B iv)A*B-B*A
4.已知x=[1 2 3],y=[4 5 6],试计算z=x.*y、x./y和x。\y。
5。 解线性方程:
6.解方程组:
实验3 矩阵的建立和基本运算(2)
一、实验目的
熟悉和掌握MATLAB中各种矩阵生成函数。
二、 实验内容
1.随机矩阵的产生
A=rand(5,5) %产生5×5均匀分布随机矩阵
B=randn(5,5) %产生5×5正态分布随机矩阵
2。 单位矩阵的产生
A=eye(3,3) %产生3×3单位阵
3. 全零、全1矩阵的产生
A=zeros(3,3)
B=ones(3,3)
4. 矩阵的翻转操作
A=rand(5,4)
flipud(A) %进行上下翻转
fliplr(A) %进行左右翻转
rot90(A) %逆时针旋转90度
5。 矩阵线性代数方面的运算
A=[1,3,5;4,9,3;2,0,5]
A’ %A转置
det(A) %A的行列式,A必须是方阵
rank(A) %A的秩
inv(A) %A的逆
问题3.1 矩阵A在什么时候不能求逆?
eig(A) %A的特征矢量
[X,D]=eig(A) %A的特征矢量及特征值
A^2 %矩阵A的幂运算
6. 构造多维数组
A1=[1,2,3;4,5,6;7,8。9];
A2=A1’,A3=A1—A2
cat(1,A1,A2,A3)
cat(2,A1,A2,A3)
cat(3,A1,A2,A3)
7. 字符串变量及其处理
s=’Hello'
s=[s;’Hello']
whos s
n=input(’How many apples') %先显示单引号中的字符串,向用户提示,再把%用户键入的数字或表达式赋给n
三、思考题
1.产生3×4维全1矩阵,产生4×2维的随机矩阵,产生4×4的单位矩阵。
2.将A的第2行元素扩大2倍后作为A的第3行元素.
3.输入任意矩阵A、B(它们的元素个数相等),命令A(: )和A(: )=B会产生什么结果?
4.A=[1,3,5; 5,8,3;6,1,6],B=[3,6;9,3;4,7],C=[3,7,9;4;5,7],D=2:6,体会命令[A,B],[A;C],[A,B;D]所产生的结果,学习由小矩阵生成大矩阵的方法。
5.计算表达式的值。
6.已知矩阵A=[5 2;9 1],B=[1 2;9 2],做简单的关系运算A〉B,A==B,A〈B,并做逻辑运算(A==B)&(A<B),(A==B)&(A〉B)。
实验4 图形绘制(1)
一、实验目的
熟悉和掌握MATLAB基本的二维图形绘制函数。
二、实验内容
1.绘制简单的二维图形
t=0:0.1:2*pi
y=sin(t)
plot(t,y)
2.一个坐标系绘制多幅图形
t=0:0。1:2*pi; y1=sin(t); y2=cos(t); y3=y1.*y2;
plot(t,y1,’--r’,t,y2,':g’,t,y3,'x’)
plot(t,y1,’—c’,t,y2,’-.y',t,y3,’d')
3.图形标识和坐标控制
t=0:0.1:2*pi
y=sin(t)
plot(t,y)
grid on,
xlabel('时间’),ylabel(’幅值'),title('正弦曲线') axis([—1,8,-1。2,1。2])
4。交互式图形指令
axis([0,5,0,5]);hold on;box on;
x=[];y=[];
while(1)
[x1,y1,button]=ginput(1);
if(button~=1) break; end
plot(x1,y1,’o');x=[x,x1];y=[y,y1];
end
line(x,y);hold off;
gtext('用左键取点,然后划线’);
三、思考题
1.在同一坐标系绘制t3,-t2,t2sint在[0,2π]内的曲线图。
2.在同一图形窗口画三个子图,要求使用指定gtext、axis、legend、title、xlabel和ylabel:
(1)
(2)
(3)
3.绘制的图像,要求用蓝色的星号画图;并且在同一坐标轴中画出其包络线的图像,用红色的点划线画图。
实验5 图形绘制(2)
一、实验目的
熟悉和掌握MATLAB的多种二维图形绘制函数。
二、实验内容
1.二维图形绘制函数
x=—2:0。1:2; y=sin(x);
subplot(221),stairs(x,y), title('(a) stairs')
subplot(222),compass(cos(x),y),title('(b) compass')
y1=randn(1,10000);
subplot(223),hist(y,20),title('(c) hist’)
subplot(224),
[u,v]=meshgrid(—2:0。2:2,—1:0.15:1);
z=u。*exp(-u。^2—v。^2); [px,py]=gradient(z,0。2,0.15);
contour(u,v,z),hold on
quiver(u,v,px,py),hold off,axis image
title('(d) quiver’)
2.误差限图绘制函数
x=-2:0.2:2;
y=sin(x);
L=rand(1,length(x))/10;
U=rand(1,length(x))/10;
errorbar(x,y,L,U,':')
3.复数图绘制函数
z=[2+3i,2+2i,1-2i,4i,-3];
x=[2,2,1,0,-3];
y=[3,2,—2,4,0];
subplot(1,2,1),compass(z,’r’)
subplot(1,2,2),feather(x,y,’b')
4.条形图与直方图绘制函数
x=-pi:0。15:pi; y=sin(x);
subplot(2,1,1), H=bar(x,y);
xx=get(H,'xdata');
yy=get(H,’ydata’);
subplot(2,1,2),plot(xx,yy);
三、思考题
1.取合适的θ范围,在同一图形窗口绘制下4幅极坐标图。
(1)
(2)
(3)
(4)
2.某校共有1560名学生,其中计算机系有213名学生,外语系有387名学生,音乐系有220名学生,美术系有280名学生,中文系有280名学生,理科系180名学生,分别画出饼图、条形图示意学生分布。
实验6 图形绘制(3)
一、实验目的
熟悉MATLAB的三维图形绘制函数。
二、实验内容
1.标准球面绘制程序1。
subplot(2,2,1),sphere(3);
title(’n=3'),axis equal
subplot(2,2,2), sphere(6);
title('n=6’),axis equal
subplot(2,2,3), sphere(10)
title('n=10’),axis equal
subplot(2,2,4), sphere(15);
title('n=15’),axis equal
2.标准球面绘制程序2。
t=linspace(pi/2,3。5*pi,50);R=cos(t)+2;
subplot(2,2,1);
cylinder(R,3), title(’n=3');
subplot(2,2,2)
cylinder(R,6),title('n=6');
subplot(2,2,3)
cylinder(R),title(’n=20')
subplot(2,2,4)
cylinder(R,50),title('n=50')
3。绘制三维网格图
绘制下面给出的二元函数的网格图.
[x,y]=meshgrid(—8:0。5:8,—10:0。5:10);
R=sqrt(x。^2+y.^2)+eps;
z=sin(R)./R;
mesh(x,y,z);
4.绘制三维网格图
x=-pi:0.15:pi; y=sin(x);
subplot(2,1,1), H=bar(x,y);
xx=get(H,’xdata’);
yy=get(H,'ydata’);
subplot(2,1,2),plot(xx,yy);
三、思考题
1.试绘制出 的三维曲面图和三视图。
2.绘出函数的慧星效果图.
实验7 程序设计(1)
一、实验目的
熟悉和掌握MATLAB的m文件程序和程序设计.
二、实验内容
1.for 循环结构
for i=1:10;
x(i)=i;
end;
x
2.while循环结构
Fibonaci数组的元素满足Fibonacci规则:且。现要求该数组中第一个大于10000的元素。
a(1)=1;a(2)=1;i=2;。
while a(i)<=10000
a(i+1)=a(i-1)+a(i);
i=i+1;
end;
i ,a(i)
3.if-else-end结构
cost=10;number=12;
if number〉8
sums=number*0。95*cost;
end,sums
4.M文件的一般结构
(A)编写一个画任意半径彩色线型的圆。(B)完整函数文件的基本结构。(C)函数文件各基本组成部分的作用.
function sa=functiondemo(r,s)
% CIRCLE
if nargin〉2
error(’输入变量太多.’);
end
if nargin==1
s=’b';
end;
clf;
t=0:pi/100:2*pi;
x=r*exp(i*t);
if nargin==2
plot(x,s);
else
sa=pi*r*r;
fill(real(x),imag(x),s)
end
axis('square’)
三、思考题
1.编写函数文件,分别用for和while循环语句编写程序,求出 之和,并比较算法的运算时间。
2.用MATLAB语言实现下面分段函数:
x由键盘输入。
3。用for-end循环求出从100—200之间的所有素数。
4。用while-end循环求1-100的所有数值和。
实验8 程序设计(2)
一、实验目的
熟悉和掌握MATLAB程序编写和调试的常用函数。
二、实验内容
1.input:请求用户输入信息
reply = input('请输入一个字符 ’,’s');
2.menu:为用户输入选择菜单
t=0:0.1:2*pi;
y1=sin(t);
y2=cos(t);
y3=y1。*y2;
k=menu('菜单',’菜单1’,'菜单2',’菜单3');
if k==1
plot(t,y1,'r’)
elseif k==2
plot(t,y2,'g')
else
plot(t,y3,'b')
end
3。pause:程序暂停执行
pause(5) % 程序暂停执5秒
4.global:定义全局变量
假设工作空间中已有全局变量a,执行完下述函数后,观看工作空间中的变量有何变化。
function z=example9_1()
global a;
a=5;
b=10;
z=a+b;
三、思考题
1. 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
2.求之值,其中a是一个数字.例如:2+22+222+2222+22222(此时n=5),a和n由键盘输入。
3.编写程序,判断某一年是否为闰年,闰年的条件是:(1)能被4整除,但不能被100整除的年份都是闰年,如1996年和2004年;(2)能被100整除,又能被400整除的年份是闰年,如1600年和2000年。不符合这两个条件的年份不是闰年.(提示:rem命令可以计算两数相除后的余数。)
实验9 MATLAB应用
一、实验目的
了解MATLAB在曲线拟合、插值和解线性方程方面的应用
二、实验内容
1.曲线拟合
已知离散点上的数据集[(x1,y1),(x2,y2),…,(xn,yn)],求得一解析函数y=f(x),使f(x)在原离散点xi尽可能接近给定yi值,这一过程叫曲线拟合,最常用的曲线拟合是最小二乘拟合,拟合结果可使误差的平方和最小,即找出使最小的f(x)。
x=[0.5,1.0,1。5,2.0,2.5,3.0];
y=[1.75,2。45,3。81,4.80,7.00,8。60];
p=polyfit(x,y,2);
x1=0.5:0。05:3.0;
y1=polyval(p,x1);
plot(x,y,’*r’,x1,y1,’-b’);
2.一维插值
year=1900:10:2010
product=[75.995,91。972,105。711,123.203,131。669,..。
150.697,179。232,203。212,226.505,249。633,256.344,267。893];
p2005=interp1(year,product,2005)
x=1900:1:2010
y=interp1(year,product,x,’cubic');
plot(year,product,'o',x,y)
3。解常微分方程
二阶微分方程
可改写成两个耦合的一阶微分方程
模拟这个系统的第一步是建立微分方程的M文件,随意取名作difeq.m,其内容是:
function xdot=difeq(t,x)
xdot=zeros(2,1);
xdot(1)=x(1).*(1-x(2)。^2)—x(2);
xdot(2)=x(1);
为了在的范围内模拟该方程,可引用ode45函数求解并画出其图形。
t0=0; tf=20;
x0=[0 0.25];
[t,x]=ode23(’difeq’,t0,tf,x0);
plot(t,x)
三、思考题
1。求定积分
式中
2。求解描述振荡器的经典的Ver der Pol微分方程,,。
3。已知x=[1。2 1。8 2.1 2.4 2。6 3.0 3.3],y=[4.85 5.2 5.6 6.2 6。5 7。0 7。5],求对x和y进行6阶多项式拟合的系数.
附录 MATLAB实验报告格式
报告人: 年级: 学号:
实验日期: 报告完成日期:
一、实验名称
××××××
二、实验目的:
××××××
三、实验内容:
(结合实验指导书和课本,列出自己在本次实验中练习或验证了什么)
四、回答问题:
(回答实验指导书中提出的问题)
五、思考题:
(回答或编程求解每个实验后列出的思考题)
六、遇到的问题及解决:
(列出实验和求解思考题的过程中遇到的问题及解决方法)
七、体会:
(小结出从本次实验中学会了什么,难点是什么,有什么想法和体会)
22
展开阅读全文