MATLAB入门.docx

上传人:b****3 文档编号:11561079 上传时间:2023-06-01 格式:DOCX 页数:25 大小:449.93KB
下载 相关 举报
MATLAB入门.docx_第1页
第1页 / 共25页
MATLAB入门.docx_第2页
第2页 / 共25页
MATLAB入门.docx_第3页
第3页 / 共25页
MATLAB入门.docx_第4页
第4页 / 共25页
MATLAB入门.docx_第5页
第5页 / 共25页
MATLAB入门.docx_第6页
第6页 / 共25页
MATLAB入门.docx_第7页
第7页 / 共25页
MATLAB入门.docx_第8页
第8页 / 共25页
MATLAB入门.docx_第9页
第9页 / 共25页
MATLAB入门.docx_第10页
第10页 / 共25页
MATLAB入门.docx_第11页
第11页 / 共25页
MATLAB入门.docx_第12页
第12页 / 共25页
MATLAB入门.docx_第13页
第13页 / 共25页
MATLAB入门.docx_第14页
第14页 / 共25页
MATLAB入门.docx_第15页
第15页 / 共25页
MATLAB入门.docx_第16页
第16页 / 共25页
MATLAB入门.docx_第17页
第17页 / 共25页
MATLAB入门.docx_第18页
第18页 / 共25页
MATLAB入门.docx_第19页
第19页 / 共25页
MATLAB入门.docx_第20页
第20页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

MATLAB入门.docx

《MATLAB入门.docx》由会员分享,可在线阅读,更多相关《MATLAB入门.docx(25页珍藏版)》请在冰点文库上搜索。

MATLAB入门.docx

MATLAB入门

MATLAB入门

MATLAB是由美国Mathworks公司推出的一个科技应用软件,其名由matrix(矩阵)和laboratory(实验室)的前三个字母拼成。

作为一种广泛应用于工程计算及数值分析领域的新型高级语言,它用非常方便的环境把科学计算、结果可视化和编程集中起来,因而功能强大、简单易学,编程效率高,深受广大科技工作者和数学建模者的欢迎。

.

2.1.变量与函数

2.1.1.变量

MATLAB中变量的命名规则是:

(1)变量名必须是不含空格的单个词;

(2)变量名区分大小写;

(3)变量名最多不超过19个字符;

(4)变量名必须以字母开头,之后可以是任意字母、数字或下划线,变量名中不允许使用标点符号.

特殊变量取值

ans用于结果的缺省变量名

pi圆周率的近似值

eps数学中无穷小的近似值

flops浮点运算数

inf无穷大,如1/0=inf(infinity)

NaN不定量,如0/0=NaN(NotaNumber)

i,j虚数单位

nargin所用函数的输入变量数目

nargout所用函数的输出变量数目

realmin最小可用正实数

realmax最大可用正实数

 

2.3M-文件

MATLAB的内部函数是有限的,有时为了研究某一个函数的各种性态,需要为MATLAB定义新函数,为此必须编写函数文件.函数文件是文件名后缀为M的文件,这类文件的第一行必须是一特殊字符function开始,格式为:

function因变量名=函数名(自变量名)

函数值的获得必须通过具体的运算实现,并赋给因变量.

M文件建立方法:

(1).在MATLAB中,点:

File→New→M-file

(2).在编辑窗口中输入程序内容

(3).点File→Save,存盘,M文件名必须与函数名一致.

 

2.4矩阵及其运算

(1)数组的输入

简单数组的创建方法:

命令用途

x=[1234]创建指定元素的行向量

x=first:

last创建从开始,加1计数,到结束的行向量

x=first:

increment:

last创建first开始,加increment计数,last结束的行向量

x=linspace(first,last,n)创建first开始,到last结束,n个元素的行向量

x=logspace(first,last,n)创建开始,到结束,n个元素的对数分隔行向量

数组与数组的运算

维数相同的数组才能进行运算。

加、减、乘、除、幂运算可按元素对元素方式进行。

数组与数组的运算

设a=[a1a2…an],b=[b1b2…bn],则

a+b=[a1+b1a2+b2…an+bn];

a.*b=[a1*b1a2*b2…an*bn];

a./b=[a1/b1a2/b2…an/bn];

a.\b=[a1.\b1a2.\b2…an.\bn];

a.^b=[a1^b1a2^b2…an^bn];

corrcoef(a,b),两序列a,b的相关系数;

计算矩阵X中的每一行向量与矩阵Y中每个列向量之间的欧氏距离;

计算矩阵X中的每一行向量与矩阵Y中每个列向量之间的绝对距离。

