MATLAB实训.doc

来源:本站
导读:目前正在解读《MATLAB实训.doc》的相关信息,《MATLAB实训.doc》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《MATLAB实训.doc》的详细说明。
简介:MATLAB

目录

第1章MATLAB概述 1

1.1熟悉MATLAB开发环境 1

1.2使用Notebook 2

1.3使用MATLAB的帮助 3

1.4自我练习 3

第2章MATLAB基本运算 4

2.1向量的运算 4

2.2矩阵和数组的运算 4

2.3字符串和日期型数组的操作 5

2.4多项式的运算 6

2.5元胞数组和结构体 6

2.6自我练习 7

第3章数据的可视化 8

3.1绘制二维曲线并标注文字 8

3.2在同一窗口中绘制多条曲线 8

3.3绘制特殊图形 9

3.4绘制三维图形 10

3.5自我练习 11

第4章符号运算 12

4.1符号表达式的创建和算术运算 12

4.2符号表达式的运算 12

4.3符号表达式的微积分和积分变换 13

4.4符号方程的求解 14

4.5自我练习 14

第5章程序设计和M文件 15

5.1使用函数调用并调试程序 15

5.2使用M脚本和M函数文件 15

5.3使用函数句柄和匿名函数进行数值分析 17

5.4自我练习 17

1MATLAB概述1.1熟悉MATLAB发环境1.MATLAB的启

⑴单击Windows的开始菜单,选择“程序”→“MATLAB”→“R2006b”→“MATLABR2006b

⑵单击桌面上的MATLAB快捷方式图标

2.MATLAB的窗口布局

⑴使命令窗口独立:

①选择菜单“Desktop”→“UndockCommandWindow

②单击“CommandWindow”右上角的展开按钮

③单击还原按钮可使命令窗口恢复到原位置

⑵创建不同的新文件

3.使用命令窗口

a=[12;34],b=1/3,c=a*b,d='hello',e=d+1

a=12

34

b=0.3333

c=0.33330.6667

1.00001.3333

d=hello

e=105102109109112

(1)使用标点符号来修改命令行

%添加注释

c=a+b %c为矩阵a+b的和

c=1.33332.3333

3.33334.3333

;不显示计算结果

a=[12;34];

…续行

d='hell...

o'

???Error:AMATLABstringconstantisnotterminatedproperly.

,用作数组元素的分隔

a=[12;34]

a=12

34

(2)使用操作键

↑:向前调回已输入过的命令;

↓:向后调回已输入过的命令;

Esc:清除当前行的全部内容。

(3)使用format设置数值的显示格式

formatlong:显示15位长格式

formatlong;c

c=0.3333333333333330.666666666666667

1.0000000000000001.333333333333333

formatrat:显示近似有理式格式

formatrat;c

c=1/32/3

14/3

(4)设置命令窗口的外观

①选择“File”→“Preference

②选择对话框左栏的“Fonts”,将字体设置为宋体

③单击对话框左栏的“CommandWindow”,设置“NumericFormat”栏为“formatshort”和“Numericdisplay”为“compact

(5)使用控制命令

clc %清空命令窗口的显示内容

beep %发出beep的声音

4.历史命令窗口

⑴创建M文件:在历史命令窗口中选择前5行命令,单击鼠标右键出现快捷菜单“CreateM-File”,则出现M文件编辑/调试器窗口,窗口中已有所选择的命令行,在文件中添加前两行注释:

sy1_1

%基本操作

保存该文件名为“sy1_1.m

⑵创建快捷方式:选择两行命令

formatlong;c

单击鼠标右键出现快捷菜单选择“CreateShortcut”,则会出现“ShortcutEditor”对话框。在“Label”框中输入快捷方式的名称,单击Save按钮。

5.工作空间窗口

⑴创建新变量:单击工作空间窗口工具栏的新建变量按钮,或选择菜单“File”→“New”→“Variable

⑵保存变量:在工作空间中选择需要保存的变量名,然后单击保存按钮,出现“SavetoMAT-File”对话框,保存为MAT文件“sy1_1.mat

⑶使用“who”和“whos”命令查看各变量

⑷使用“clear”命令删除变量b

⑸使用菜单“View”→“Choosecolumns”→“Mean”查看a各列的平均值

6.M文件编辑/调试器窗口

⑴创建空白M文件:单击新建图标或选择菜单“File”→“New”→“M-file

⑵创建单元:选择菜单“Cell”→“EnabledCellMode”,出现单元工具栏,使用“%%”创建单元。单击Ctrl+Enter可以运行光标所在单元。

