MATLAB应用实验指导书1234结果.docx
《MATLAB应用实验指导书1234结果.docx》由会员分享,可在线阅读,更多相关《MATLAB应用实验指导书1234结果.docx(16页珍藏版)》请在冰豆网上搜索。
MATLAB应用实验指导书1234结果
MATLAB语言实验指导书
中国矿业大学信息与电气工程学院
2014年3月
实验一MATLAB工作环境熟悉及基本运算
一、实验目的:
熟悉MATLAB的工作环境,学会使用MATLAB进行一些简单的运算。
掌握基本的矩阵运算及常用的函数。
二、实验内容:
MATLAB的启动和退出,熟悉MATLAB的桌面(Desktop),包括菜单(Menu)、工具条(Toolbar)、命令窗口(CommandWindow)、历史命令窗口、工作空间(Workspace)等;完成一些基本的矩阵操作;学习使用在线帮助系统。
三、实验步骤:
1、启动MATLAB,熟悉MATLAB的桌面。
2、在命令窗口执行命令完成以下运算,观察workspace的变化,记录运算结果。
(1)(365-522-70)3=63.6667
(2)area=pi*2.5^2=19.6350
(3)已知x=3,y=4,在MATLAB中求z:
=576
(4)将下面的矩阵赋值给变量m1,在workspace中察看m1在内存中占用的字节数。
m1=
执行以下命令
>>m1(2,3)=10
>>m1(11)=6
>>m1(:
3)=310615
>>m1(2:
3,1:
3)=[51110;976]
>>m1(1,4)+m1(2,3)+m1(3,2)+m1(4,1)=34
(5)执行命令>>helpabs
查看函数abs的用法及用途,计算abs(3+4i)=5
(6)执行命令
>>x=0:
0.1:
6*pi;
>>y=5*sin(x);
>>plot(x,y)
(7)运行MATLAB的演示程序,>>demo,以便对MATLAB有一个总体了解。
3、矩阵运算
(1)下列运算是否合法,为什么?
如合法,结果是多少?
1.result1=a'=[14;25;36]
2.result2=a*b(维数不同)?
?
?
?
?
3.result3=a+b=[362;5811]
4.result4=b*d=[312222;404913]
5.result5=[b;c']*d=[312222;404913;-5-87]
6.result6=a.*b=[28-3;41530]
7.result7=a./b=[0.50.5-3.0;4.01.671.2]
8.result8=a.*c=(维数不同)?
?
?
?
?
9.result9=a.\b=[2.02.0-0.33;0.250.60.83]
10.result10=a.^2=[149;162536]
11.result11=a^2=?
?
?
?
?
12.result11=2.^a=[248;163264]
(2)用MATLAB求下面的的方程组。
=[1,5-5-2]’
X=inv(A)*b
(3)已知
(1)求矩阵A的秩(rank)=4
(2)求矩阵A的行列式(determinant)=12568
(3)求矩阵A的逆(inverse)=[0.1744-0.0303-0.01250.0270
-0.10500.0789-0.01210.0006
0.00830.01730.0911-0.0311
0.0095-0.0185-0.01030.0795]
(4)求矩阵A的特征值及特征向量(eigenvalueandeigenvector)
=[
4.8554
12.6460+1.8333i
12.6460-1.8333i
15.8526]
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=135
(2)b=[a'a'a'];
b=[111
333
555]
(3)c=a+b(2,:
)C=468
实验二MATLAB数值运算与作图
一、实验目的:
掌握MATLAB常用的数值运算函数。
二、实验内容:
1、求代数方程
的5个根,并将其用星号(*)标记在复平面图上。
(用roots和plot函数)。
x=
-0.8612+1.4377i
-0.8612-1.4377i
0.6737+1.0159i
0.6737-1.0159i
-0.9583
A=[3,4,7,2,9,12];
x=roots(A)
plot(x,'*');
grid;
2、求代数方程
的5个根,并将其用星号(*)标记在复平面图上。
(用roots和plot函数)。
A=[1,0,0,0,0,-1];
x=roots(A)
plot(x,'*');
grid;
x=
-0.8090+0.5878i
-0.8090-0.5878i
0.3090+0.9511i
0.3090-0.9511i
1.0000
3、求下面函数在[0.5,4]区间内的过零点。
(用fzero函)
x=fzero(fun,x0)%查找fun函数在x0附近的零点
%估计零点
fplot('x^3+1/x',[0.5,4]);
holdon;
fplot('2*x^2*sin(x)-5*x*cos(x)',[0.5,4]);
holdoff;
[m,n]=ginput
(2)
m=
1.5121
2.6250
n=
3.8158
18.2895
y1=fzero('x^3-2*x^2*sin(x)+5*x*cos(x)+1/x',1.5)
y1=
1.5117
y2=fzero('x^3-2*x^2*sin(x)+5*x*cos(x)+1/x',2.5)
y2=
2.6095
%建立函数
functiony=f(x)
y=x^3-2*x^2*sin(x)+5*x*cos(x)+1/x;
%调用函数
>>y1=fzero('fz',1.5)
y1=
1.5117
>>y2=fzero('fz',2.5)
y2=
2.6095
4、实验数据处理(选做)
已知某压力传感器的测试数据如下表
p
0.0
1.1
2.1
2.8
4.2
5.0
6.1
6.9
8.1
9.0
9.9
u
10
11
13
14
17
18
22
24
29
34
39
p为压力值,u为电压值,试用多项式
来拟合其特性函数,求出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=[0.0,1.1,2.1,2.8,4.2,5.0,6.1,6.9,8.1,9.0,9.9];
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:
0.1:
4*pi;
x=cos(z);
y=sin(z);
plot3(x,y,z)
>>z=0:
0.1:
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]。
>>x=-3:
0.1:
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:
0.1:
3;
[x,y]=meshgrid(x);
z=-x.^2/10+y.^2/10;
surf(x,y,z);
xlabel('X'),ylabel('Y'),zlabel('Z');
title('立体曲面图');
实验三MATLAB程序设计
一、实验目的:
掌握MATLAB程序编辑、运行及调试方法。
二、实验内容:
1、熟悉MATLAB的m文件
启动MATLAB后,点击File|New|M-File,启动MATLAB的程序编辑及调试器(Editor/Debugger),编辑以下程序,点击File|Save保存程序,注意文件名最好用英文字符。
点击Debug|Run运行程序,在命令窗口查看运行结果,程序如有错误则改正。
注:
数论中一个有趣的题目:
任意一个正整数,若为偶数,则用2除之,若为奇数,则与3相乘再加上1。
重复此过程,最终得到的结果为1。
如:
21
3105168421
63105168421
运行下面的程序,按程序提示输入n=1,2,3,5,7等数来验证这一结论。
%classic"3n+1"problemfromnumbertheory.
while1
n=input('Entern,negativequits:
');
ifn<=0
break
end
a=n;
whilen>1
ifrem(n,2)==0
n=n/2;
else
n=3*n+1;
end
a=[a,n];
end
a
end
a=1
a=21
a=3105168421
a=5168421
a=7221134175226134020105168421
2.循环语句编程
(1)根据
,求
的近似值。
当n=100、1000、10000时,结果是多少?
3.1321,3.1406,3.1415
while1
k=input('Enterk,negativequits:
');
x=0;
form=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;
form=1:
k
n=m*n*1;
x=x+n;
end
x
k=3;
x=0;
n=1;
m=1;
whilem<=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,不及格。
while1
k=input('Enterk,negativequits:
');
switchfix(k/10)
case{9,10}disp('gradeis优')
case{8}disp('gradeis良')
case{7}disp('gradeis中')
case{6}disp('gradeis及格')
otherwisedisp('gradeis不及格')
end
c=input('Enterk,negativequits:
');
ifc>=90
disp('gradeis优')
elseifc>=80&c<90
disp('gradeis良')
elseifc>=70&c<80
disp('gradeis中')
elseifc>=60&c<70
disp('gradeis及格')
else
disp('gradeis不及格')
end
4.函数编写(选做)
编写一个函数,计算下面函数的值,给出标量x的值,调用该函数后,返回y的值。
function[y]=myfun1(x)
选择一些数据测试你编写的函数。
function[y]=myfun1(x)
ifx<=0
y=sin(x);
elseifx>0&x<=3
y=x;
elseifx>3
y=-x+6;
end
运行结果:
>>[y]=myfun1(-pi/2)
y=
-1
>>[y]=myfun1(0)y=
0
>>[y]=myfun1
(2)
y=
2
>>[y]=myfun1(4)
y=
2
实验四simulink应用
一、实验目的:
熟悉simulink仿真环境,掌握simulink仿真方法。
二、实验内容:
用Simulink求解下图所示电路0~100微秒内的响应。
已知R=6*10-4欧,C=1700微法,L=6*10-9享,uc(0)=15kV。
●模块参数设置:
Integrator1的Initialcondition:
15kV
在命令窗口为R,L,C赋值。
●仿真参数设置如下:
Starttime:
0
Stoptime:
100e-6
SolverType:
Variable-step
Solver:
ode45
Maxstepsize:
1e-7
Minstepsize:
auto
Initialstepsize:
auto
Relativetolerance:
1e-3
Absolutetolerance:
1e-6