M A T L A B应用实验指
导书结果
公司内部档案编码:[OPPTR-OPPT28-OPPTL98-OPPNN08]
???????????????????????? MATLAB语言实验指导书????????????????????????
中国矿业大学信息与电气工程学院
2014年3月
实验一 MATLAB 工作环境熟悉及基本运算
一、实验目的:熟悉MATLAB 的工作环境,学会使用MATLAB 进行一些简
单的运算。掌握基本的矩阵运算及常用的函数。 二、实验内容:MATLAB 的启动和退出,熟悉MATLAB 的桌面
(Desktop ),包括菜单(Menu )、工具条 (Toolbar )、命令窗口(Command Window)、历史命令窗口、工作空间(Workspace)等;完成一些基本的矩阵操作;学习使用在线帮助系统。 三、实验步骤:
1、启动MATLAB ,熟悉MATLAB 的桌面。
2、在命令窗口执行命令完成以下运算,观察workspace 的变化,记录运
算结果。
(1)(365-52?2-70)?3 = (2)area=pi*^2 =
(3)已知x=3,y=4,在MATLAB 中求z :
()
2
3
2y x y x z -== 576 (4)将下面的矩阵赋值给变量m1,在workspace 中察看m1在内存中占用
的字节数。
m1=????
?
????
???11514412679810115133216 执行以下命令 >>m1( 2 , 3 )=10
>>m1( 11 )=6
>>m1( : , 3 )= 3 10 6 15
>>m1( 2 : 3 , 1 : 3 )=[ 5 11 10;9 7 6]
>>m1( 1 ,4 ) + m1( 2 ,3 ) + m1( 3 ,2 ) + m1( 4 ,1)=34 (5)执行命令>>help abs
查看函数abs 的用法及用途,计算abs( 3 + 4i )=5 (6)执行命令
>>x=0::6*pi; >>y=5*sin(x); >>plot(x,y)
(7)运行MATLAB 的演示程序,>>demo ,以便对MATLAB 有一个总体了解。 3、矩阵运算
??????=654321a ??????-=531142b ?????
?????-=201c ????
??????=063258741d (1)下列运算是否合法,为什么如合法,结果是多少
①. result1 = a'=[1 4;2 5;3 6] ②. result2 = a * b (维数不同) ③. result3 = a + b=[3 6 2;5 8 11] ④. result4 = b * d=[31 22 22;40 49 13]
⑤. result5 = [b ; c' ] * d=[31 22 22;40 49 13;-5 -8 7]
⑥. result6 = a . * b=[2 8 -3;4 15 30] ⑦. result7 = a . / b=[ ; ] ⑧. result8 = a . * c=(维数不同) ⑨. result9 = a . \ b=[ ; ]
⑩. result10 = a . ^2=[1 4 9;16 25 36 ] ?. result11 = a ^2=
?. result11 = 2 . ^ a=[2 4 8;16 32 64]
(2)用MATLAB 求下面的的方程组。
????
??
?=-++=--=-++=++5
6533332821
w z y x w y x w z y x z y x =[1, 5 -5 -2]’ X=inv(A)*b
(3)已知????
?
????
???----=1323151122231592127
A (1)求矩阵A 的秩(rank)=4
(2)求矩阵A 的行列式(determinant)=12568 (3)求矩阵A 的逆(inverse)=[
]
(4)求矩阵A 的特征值及特征向量(eigenvalue and eigenvector) =[
+
-
]
4、关系运算与逻辑运算
已知a=20,b=-2,c=0,d=1
(1) r1 = a > b=1
(2) r2 = a > b & c > d=0
(3) r3 = a == b* (-10) =1
(4) r4 = ~b | c=0
四、思考题
1、以下变量名是否合法为什么
(1)x2
(2)3col
(3)_row
(4)for
定义变量
变量名、函数名对字母大小写敏感。MAY、may表示不同变量。
变量名第一个字母必须是英文字母,且不能超过65个字符。
变量名中不得包含空格、标点但可包含下连符,如my_var 是合法的变量名。
2、求以下变量的值,并在MATLAB中验证。(1)a = 1 : 2 : 5 ; a= 1 3 5
(2)b = [ a' a' a' ] ;
b=[ 1 1 1
3 3 3
5 5 5]
(3)c = a + b ( 2 , : ) C= 4 6 8
实验二 MATLAB 数值运算与作图
一、实验目的:掌握MATLAB 常用的数值运算函数。 二、实验内容:
1、求代数方程012927432
345=+++++x x x x x 的5个根,并将其用星号
(*)标记在复平面图上。(用roots 和plot 函数)。
x =
+ - + -
A=[3,4,7,2,9,12]; x=roots(A) plot(x,'*'); grid;
2、求代数方程015
=-x 的5个根,并将其用星号(*)标记在复平面图
上。(用roots 和plot 函数)。
A=[1,0,0,0,0,-1]; x=roots(A) plot(x,'*'); grid;
x = + - + -
3、求下面函数在[,4]区间内的过零点。(用fzero 函) x = fzero(fun,x0) %查找fun 函数在x0附近的零点
x x x x x x x f 1)cos(5)sin(2)(23+
+-=
%估计零点
fplot('x^3+1/x',[,4]);
hold on;
fplot('2*x^2*sin(x)-5*x*cos(x)',[,4]);
hold off;
[m,n]=ginput(2)
m =
n =
y1=fzero('x^3-2*x^2*sin(x)+5*x*cos(x)+1/x', y1 =
y2=fzero('x^3-2*x^2*sin(x)+5*x*cos(x)+1/x', y2 =
%建立函数
function y=f(x)
y=x^3-2*x^2*sin(x)+5*x*cos(x)+1/x;
%调用函数
>> y1=fzero('fz',
y1 =
>> y2=fzero('fz',
y2 =
4、实验数据处理(选做)
已知某压力传感器的测试数据如下表
p 为压力值,u 为电压值,试用多项式d cp bp ap p u +++=2
3)(来拟
合其特性函数,求出a,b,c,d ,并把拟合曲线和各个测试数据点画在同一幅图上。
调用方法:polyfit(x,y,n)。用多项式求过已知点的表达式,其中x 为
源数据点对应的横坐标,可为行向量、矩阵,y 为源数据点对应的纵坐标,可为行向量、矩阵,n 为你要拟合的阶数 用法:linspace(x1,x2,N)
功能:linspace 是Matlab 中的均分计算指令,用于产生x1,x2之间的N 点行线性的矢量。其中x1、x2、N 分别为起始值、终止值、元素个数。若默认N ,默认点数为100。 y = polyval(p,x)
返回n 次多项式p 在x 处的值。输入变量p 是一个长度为n+1的向量,其元素为按降幂排列的多项式系数。 y=p1*x^n+p2*x^(n-1)+...+pn*x+p(n+1)
>> p=[,,,,,,,,,,];
u=[10,11,13,14,17,18,22,24,29,34,39]; x=polyfit(p,u,3) %得多项式系数 t=linspace(0,10,100); y=polyval(x,t); %求多项式得值 plot(p,u,'*',t,y,'r') %画拟和曲线
5、三维空间曲线绘制 z=0::4*pi; x=cos(z); y=sin(z); plot3(x,y,z)
X
三维空间曲线
Y
Z
>> z=0::4*pi; x=cos(z); y=sin(z);
plot3(x,y,z,'rp');
title('三维空间曲线'); text(0,0,0,'origin');
xlabel('X'),ylabel('Y'),zlabel('Z'); grid;
6、用mesh 或surf 函数,绘制下面方程所表示的三维空间曲面,x 和y 的取值范围设为[-3,3]。
10
102
2y x z +-=
X
立体网状图
Y
Z
>>x=-3::3;
[x,y]=meshgrid(x); z=-x.^2/10+y.^2/10; mesh(x,y,z);
xlabel('X'),ylabel('Y'),zlabel('Z'); title('立体网状图'); (2)
>>x=-3::3;
[x,y]=meshgrid(x); z=-x.^2/10+y.^2/10; surf(x,y,z);
xlabel('X'),ylabel('Y'),zlabel('Z'); title('立体曲面图');
X
立体曲面图
Y
Z
实验三 MATLAB程序设计
一、实验目的:掌握MATLAB程序编辑、运行及调试方法。
二、实验内容:
1、熟悉MATLAB的m文件
启动MATLAB后,点击File|New|M-File,启动MATLAB的程序编辑及调试器(Editor/Debugger),编辑以下程序,点击File|Save保存程
序,注意文件名最好用英文字符。点击Debug|Run运行程序,在命令窗口查看运行结果,程序如有错误则改正。
注:数论中一个有趣的题目:任意一个正整数,若为偶数,则用2除之,若为奇数,则与3相乘再加上1。重复此过程,最终得到的结果为1。如:2?1
3?10?5?16?8?4?2?1
6?3?10?5?16?8?4?2?1
运行下面的程序,按程序提示输入n=1,2,3,5,7等数来验证这一结论。
%classic "3n+1" problem from number theory.
while 1
n=input('Enter n,negative quits:');
if n<=0
break
end
a=n;
while n>1
if rem(n,2)==0 n=n/2; else
n=3*n+1; end a=[a,n]; end a end a = 1 a = 2 1
a = 3 10 5 16 8 4 2 1 a = 5 16 8 4 2 1
a = 7 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1 2.循环语句编程
(1)根据
22222
13121116n
++++=
π,求π的近似值。当n=100、1000、10000时,结果是多少 , , while 1
k=input('Enter k,negative quits:'); x=0; for m=1:k
x=x+1/m^2
end
x =sqrt(6*x)
end
(2)用for循环和while循环语句求 1!+2!+…+10!的值.
x =
4037913
k=10;
x=0;
n=1;
for m=1:k
n=m*n*1 ;
x=x+n;
end
x
k=3;
x=0;
n=1;
m=1;
while m<=k
n=m*n*1 ;
x=x+n;
m=m+1;
end
x
3.条件语句编程
试用if或 switch 语句完成卷面成绩 score 的转换:
(1) score ≥90 分,优;
(2) 90>score ≥80 分,良;
(3) 80>score≥70 分,中;
(4) 70>score ≥60 分,及格;
(5) 60<score,不及格。
while 1
k=input('Enter k,negative quits:');
switch fix(k/10)
case {9,10} disp('grade is优')
case {8} disp('grade is良')
case {7} disp('grade is中')
case {6} disp('grade is及格') otherwise disp('grade is不及格')