7.当前目录浏览器窗口

⑴打开文件:在当前目录浏览器窗口右击文件“sy1_1.m”,选择“Open

⑵运行M文件:用鼠标右击“sy1_1.m”文件,在快捷菜单中选择“Run

⑶查找文件:单击查找按钮,出现查找文件对话框

⑷将文件夹以图示显示

⑸使用whatdirwhich命令查看当前目录信息

⑹使用type命令查看“sy1_1.m”文件的内容

8.修改搜索路径

单击菜单“File”→“SetPath”,打开设置路径对话框

9.数组编辑器窗口

⑴编辑变量:双击打开变量a,在图中添加第一行第三列为6,则第二行第三列自动添0

⑵数据绘图:

方法一:使用菜单,在工作空间浏览器窗口和数组编辑器窗口中都可以选择“Graphics”菜单,在下拉菜单中选择“PlotallColumns”。

方法二:使用工具栏,选择工具栏中的绘图按钮,在选项中选择要绘制的曲线类型。

1.2使用Notebook1.安装Notebook

notebook–setup

2.Word中显示MATLAB命令

⑴定义输入单元:选择12行命令,然后选择菜单“Notebook”→“DefineInputCell”定义输入单元;选择后3行命令,选择菜单“Notebook”→“EvaluateCell”,直接定义输入单元并运行显示输出单元。

a=[12;34],b=1/3,c=a*b,d='hello',e=d+1

a=12

34

b=1/3

c=1/32/3

14/3

d=hello

e=105102109109112

⑵定义输入单元组:选择两个输入单元后,选择菜单“Notebook”→“GroupCells”,就将两个输入单元组成单元组。

1.3使用MATLAB的帮助1.使用帮助命令

help

helpsin

lookforsin

2.使用帮助导航/浏览器窗口

⑴通过“Contents选项”

⑵通过“Index”面板查找

⑶通过“Search”面板查找

3.使用Demos

demomatlabgraphics

1.4自我练习

1)在命令窗口中输入以下命令并使用whowhos命令查看变量信息,在数组编辑器窗口中查看变量内容,并用formatxy显示为指数形式。

x=0:2:10,y=sqrt(x)

x=0246810

y=01393/98522158/8813363/1189721/228

2)在命令窗口中输入以下命令,将两个变量保存到exe1.mat文件中,并将两行命令保存为exe1.m文件,使用which命令查看文件信息,将exe1.m文件设置到搜索路径后,在命令窗口中运行exe1文件。

a=[12;34],b=[11;22]

a=12

34

b=11

22

2MATLAB基本运算2.1向量的运算1.行向量的创建

t1=0:10;t2=linspace(0,20,21);

2.行向量的计算

formatshort;ft1=20*exp(-0.5*t1).*sin(2*t1)

ft1=011.0303-5.5682-1.24692.6779-0.8931-0.53430.5983-0.1055-0.16690.1230

3.关系运算

ff=ft1>0,ft=ft1.*ff

ff=01001001001

ft=011.0303002.6779000.5983000.1230

4.逻辑运算

tt=(t1<=pi)|((t1>=2*pi)&(t1<=3*pi)),ft=ft1.*tt

tt=11110001110

ft=011.0303-5.5682-1.24690000.5983-0.1055-0.16690

2.2矩阵和数组的运算1.创建矩阵

a=magic(4),b=eye(3)

a=162313

511108

97612

414151

b=100

010

001

2.生成子矩阵块

c=a(1:3,1:3),c=a([1:3;5:7;9:11])'

l1=logical([111]);l2=logical([111]);a(l1,l2)

c=1623

51110

976

c=1623

51110

976

ans=1623

51110

976

3.矩阵的函数运算

det(a),rot90(b),inv(c),inv(b),max(a)

ans=0

ans=001

010

100

ans=0.0294-0.06620.0956

-0.4412-0.50741.0662

0.47060.6912-1.2206

ans=100

010

001

ans=16141513

4.矩阵和数组的算术运算

b*c,b.*c,b/c,b./c,c^2,c.^2,exp(b),expm(b)

ans=1623

51110

976

ans=1600

0110

006

ans=0.0294-0.06620.0956

-0.4412-0.50741.0662

0.47060.6912-1.2206

ans=0.062500

00.09090

000.1667

ans=2937586

225201185

233137133

ans=25649

25121100

814936

ans=2.71831.00001.0000

1.00002.71831.0000

1.00001.00002.7183

ans=2.718300

02.71830

002.7183

5.复数矩阵

d=b+c*i,abs(d),d',d.'