(2).矩阵的输入

(2.1)直接输入法

从键盘直接输入矩阵的元素。

例如

A=[123;456;789],回车就可以了。

(2.2)外部文件输入法

可以利用任意的文本编辑器编辑所要使用的矩阵,利用MATLAB的load函数调用数据文件,调用方法为:

load+文件名。

例如,先在记事本中建立文件:

data1.txt

123

456

789

在MATLAB命令窗口输入

loaddata1.txt

data1

data1=

123

456

789

Load函数会从文件名所指定的文件中读取数据,并将数据赋给以文件名命名的变量。

(3).特殊矩阵的建立

生成特殊矩阵的命令函数

a=[]生成空矩阵

a=zeros(m,n)生成m行n列的零矩阵

a=ones(m,n)生成m行n列全为1的矩阵

a=eye(m,n)生成m行n列的单位矩阵

rand(m)生成m阶均匀分布的随机矩阵

randn(m)生成m阶正态分布的随机矩阵

(4).矩阵中元素或块的操作

矩阵中元素或块的常用操作

表达式或命令函数功能

A(k,:

)提取矩阵A的第k行

A(:

k)提取矩阵A的第k列

A(:

)依次提取矩阵A的每一列,将矩阵A拉伸为一个列向量

A(i1:

i2,j1:

j2)提取矩阵A的第i1行~i2行、第j1列~j2列,构成新矩阵

A([abcd],:

)提取矩阵A指定的第abcd行,构成新矩阵

A(:

[abcd])提取矩阵A指定的第abcd列,构成新矩阵

A(i1:

i2,:

)=[]删除A的第i1~i2行,构成新矩阵

A(:

j1;j2)=[]删除A的第j1~j2列,构成新矩阵

[AB]将矩阵A和B拼成新矩阵

A’矩阵A的转置

(5).矩阵的基本运算

矩阵的函数运算命令

det(A)求矩阵A的行列式

inv(A)求矩阵A的逆矩阵

eig(A)求矩阵A的特征值与特征向量

rref(A)求矩阵A的阶梯形的最简形式

rank(A)求矩阵A的秩

find(A==a)求矩阵A中元素a的位置

例symsA

A=[123;456;789]

A=

123

456

789

>>find(A==6)

ans=

8

说明用命令rank(A)可以求出矩阵A的秩,命令rref(A)把矩阵A化作行阶梯型最简形,也可以求出矩阵的秩,进而可以求出向量组的极大线性无关向量组:

以给定的向量组为列,做一个矩阵

用命令rref(A)将A化成行阶梯型最简形式,其中单位向量对应的列向量即为最大线性无关组所含向量,其它列向量的坐标即为其对应向量用最大线性无关组线性表示的系数.

例2.1 设

,求

的秩.

输入:

  A=[1,0,2,1,0;7,1,14,7,1;0,5,1,4,6;2,1,1,-10,-2];

rank(A)

输出为:

ans=

3

或输入:

A=[1,0,2,1,0;7,1,14,7,1;0,5,1,4,6;2,1,1,-10,-2];

rref(A)

输出:

ans=

1.000000.0000-7.0000-2

01.0000001

001.000041

00000

因此

的秩为3.

注:

矩阵的秩等于它的行向量组的秩,也等于它的列向量组的秩,因此,可以用rref求向量组的秩.

例2.2求向量

的秩.

输入:

A=[1,2,-1,1;0,-4,5,-2;2,0,3,0];

rref(A)

输出为:

ans=

1.000001.50000

01.0000-1.25000.5000

0000

矩阵的秩为2,所以它的行向量组的秩也是2.

例2.3向量组

是否线

性相关?

注:

向量组线性无关的充要条件是:

它的秩等于其中向量的个数.

输入:

A=[1,1,2,3;1,-1,1,1;1,3,4,5;3,1,5,7];

rref(A)

ans=

1002

0101

0010

0000

向量组的秩等于3,而它含有4个向量,所以该向量组线性相关.

例2.4求向量

的一个最大无关组,并将其余向量用极大无关组线性表示..

输入:

A=[1,-2,-1,0,2;-2,4,2,6,-6;2,-1,0,2,3;3,3,3,3,4];

B=rref(a)

输出:

B=101/3016/3

012/30-1/9

0001-1/3

00900

因此,

是列向量组的一个最大无关组.且有

.

例2.5设

验证

是R3的一个基,并把

用这个基线性表示.

输入:

a=[2,2,-1;2,-1,2;-1,2,2];b=[1,4;0,3;-4,2];

c=rref([a,b])