d=1.0000+16.0000i0+2.0000i0+3.0000i

0+5.0000i1.0000+11.0000i0+10.0000i

0+9.0000i0+7.0000i1.0000+6.0000i

ans=16.03122.00003.0000

5.000011.045410.0000

9.00007.00006.0828

ans=1.0000-16.0000i0-5.0000i0-9.0000i

0-2.0000i1.0000-11.0000i0-7.0000i

0-3.0000i0-10.0000i1.0000-6.0000i

ans=1.0000+16.0000i0+5.0000i0+9.0000i

0+2.0000i1.0000+11.0000i0+7.0000i

0+3.0000i0+10.0000i1.0000+6.0000i

2.3字符串和日期型数组的操作1.字符串合并

s1='s^2',s2='s+1',ss=strcat(s1,'+',s2)

s1=s^2

s2=s+1

ss=s^2+s+1

2.执行字符串

s=5,eval(ss)

s=5

ans=31

3.将字符串逆序排列

s2='hello';n=length(s2),ss2=[s2(n),s2(n-1),s2(n-2),s2(n-3),s2(n-4)]

n=5

ss2=olleh

4.字符串与数值的转换

abs(s2)

ans=104101108108111

5.将日期以不同格式显示

d=datestr('5/1/2007'),d1=datenum(d),

p=['Thisyearis',num2str(year(d))]

d=01-May-2007

d1=733163

p=Thisyearis2007

2.4多项式的运算1.计算多项式的乘积

p1=[11];p2=[145];p=conv(p1,p2)

p=1595

2.计算多项式的根并进行部分分式展开

pp=roots(p2),[rr,pr,kr]=residue(p1,p2)

pp=-2.0000+1.0000i

-2.0000-1.0000i

rr=0.5000+0.5000i

0.5000-0.5000i

pr=-2.0000+1.0000i

-2.0000-1.0000i

kr=[]

3.计算多项式的微分

pd=polyder(p),polyval(p,3)

pd=3109

ans=104

4.多项式的拟合

G=[1-5-17129-180];x=0:20;y=polyval(G,x);

y0=0.1*randn(1,21);y1=y+y0,G1=polyfit(x,y1,4)

y1=1.0e+005*

-0.0018-0.0007-0.0001-0.00000.00000.00040.00200.00580.01300.02520.04410.07170.11020.16200.22990.31680.42590.56060.72450.92161.1560

G1=1.0000-4.9997-17.0030129.0151-180.0143

5.多项式的插值

s=interp1(x,y,5.5),s1=interp1(x,y1,5.5)

s=119

s1=118.9830

2.5元胞数组和结构体1.创建结构体

student(1)=struct('name','John','Id','20030115','scores',[85,96,74,82,68])

student(2)=struct('name','Rose','Id','20030102','scores',[95,93,84,72,88])

student(3)=struct('name','Billy','Id','20030117','scores',[72,83,78,80,83])

student=1x3structarraywithfields:

name,Id,scores

student=1x3structarraywithfields:

name,Id,scores

student=1x3structarraywithfields:

name,Id,scores

2.显示结构体内容

all_s=[student(1).scores;student(2).scores;student(3).scores]

average_s=mean(all_s)

all_s=8596748268

9593847288

7283788083

average_s=84.000090.666778.666778.000079.6667

3.修改结构体元素内容

student=setfield(student,{2},'scores',{2},73)

student(2).scores(2)=73

student(2)

student=1x3structarraywithfields:

{name,Id,scores

student=1x3structarraywithfields:

name,Id,scores

ans=name:'Rose'

Id:'20030102'

scores:[9573847288]

4.将结构体转换为元胞数组

student_cell=struct2cell(student)

student_cell(:,:,1)=

{'John','20030115',[1x5double]}

student_cell(:,:,2)=

{'Rose','20030102',[1x5double]}

student_cell(:,:,3)=

'Billy','20030117',[1x5double]

5.创建元胞数组

average={'平均成绩',average_s}

average='平均成绩'[1x5double]

average(1)={'平均成绩'}

average='平均成绩'[1x5double]

average(2)={average_s}

average='平均成绩'[1x5double]

average{1}='平均成绩';

average{2}=average_s

average='平均成绩'[1x5double]

2.6自我练习

1)将实验2中的魔方阵a按照列降序排列,并计算其平均值。

2)将实验3中的字符串s1='s^2's2='s+1'进行比较,并将s1s2构成一个矩阵,然后将该矩阵中的字符's'替换成'x'

3)根据实验4p=(s+1)(s2+4s+5),计算p(x)=0时的根,并计算p(x)除以(s+1)的结果。

3章数据的可视化3.1绘制二维曲线并标注文字1.使用plot函数绘制曲线

t=0:0.1:10;y1=0.01*t.^2;y2=exp(-t).*sin(2*t);plot(t,y1,'r:')

holdon;plot(t,y2,'b-*');y2max=max(y2);plot([0,10],[y2max,y2max])

2.设置坐标轴和分隔线

gridon;axis([0,10,-1,1])

3.添加图形文字标注

title('y_{1}=0.1t^{2}y_{2}=e^{-t}sin(2t)线图')

legend('y1','y2',4)

annotation('textarrow',[0.5,0.5],[(2-y2max)/2+0.1,(2-y2max)/2],'string',y2max)

ans=254.0645

4.使用鼠标获取图形中的数据

[x,y]=ginput(1)

x=3.8754

y=0.2772

5.使用图形窗口

①添加曲线②添加标注③修改图形④隐藏曲线⑤添加子图⑥使用“Tool”菜单

3.2在同一窗口中绘制多条曲线1.第一个子图绘制图形

t=0:0.1:2*pi;subplot(311);plot(sin(t),cos(t));axisequal

2.第二个子图绘制复数数组的图形

z=t+2*cos(t)*i;subplot(3,1,2);plot(z,'r:');axis([02*pi-22])

3.第三个子图绘制矩阵的图形

subplot(3,1,3);[x,y]=meshgrid(t);z=sin(x).*cos(y);plot(t,z);axisimage

4.保存图形文件3.3绘制特殊图形1.使用极坐标绘制螺旋线

figure(1);t=0:0.1:8*pi;polar(t,t)

2.绘制离散数据的火柴杆图

figure(2);t=0:0.5:20;y=exp(-0.1*t).*sin(t);stem(t,y)

3.绘制向量的罗盘图

figure(3);thera=[0pi/6pi/4pi/3pi/2pipi*2/3];

rho=[110515202515];z=rho.*exp(i*thera);compass(z)

4.使用绘图编辑工具栏3.4绘制三维图形1.绘制三维饼形图

x=[1231];[xmax,n]=max(x);explode=zeros(1,4);

explode(n)=1;pie3(x,explode)

2.使用三维网线图绘制平面

x=-5:0.5:5;y=0:0.5:4;[X,Y]=meshgrid(x,y);Z=5*ones(size(X));

mesh(X,Y,Z);colormap('hot');colorbar

3.绘制三维表面图

x=-4:4;[X,Y]=meshgrid(x);Z=5*X.^2-Y.^2;surfc(X,Y,Z);view([60,60])

4.使用图形窗口设置属性

1)使用照相工具栏

2)修改索引色图

3.5自我练习

1)使用plot函数分别绘制矩阵A=[1234;1010;1223]A'A(:,2)A(1,:)的数据图形。

2)在同一图形窗口中绘制函数及其包络线图形,t的范围为0~2

3)绘制实验4z=5x2-y2的三维曲线图。

4章符号运算4.1符号表达式的创建和算术运算1.创建符号常量和变量

a=sym(1/3);b=sym('thera')

b=thera

2.对符号常量使用不同的显示

a=sym(1/3,'f'),a1=sym(1/3,'r'),b=sym('thera','real'),b1=sym('thera','positive')

a='1.5555555555555'*2^(-2)

a1=1/3

b=thera

b1=thera

3.不同类型对象的转换

da=double(a),da1=double(a1);va=vpa(a,15),f=sym('1/3'),double(f),db=double(b)

da=0.3333

va=.333333333333333

f=1/3

ans=0.3333

???Errorusing==>sym.doubleat25

DOUBLEcannotconverttheinputexpressionintoadoublearray.

Iftheinputexpressioncontainsasymbolicvariable,usetheVPAfunctioninstead.

4.创建符号矩阵

d=[aa1;bb1],dt=triu(d),dc=cos(d)

d=['1.5555555555555'*2^(-2),1/3]

[thera,thera]

dt=['1.5555555555555'*2^(-2),1/3]

[0,thera]

dc=[cos(6004799503160661/18014398509481984),cos(1/3)]

[cos(thera),cos(thera)]

4.2符号表达式的运算1.创建符号表达式

symsxuv;f=x^3+5*x^2+7*x+3;g=2*u/(u+v);

2.化简符号表达式

fh=horner(f),ff=factor(f),fs=simple(f)

fh=3+(7+(5+x)*x)*x

ff=(x+3)*(x+1)^2

fs=(x+3)*(x+1)^2

3.确定符号自由变量