输出为:

c=

1002/34/3

010-2/31

001-12/3

可见

的秩为3,因此

线性无关,

是R3的一个基,而且

.

(6)符号变量和符号运算函数

符号运算函数

factor(f)因式分解,也可用于正整数的分解

expand(f)展开函数

collect合并同类项,按指定变量的次数合并系数

simplify化简函数

vpa((S,d)求符号表达式S在精度digits(d)下的数值解

floor(x)地板函数,舍去正小数至最近整数

ceil(x)天花板函数,加入正小数至最近整数

rem(x,y)求x除以y的余数

gcd(x,y)整数x和y的最大公约数

lcm(x,y)整数x和y的最小公倍数

factorial(x)正整数x的阶乘

sort(x)将数组x递增排序

sort(x,'descend')将数组x递减排序

rat(x)将实数x化为连分数表示

2.5MATLAB绘图

MATLAB具有多种图形特性,既可以在图形窗口中由菜单和工具栏的按钮处理图形,也可以在CommandWindow中使用命令来定制,这里主要介绍命令函数。

(1).plot绘图

MATLAB有很强的绘图功能,我们先介绍最简单的二维绘图指令plot。

Plot指令用来画变量x对函数y的二维图,例如要画出y=sin(x),0

symsxy

x=0:

0.1:

2*pi;y=sin(x);plot(x,y).

plot可以在一个图上画数条曲线,且可以用不同的符号和颜色来标示曲线。

格式1:

plot(x,y,s)(x,y是同维向量)

格式2:

plot(x,

,x,

,……x,

我们作如下说明:

(1)格式1是以x,y的对应元素为坐标绘制二维曲线。

s的常用内容为:

‘y’黄色;‘r’红色;‘g’绿色;‘b’蓝色;‘.’点;‘-’连线;‘+’加号;'--'长虚线;‘o’圈。

格式2是在一张图上画数条曲线。

(2)二维图及三维图都可使用指令grid加上格线。

使用gridoff去掉格线。

MATLAB会将绘图在另一个视窗展示出来。

(称为MATLABFigureWindows)。

例如:

symsxyz

x=-2*pi:

0.1:

2*pi;y=sin(x);z=cos(x);

plot(x,y,'r',x,z,'b')

图1.7

又如,画分段函数

的图像。

x1=-2:

0.1:

0;y1=x1.^2;x2=0:

0.1:

2;y2=x2+1;

plot(x1,y1,x2,y2)

图2.1

又如,

x=-10:

0.01:

10;

y=x.^2.*(x>0)+sin(x).*(x<=0);

plot(x,y)

(2).ezplot作图

格式:

ezplot(‘f(x)’,[a,b])

描绘出a

格式:

ezplot(‘f(x,y)’,[a,b,c,d]):

描绘出a

格式:

ezplot(‘x(t)’,’y(t)’,[t1,t2]):

描绘出在区间[t1,t2]上参数方程x=x(t),y=y(t)表示的函数图形。

例2.6在[0,pi]上画y=sin(x)的图形。

解输入命令ezplot(‘sin(x)’,[0,pi])

例2.7在[0,2*pi]上画

星形图。

解输入命令ezplot('cos(t).^3','sin(t).^3',[0,2*pi])

图2.2

例2.8在[-2,0.5],[0,2]上画隐函数

的图。

解输入命令ezplot('exp(x)+cos(x*y)',[-2,0.5,0,2])

例2.9在[-1,2]上画

的图形

symsxy

y=exp(3*x)+sin(2*x.^2);

ezplot(y,[-1,2])

例2.10ezplot('x.^2.*(x>0)+sin(x).*(x<=0)')

图2.3

(3).fplot作图

格式:

fplot(‘fun’,lims)

表示绘制字符串fun指定的函数在lims=[xmin,xmax]的图形.fun必须是M文件的函数名或是独立变量为x的字符串.绘图命令用起来很方便,命令中的画图区间与手写表示的区间是一致的。

虽不能画参数方程和隐函数图形,但可以把多个图形画在一个图上。

例2.11fplot('[sin(x),cos(x),x^2]',2*[-1,1])

图2.4

(4).三维曲线图

MATLAB三维曲线作图的指令结构为:

plot3(x,y,z,s)

x,y,z是n维向量,分别表示曲线上点集的横坐标、纵坐标、竖坐标,按照空间曲线的参数方程确定曲线点集来作图的。

例2.12t=0:

pi/50:

10*pi;plot3(sin(t),cos(t),t)

图2.5

(5).三维网格图

命令调用格式:

ezmesh(z),用于绘制函数

在默认平面区域内的网格图。

命令调用格式:

ezmesh(z,[a,b,c,d]),用于绘制函数

在平面区域

内的网格图。

例2.13作出函数

)的三维网格图形。

symsxytz

t=(x^2+y^2)^(1/2);

z=sin(t)/t;

ezmesh(z,[-8,8,-8,8])

图2.6

 

2.6MATLAB编程

(1)for-end循环语句的格式:

for循环变量=初值:

步长:

终值

循环体语句

end

例2.14对n=1到10,分别求sin(n*pi/10).

matlab程序如下:

在命令窗口输入如下命令

forn=1:

10

x(n)=sin(n*pi/10);

end

x

x=

0.30900.58780.80900.95111.00000.95110.80900.58780.30900.0000

例2.15x=zeros(1,6);%x是一个1行6列的零矩阵

fori=1:

6,

x(i)=1/i;

end

formatrat%使用分数来表示数值

disp(x)

11/21/31/41/51/6

例2.16求1~100的整数的和。

在命令窗口输入如下命令

sum=0;

fori=1:

100

sum=sum+i;

end

sum

sum=

5050

注意:

循环可以是多层的,循环的嵌套调用格式:

for循环变量1=初值1:

步长1:

终值1

for循环变量2=初值2:

步长2:

终值2

循环体语句

end

end

例2.17构造一个5行5列的Hilbert矩阵h,其中第i行第j列元素为1/(i+j-1).

matlab程序如下:

在命令窗口输入如下命令

symshij

h=zeros(5);

fori=1:

5,

forj=1:

5,

h(i,j)=1/(i+j-1);

end

end

formatrat

disp(h)

11/21/31/41/5

1/21/31/41/51/6

1/31/41/51/61/7

1/41/51/61/71/8

1/51/61/71/81/9

(2)while循环语句(条件循环方式),一般格式为

while表达式

循环体语句

end

while循环语句一般用于事先不知道循环次数的情况。

例2.18设银行年利率为11%,将10000元存入银行,多长时间连本带利翻一番?

程序如下:

money=10000;

years=0;

whilemoney<20000

years=years+1;

money=money*1.11;

end

years

money

years=

7

money=

103808/5

以上是这种循环单分支的情形,以下还有双分支、多分支的情形。

双分支if-else-end语句调用格式

if表达式

语句体1

else

语句体2

end

多分支if语句调用格式:

if表达式1

语句体1;

elseif表达式2

语句体2;

else

语句体3

end

例2.19已知函数f(x)=

求f(-1),f(0.5),f(1.5),画出此函数的图像。

解symsxy

y=[];

forx=-1:

0.1:

2

ifx>=-1&x<0

y=[y,x+1];

ifx==-1

f1=x+1

end

elseifx>=0&x<1

y=[y,1];

ifx==0.5

f2=1

end

else

y=[y,x^2];

ifx==1.5

f3=x^2

end

end

End

x=-1:

0.1:

2;

f1=

0

 

f2=

1

 

f3=

2.2500

>>plot(x,y)

图2.7

例2.20设

解在M-文件里

functionf=fun2(x)

ifx>1

f=x^2+2

elseifx<=0

f=x^3

else

f=3*x

end

end

在命令窗口:

fun2(1.5)

fun2(1.5)

f=

4.2500

fun2(0.5)

f=

1.5000

fun2(-2)

f=

-8

例2.21计算

解clear

symssn

s=0;n=1;

whilen<=100

s=s+1/n/n;

n=n+1;

end

s

s=

1.6350

实验2

[实验2.1]计算下列各式的值:

(写出格式及执行结果)

(1)

(2)

;(3)

;(4)8!

(5)x=[4,5,6,7,3,2],求它的升序排列与降序排列;

[实验2.2]

,计算:

[实验2.3]在计算机上练习以下算式的输入:

; .

[实验2.4]在一幅图上画出一个周期的正弦曲线和余弦曲线,正弦曲线用蓝色,余弦曲线用红色.

[实验2.5]画出函数

上的图像。

实验2.6]绘出函数

上的图象。

[实验2.7]画出函数

在[-1,2]上的图象.

[实验2.8]画出函数

上的网格图。

[实验2.9]已知矩阵

,求它的行列式、秩、逆矩阵。

将此矩阵化为阶梯形最简形式。

求此矩阵的1行、2行,2列、3列的元素排成的矩阵。

取出此矩阵的第3行。

取出此矩阵的第2列。

删除此矩阵的第1列。

[实验2.10]编程求

[实验2.11]设

编程求

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2