var=findsym(g,2),v1=var(1)

var=v,u

v1=v

4.复合函数

fg=compose(f,g),gf=compose(g,f),gf1=compose(g,f,var(3),'x'),gf2=compose(g,f,'t')

fg=8*u^3/(u+v)^3+20*u^2/(u+v)^2+14*u/(u+v)+3

gf=2*u/(u+x^3+5*x^2+7*x+3)

gf1=2*(x^3+5*x^2+7*x+3)/(x^3+5*x^2+7*x+3+v)

gf2=2*u/(u+t^3+5*t^2+7*t+3)

5.使用符号函数计算器

funtool

4.3符号表达式的微积分和积分变换1.创建符号表达式

symsxyta;f=(x^2+y^2)^(x*y);g=sin(1/x);

2.计算极限

fxy=limit(limit(f,'y',1),'x',1),fxy0=limit(f)

fxy=2

fxy0=1

3.计算微积分

gdf1=diff(g),gdf2=diff(g,x,2),gint=int(g),gint1=int(g,1,pi)

gdf1=-cos(1/x)/x^2

gdf2=-sin(1/x)/x^4+2*cos(1/x)/x^3

gint=sin(1/x)*x-cosint(1/x)

gint1=-sin(1)+cosint(1)+sin(1/pi)*pi-cosint(1/pi)

4.计算级数求和

gsum=symsum(g,1,10)

gsum=sin(1)+sin(1/2)+sin(1/3)+sin(1/4)+sin(1/5)+sin(1/6)

+sin(1/7)+sin(1/8)+sin(1/9)+sin(1/10)

5.计算积分变换

p=exp(-x^2);q=sin(a*t);g=sin(1/x);

pf=fourier(f),ql=laplace(g),gf=fourier(f),gl=laplace(g)

pf=fourier((x^2+y^2)^(x*y),x,w)

ql=laplace(sin(1/x),x,s)

gf=fourier((x^2+y^2)^(x*y),x,w)

gl=laplace(sin(1/x),x,s)

4.4符号方程的求解1.解符号方程

symsxyz;eqn1='sin(1/x)=1';eqn21='x+y+z=10';eqn22='x-2*y+z';eqn23='2*x-y=-4';x1=solve(eqn1),[x2,y2,z2]=solve(eqn21,eqn22,eqn23)

x1=2/pi

x2=-1/3

y2=10/3

z2=7

2.解微分方程

y1=dsolve('Dy=5'),y21=dsolve('D2y-Dy=1'),y22=dsolve('D2y-Dy=1','y(0)=1','y(1)=1')

y1=5*t+C1

y21=exp(t)*C1-t+C2

y22=exp(t)/(exp(1)-1)-t+(exp(1)-2)/(exp(1)-1)

4.5自我练习

1)创建符号表达式,使用排版形式显示,并进行部分分式展开。

2)使用taolor级数计算器窗口对实验3中的进行级数逼近。

3)解微分方程,。

5章程序设计和M文件5.1使用函数调用并调试程序1.打开M文件编辑/调试器窗口

⑴方法:单击MATLAB桌面上的新建图标,或者单击菜单“File”→“New”→“M-File

M文件编辑/调试器窗口边框的作用:

①左边框是行号,如果程序出错可根据出错提示中的行号查找出错语句;

②左边框的“-”处可以设置断点,单击“-”出现红色的圆点就是断点;

③右边框是程序的提示,将鼠标放置其上可以看到相应的提示和警告信息。

2.编写M函数文件

编写程序判断输入参数是否为“水仙花数”。“水仙花数”是一个三位数,各位数的立方和等于该数本身。如果是“水仙花数”则函数输出1,否则输出0

functiony=sy511(x)

%sy511判断是否水仙花数

%y判断结果,是则y=1,否则y=0

a=fix(x/100);

b=fix(rem(x,100)/10);

c=rem(x,10);

ifx==(a^3+b^3+c^3)

y=1;

else

y=0;

end

将函数文件保存为“sy511.m”,在命令行中调用该函数:

y=sy511(455)

3.添加主函数

functionsy51(x)

%SY51判断水仙花数

ifx>100&&x<=999

y=sy511(x)

else

return

end

ify==1

disp('YES')

else

disp('NO')

end

4.调试程序

(1)单步运行

(2)单步运行进函数

(3)设置断点

(4)单元调试

5.2使用M脚本和M函数文件

提醒:《MATLAB实训.doc》最后刷新时间 2024-03-14 01:05:50,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《MATLAB实训.doc》该内容的真实性请自行鉴别。