当前位置:文档之家› Matlab入门基础知识整理

Matlab入门基础知识整理

Matlab入门基础知识整理
Matlab入门基础知识整理

MATLAB基础知识

MATLAB的主要功能

1.数值计算和符号计算功能

例如,求解线性方程组

在MATLAB命令窗口输入命令:

a=[2,3,-1;3,-5,3;6,3,-8];

b=[7;8;9];

x=inv(a)*b

也可以通过符号计算来解此方程

syms x1 x2 x3

[x1,x2,x3]=solve(2*x1+3*x2-x3-7,3*x1-5*x2+3*x3-8,6*x1+3*x2-8*x3-9)

2.绘图功能

例如,分别绘制函数y=300sinx/x和y=x2的曲线

x=-20:0.1:20;

plot(x,300*sin(x)./x,':',x,x.^2);

3.程序设计语言功能

MATLAB是解释性语言,程序执行速度较慢,而且不能脱离MATLAB环境而独立运行。MathWorks公司提供了将MATLAB源程序编译为独立于MATLAB集成环境运行的EXE文件以及将MATLAB程序转化为C语言程序的编译器。4.扩展功能

MATLAB包含两部分内容:基本部分和各种可选的工具箱。

基本部分构成了MATLAB的核心内容,也是使用和构造工具箱的基础。

工具箱扩展了MATLAB的功能。

功能性工具箱

学科性工具箱

MATLAB的集成开发环境

命令窗口(Command Window)用于输入命令并显示除图形以外的所有执行结果。一般来说,一个命令行输入一条命令,命令行以回车或分号结束

但一个命令行也可以输入若干条命令,各命令之间以逗号或分号隔开

如果一个命令行很长,一个物理行之内写不下,可以在第1个物理行之后加上3个小黑点并按下回车键,然后接着下一个物理行继续写命令的其他部分。3个小黑点称为续行符,即把下面的物理行看作该行的逻辑继续。例如:

z=1+1/(1*2)+1/(1*2*3)+1/(1*2*3*4)+ …

1/(1*2*3*4*5)

工作空间(Workspace)是MATLAB用于存储各种变量的内存空间。

当前目录(Current Directory)是指MATLAB运行时的工作目录,只有在当前目录下的文件、函数才可以被运行或调用。

如果没有特殊指明,数据文件也将存放在当前目录下。

命令历史窗口

自动保留自安装起所有用过的命令的历史记录,并且还标明了使用时间,从而方便用户查询。而且,通过双击命令可进行历史命令的再运行。

MATLAB的帮助功能

进入MATLAB帮助界面可以通过以下方法。

●单击MATLAB主窗口工具栏中的Help按钮。

●输入帮助命令。

帮助命令

1.help命令

在命令窗口中直接输入help命令将会显示当前帮助系统中所包含的所有项目。help加函数名:显示该函数的帮助说明。

例如help magic

2.lookfor命令

例如lookfor fourier

演示系统

在命令窗口输入“demos”,或者选择主窗口“Help”菜单中的“Demos”子菜单,打开的演示系统如图所示。

MATLAB的变量和数据操作

预定义变量

1.变量命名

变量名只能是以字母开头,后接字母、数字或下画线的字符序列,最多63个字符。

例如x、x_1、xy12

在MATLAB中,变量名区分字母的大小写。

例如addr、Addr和ADDR表示3个不同的变量。

2.赋值语句

MATLAB赋值语句有两种格式:

(1)变量=表达式;

(2)表达式

第1种语句形式下,MATLAB将右边表达式的值赋给左边的变量

第2种语句形式下,将表达式的值赋给MATLAB的预定义变量ans。

在语句的最后加分号,那么,MATLAB仅仅执行赋值操作,不再显示运算的结果。

注释以%开头

计算表达式的

值,并将结果赋给变量y,然后显示出结果。

x=sqrt(1+pi);

y=(exp(x)+log(abs(sin(x)^2-sin(x*x))))/(x-5*i)

y =

0.5690 + 1.3980i

其中,pi和i都是MATLAB定义的变量,分别代表圆周率π和虚数单位。

预定义变量

3. 变量的管理

变量的显示与删除

显示

who

whos 还给出它们的维数、所占字节数以及变量的类型。

删除

clc

clear

变量文件

利用MAT文件可以把当前MATLAB工作空间中的一些有用变量长久地保留下来。

MAT文件是MATLAB保存数据的一种标准格式二进制文件,扩展名是.mat。MAT文件的生成和装入

save 文件名[变量名表] [-append][-ascii]

load 文件名[变量名表] [-ascii]

数据的输出格式

输入x=[4/3 1.2345e-6]

系统默认小数点后四位

用format命令设置数据输出格式

format 格式符

短格式(short):1.3333 0.0000

短格式e方式(short e):1.333e+00 1.2345e-06

长格式(long):1.33333333333333 0.00000123450000

长格式e方式(long e):1.33333333333333e+000 1.23450000000000e-006

银行格式(bank):1.33 0.00

十六进制格式(hex):3ff5555555555555 3eb4b6231abfd271

MATLAB矩阵及基本运算

矩阵的生成

1.直接输入法

将矩阵的所有元素用方括号括起来,按矩阵行的顺序输入各元素,同一行的各元素之间用空格或逗号分隔,不同行的元素之间用分号分隔。

矩阵元素也可以是表达式,MATLAB将自动计算结果。

例如:B=[10,5-sqrt(7),sin(pi/2);7,4*8,abs(-7)]

矩阵元素可以是复数虚部i

也可以分别建立实部矩阵和虚部矩阵,再合起来构成复数矩阵。

例如:

R=[1,2,3;4,5,6];

I=[1.1,2.2,3.3;4.4,5.5,6.6];

ri=R+i*I

利用已建好的矩阵建立更大的矩阵

例如:

A=[1,2,3;4,5,6;7,8,9];

B=[11:13;14:16;17:19];

C=[A,B;B,A]

2. 冒号表达式

利用冒号可以产生行向量。

冒号表达式的一般格式为a:b:c

其中,a为初始值,b为步长,c为终止值(c > a)。

例如:

t=0:2:10

t =

0 2 4 6 8 10

还可以用linspace函数产生行向量。其调用格式为

linspace(a,b,n)

其中a和b是生成向量的第1个和最后一个元素,n是元素总数。

当n省略时,自动产生100个元素。显然,linspace(a,b,n)与a:(b ? a)/(n ? 1):b等价。

矩阵(元素)的替换、提取和矩阵拆分

如果想将矩阵A的第2行第3列的元素赋为76,则可以通过下面语句来完成:A(2,3)=76 不影响其他元素的值。

也可以采用矩阵元素的序号来引用矩阵元素。矩阵元素按列编号,先第1列,再第2列,依次类推。

以m × n矩阵A为例,矩阵元素A(i, j)的序号为(j?1)*m + i。

size(A)函数返回包含两个元素的向量,分别是矩阵A的行数和列数

length(A):给出行数和列数中的较大者

利用冒号表达式获得子矩阵

①A(m,n)表示取A矩阵第m行、第n列的元素

A(m,:)表示取A矩阵第m行的全部元素

A(:,n)表示取A矩阵的第n列全部元素

②A(m1:m2,:)表示取A矩阵第m1~m2行的全部元素

A(:,n1:n2)表示取A矩阵第n1~n2列的全部元素,

A(m1:m2,n1:n2)表示取A矩阵第m1~m2行内,并在第n1~n2列中的所有元素。

利用空矩阵删除矩阵的元素

空矩阵是指无任何元素的矩阵,表示形式为[ ]。

给变量x赋空矩阵的语句为

x=[ ]

将某些元素从矩阵中删除,采用将其置为空矩阵的方法就是一种有效的方法。例如:

A=[1 2 3 4 5 6;7 8 9 10 11 12;13 14 15 16 17 18];

A(:,[2 4])=[ ]

算术运算

MATLAB的基本算术运算有:+(加)、?(减)、*(乘)、/(右除)、\(左除)、

^(乘方)。

(1)矩阵加减运算

运算规则是:若A和B矩阵的维数相同,则可以执行矩阵的加减运算,A和B 矩阵的相应元素相加减。如果A与B的维数不相同,则MATLAB将给出错误信息,提示用户两个矩阵的维数不匹配。

一个标量也可以和其他不同维数的矩阵进行加减运算。

例如:

x=[2,-1,0;3,2,-4];

y=x-1;

y=y+x

(2)矩阵乘法

矩阵A和B进行乘法运算,要求A的列数与B的行数相等,或称A和B两矩阵维数相容。如果两者的维数不相容,则将给出错误信息,提示用户两个矩阵是不可乘的。

例如:

A=[1,2,3;4,5,6];

B=A*A

??? Error Inner matrix dimensions must agree.

在MATLAB中,还可以进行矩阵和标量相乘。矩阵和标量相乘是矩阵中的每个元素与此标量相乘。

(3)矩阵除法

在MATLAB中,有两种矩阵除法运算:\和/,分别表示左除和右除。如果A矩阵是非奇异方阵,则A\B和B/A运算可以实现。A\B等效于A的逆左乘B矩阵,也就是inv(A)*B,而B/A等效于A矩阵的逆右乘B矩阵,也就是B*inv(A)。(4)矩阵的乘方

一个矩阵的乘方运算可以表示成A^x,要求A为方阵,x为标量。

2.点运算

两矩阵进行点运算是指它们的对应元素进行相关运算,要求两矩阵的维参数相同。点运算符有.*、./、.\和.^。

例如:

A=[1,2,3;4,5,6;7,8,9];

B=[-1,0,1;1,-1,0;0,1,1];

C=A.*B

C =

-1 0 3

4 -

5 0

0 8 9

如果A、B两矩阵具有相同的维数,则A./B表示A矩阵除以B矩阵的对应元素。

B.\A等价于A./B。

3.MATLAB常用数学函数

例如:

y=sin(0:pi/2:2*pi)

y =

0 1.0000 0.0000 -1.0000 -0.0000

y=abs(y)

y =

0 1.0000 0.0000 1.0000 0.0000

abs函数可以求实数的绝对值、复数的模、字符串的ASCII码值。

x=[-3.14,3+4i];

abs(x)

ans =

3.1400 5.0000

用于取整的函数有fix、floor、ceil、round

向0方向取整函数fix:调用格式为I=fix(X),功能:返回X中每个元素的最靠近零的整数,若X为复数,则分别对X实部和虚部取整。

向-∞方向取最小整数函数floor

向∞方向取最大整数函数ceil

四舍五入取整函数round

模数余函数mod:调用格式为M=mod(X,Y),功能:返回X关于Y的余数,其算法为:mod(X,Y)=x-y.*floor(X./Y) 例如:

>>x1=mod(16,3) >>x2=mod(-16,3) >>x3=mod(16,-3)

x1= x2= x3=

1 2 -2

除后余数函数rem:调用格式为M=rem(X,Y),功能:返回X关于Y的余数,其算法为:rem(X,Y)=x-y.*fix(X./Y) ,相当于去零留整,与C语言中取余%功能相同例如:

>>x1=rem(16,3) >>x2=rem(-16,3) >>x3=rem16,-3)

x1= x2= x3=

1 -1 1

符号函数sign:调用格式为sign(X),功能:若X>0,返回1;若X=0,返回0;若X<0,返回-1。若X为复数,则算法为:sign(X)=X./abs(X).

字符与字串:

建立一维数组:把字符置于单引号内就定义了字符数组,只不过是一维数组,即字符向量。例如下面的语句建立了1×13字符数组,名字叫name。

>>name='Thomas R.Lee';

>>whos name

Name Size Bytes Class Attributes

name 1×13 26 char

class和ischar函数都能认识变量name是字符数组。

>>class(name) >>ischar(name)

ans= ans=

char 1

可以使用字串连接函数strcat和strvcat,或者使用连接运算符[ ]把两个或多个字符数组连接在一起,形成一个新字符数组,先认识下面两个函数:

strcat函数调用格式:t=strcat(s1,s2,s3,...),strcat函数横向连接字符数组s1、s2、s3等对应的行,所有的输入数组必须有相同的行数(或任意一个是单一字串),输入字符数组中的尾部空格被忽略,不出现在输出中,但字串单元数组中的尾部空格

会保留。而使用连接运算符[ ]时,会保留尾部空格,这是它和strcat函数的的区别。例如:

>>s1='everybody';

>>s2='goodbye';

>>strcat(s1,s2)

ans=

everybodygoodbye

>>t=[s1,s2]

t=

everybody goodbye

strvcat函数调用格式为:S=strvcat(t1,t2,t3,...),strvcat函数纵向连接字符数组t1、t2、t3等,形成一个新字符数组S。Strvcat在较短的字串后添加空格,以便与最长的字串等长,输入的空数组会被忽略。

例如:命令strvcat('Hello','MAT')和['Hello','MAT ']基本一样,不同的是strvcat 函数在MAT后面加了3个空格。

>>strvcat('Hello','MAT') >>['Hello','MAT ']

ans= ans=

Hello Hello

MAT MAT

建立二维数组:一定保证每一行都有相同的长度,当几个不同长度的字串建立字符数组时,可以人为的在较短的字串后添加空格,强制每行都有一样的长度例如:>>name1=['Thomas R.Lee ',Senior Developer];%有3个空格

建立字符数组一个简单方法是用char函数。Char能够自动对所有字串添加尾部空格,使它们与最长的输入字串等长,还是上面字串,可用char函来建立:>>name2=char(''Thomas R.Lee',Senior Developer')

Name2=

Thomas R.Lee

Senior Developer

字串比较①strcmp函数调用格式为k=strcmp('str1','str2'),功能:比较字串str1和str2,相等则k=1,否则k=0

例:>>k=strcmp('Hi','Hello')

K=

0 %k=0表示两个字串不相等

②strncmp函数调用格式为k=strncmp('str1','str2',n),功能:比较字串str1和str2前面n个字符,相等则k=1,否则k=0

例:>>k=strncmp('Hi','Hello',1)

K=

1 %k=1表示两个字串前1个相等

③strcmpi函数调用格式为k=strcmpi('str1','str2'),功能与strcmp一样只是不区分大小写。

④strncmpi函数调用格式为k=strncmpi('str1','str2',n),功能与strncmp一样只是不区分大小写。

比较字串中的单个字符,直接使用关系运算符即可例:

>>A='adbddf';

>>B='ddbaaf';

>>A=B

ans=

0 1 1 0 0 1

关系运算

<(小于)、<=(小于或等于)、>(大于)、>=(大于或等于)、= =(等于)、~=(不等于)

若关系成立,关系表达式结果为1,否则为0。

例如:

A=5

A = 5

A=A ==10

A = 0

当参与比较的量是两个维数相同的矩阵时,比较是对两矩阵相同位置的元素逐个进行,并给出比较结果。最终的关系运算的结果是一个维数与原矩阵相同的矩阵,它的元素由0或1组成。

当参与比较的一个是标量,而另一个是矩阵时,则把标量与矩阵的每一个元素按标量关系运算规则逐个比较,并给出元素比较结果。最终的运算结果是一个维数与矩阵相同的矩阵,它的元素由0或1组成。

逻辑运算

&(与)、|(或)和~(非)。此外,MATLAB还提供了4个逻辑运算函数:and(a,b)、or(a,b)、not(a)和xor(a,b)。

在算术、关系、逻辑运算中,算术运算优先级最高,逻辑运算优先级最低。

例如:

A = [23,54,12,6,-78];

B = [5,324,7,-43,76];

C1 = A>10 & B<10

C1 =

1 0 1 0 0

C2 = xor(A>10,B<10)

C2 =

0 1 0 1 0

建立矩阵A,然后找出在 [10,20] 区间的元素的位置。

A=[4,15,-45,10,6;56,0,17,-45,0]

A =

4 1

5 -45 10 6

56 0 17 -45 0

find(A>=10 & A<=20)

ans =

3

6

7

字符串

构建方式是通过单撇号括起来的字符序列来实现的。

例如:

xm='Beijing 2008'

xm =

Beijing 2008

MATLAB将一个字符串当作一个行向量,每个元素对应一个字符。多行字符串要求各行字符数要相等。

字符串是以ASCII形式存储的。abs和double函数都可以用来获取字符串矩阵所对应的ASCII数值矩阵。相反,char函数可以把ASCII矩阵转换为字符串矩阵。建立一个字符串向量,然后对该向量做如下处理。

(1)取第1~5个字符组成的子字符串。

(2)将字符串中的小写字母变成相应的大写字母,其余字符不变。

(3)统计字符串中小写字母的个数。

命令如下:

ch='Welcome to Beijing';

subch=ch(12:18) %取子字符串

k=find(ch>='a'&ch<='z'); %找小写字母的位置

ch(k)=ch(k)-('a'-'A'); %将小写字母变成相应的大写字母

char(ch)

length(k) %统计小写字母的个数

ans =

14

(1)若字符串中的字符含有单撇号,则该单撇号字符应用两个单撇号来表示。例如:

disp('It''s a book.')

将输出:

It's a book.

(2)可以用字符串向量的形式连接多个字符串,即用中括号括起来。例如:

x=8;

y=10;

disp([num2str(x),' + ',num2str(y),' = ',num2str(x+y)])

其中disp函数的自变量是一个长字符串。输出为

8 + 10 = 18

MATLAB程序设计

学习目标

●掌握建立和执行M文件的方法。

●掌握利用if语句、switch语句实现选择结构的方法。

●掌握利用for语句、while语句实现循环结构的方法。

●熟悉利用向量运算来代替循环操作的方法。

●掌握定义和调用MATLAB函数的方法。

M文件

M文件的建立与打开

M文件可以根据调用方式的不同分为两类:

命令文件(Script File)和函数文件(Function File)

(1)命令文件没有输入参数,也不返回输出参数,而函数文件可以带输入参数,也可返回输出参数。

(2)命令文件对MATLAB工作空间中的变量进行操作,文件中所有命令的执行结果也完全返回到工作空间中,而函数文件中定义的变量为局部变量,当函数文件执行完毕时,这些变量被清除。

(3)命令文件可以直接运行,在MATLAB命令窗口输入命令文件的名字,就会顺序执行命令文件中的命令,而函数文件不能直接运行,而要以函数调用的方式来调用它。

1.数据的输入

从键盘输入数据,可以使用input函数来进行,该函数的调用格式为

A=input(’提示信息’,选项);

提示信息为一个字符串,用于提示用户输入什么样的数据。例如,从键盘输入A 矩阵,可以采用下面的命令来完成:

A=input('输入A矩阵:');

‘s’选项允许用户输入一个字符串。

例如,想输入一个人的姓名,可采用命令:

xm=input('What''s your name?','s');

2.数据的输出

数据的输出主要采用disp函数,其调用格式为

disp(输出项)

其中,输出项既可以为字符串,也可以为矩阵。

例如:

A='Hello,World!';

disp(A)

程序控制结构

顺序结构

顺序结构是指按照程序中语句的排列顺序依次执行。

例求一元二次方程ax2 + bx + c = 0的根。直接根据求根公式求根。

a=input('a=?');

b=input('b=?');

c=input('c=?');

d=b*b-4*a*c;

x=[(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)];

disp(['x1=',num2str(x(1)),',x2=',num2str(x(2))]);

程序的暂停

当程序运行时,有时需要暂停程序的执行,可以使用pause函数,其调用格式为pause(延迟秒数)

如果省略延迟时间,则将暂停程序,直到用户按任一键后程序继续执行。

若要强行中止程序的运行可使用Ctrl+C组合键。

选择结构

选择结构是根据给定的条件成立或不成立,分别执行不同的语句。

1.if语句

(1)单分支if语句:

if 条件

语句块

end

当条件成立时,则执行语句组,执行完之后继续执行if语句的后继语句,若条件不成立,则直接执行if语句的后继语句。

(2)双分支if语句:

if 条件

语句块1

else

语句块2

end

当条件成立时,执行语句组1,否则执行语句组2,语句组1或语句组2执行后,再执行if语句的后继语句。

例计算分段函数:

程序如下:

x=input('请输入x的值:');

if x<0

y=log(x*x+1)+sqrt(x*x+1);

else

y=sin(x)/(x+1);

end

disp(y) %可以去掉disp

(3)多分支if语句:

if 条件1

语句块1

elseif 条件2

语句块2

……

elseif 条件n

语句块n

else

语句块n+1

end

例输入一个字符,若为大写字母,则输出其对应的小写字母;若为小写字母,则输出其对应的大写字母;若为数字字符则输出其对应数的平方,若为其他字符则原样输出。

c=input('请输入一个字符','s');

if c>='A' & c<='Z'

disp(lower(c));

elseif c>='a'& c<='z'

disp(upper(c));

elseif c>='0'& c<='9'

disp(str2num(c)^2);

else

disp(c);

end

2.switch语句

switch语句根据表达式的取值不同,分别执行不同的语句,其语句格式为switch 表达式

case 结果表1

语句块1

case 结果表2

语句块2

……

case 结果表n

语句块n

otherwise

语句块n+1

end

switch后面的表达式应为一个标量或一个字符串,case后面的结果不仅可以为一个标量或一个字符串,而且还可以为一个将多个结果用大括号括起来的单元数据。如果case后面的结果为一个单元数据,则表达式的值等于该单元数据中的某个元素时,执行相应的语句组。

例将上例改用switch语句实现。

c=input('请输入一个字符:','s');

cc=abs(c);

switch(cc)

case num2cell(abs('A'):abs('Z'))

disp(lower(c));

case num2cell(abs('a'):abs('z'))

disp(upper(c));

case num2cell(abs('0'):abs('9'))

disp((abs(c)-abs('0'))^2);

otherwise

disp(c);

end

num2cell函数是将数值矩阵转化为单元数据,num2cell(1:5)等价于{1,2,3,4,5}。

循环结构

循环是指按照给定的条件,重复执行指定的语句。

1.for语句

for 循环变量=表达式1:表达式2:表达式3

循环体语句

end

其中,表达式1的值为循环变量的初值,

表达式2的值为步长,

表达式3的值为循环变量的终值。步长为1时,表达式2可以省略。

例一个3位整数,各位数字的立方和等于该数本身则称该数为水仙花数,输出全部水仙花数。

shu=[]; %用于存放结果,先赋空值

for m=100:999

m1=fix(m/100); %求m的百位数字

m2=rem(fix(m/10),10); %求m的十位数字

m3=rem(m,10); %求m的个位数字

if m==m1*m1*m1+m2*m2*m2+m3*m3*m3

shu=[shu,m]; %存入结果

end

end

shu

2.while语句

while(条件)

循环体语句

end

例求使最小的n。

程序如下:

y=0;

n=0;

while (y<=1.5)

n=n+1;

y=y+1/n/n;

end

disp(['满足条件的n是:',num2str(n)])

例输入两个整数,求它们的最小公倍数。

程序如下:

x=input('请输入第一个数:');

y=input('请输入第二个数:');

z=max(x,y);

while or(rem(z,x)~=0,rem(z,y)~=0)

z=z+1;

end

disp([num2str(x),'和',num2str(y),'的最小公倍数是:',num2str(z)])

3.break 语句和continue 语句

break 语句用于终止循环的执行。当在循环体内执行到该语句时,程序将跳出循环,继续执行循环语句的下一语句。

continue 语句控制跳过循环体中的某些语句。当在循环体内执行到该语句时,程序将跳过循环体中所有剩下的语句,继续下一次循环。

4.循环的嵌套

例 设x ,y ,z 均为正整数,求下列不定方程组共有多少组解。

???=++=++400

16202520z y x z y x 方程的个数少于未知数的个数的方程称为不定方程,一般没有唯一解,而有多组解。对于这类问题,可采用穷举法,即将所有可能的取值一个一个地去试,看是否满足方程,如满足即是方程的解。

首先确定3个变量的可取值,x 、y 、z 均为正整数,所以3个数的最小值是1,而其和为20,所以3者的最大值是18。程序如下:

n=0;

a=[];

for x=1:18

for y = 1:18

z = 20 - x - y;

if 25* x + 20 * y + 16 * z == 400

a=[a;x,y,z];

n = n + 1;

end

end

end

disp(['方程组共有',num2str(n),'组解']);

a

函 数 文 件

函数文件由function 语句引导,其基本结构为

function 输出变量=函数名(输入变量)

注释说明部分

函数体语句

当输出多于一个时,则应该用方括号括起来。

函数名和文件名要一致。

例 编写求一个向量之和以及向量平均值的函数文件。

function [s,m]=fvector(v)

%VECTOR fvector.m calculates sum and mean of a vector

%v 向量

%s 和

%m 平均值

%2008年12月10日编

[m,n]=size(v);

if (m>1 & n>1) | (m==1 & n==1)

error('Input must be a vector')

end

s=sum(v); %求向量和

m=s/length(v); %求向量平均值

将以上函数文件以文件名fvector.m存盘,然后在MATLAB命令窗口调用该函数:[s,p]=fvector(1:10)

注释说明包括如下3部分内容。

●紧随函数文件引导行之后以%开头的第一注释行。这一行一般包括大写的函数文件名和函数功能简要描述,供lookfor关键词查询和help在线帮助用。

●第一注释行及之后连续的注释行通常包括函数输入输出参数的含义及调用格式说明等信息,构成全部在线帮助文本。

●相隔一空行的注释行包括函数文件编写和修改的信息,如作者、修改日期、版本等内容,用于软件档案管理。

例利用函数的递归调用,求n!。

求n!需要求(n?1)!,可采用递归调用。

function f=factor(n)

if n<=1

f=1;

else

f=factor(n-1)*n; %递归调用求(n-1)!

end

【课堂练习】编写函数文件,实现直角坐标(x,y)与极坐标(ρ,θ)之间的转换。

function [rho,theta]=tran(x,y)

rho=sqrt(x*x+y*y);

theta=atan(y/x);

全局变量与局部变量

在MATLAB中,函数文件中的变量是局部的,即在一个函数文件中定义的变量不能被另一个函数文件引用。如果在若干函数中,都把某一变量定义为全局变量,那么这些函数将公用这一个变量。全局变量的作用域是整个MATLAB工作空间,即全程有效,所有的函数都可以对它进行存取和修改。

全局变量用global命令定义,格式为

global 变量名

程序调试

应用程序的错误有两类,一类是语法错误,另一类是运行时的错误。语法错误包括语法或文法的错误,如函数名拼写错、表达式书写错、数据类型错误等。MATLAB能够检查出大部分的语法错误,给出相应错误信息,并标出错误在程序中的行号。

程序运行时的错误是指程序的运行结果有错误,这类错误也称为程序逻辑错误。MATLAB系统对逻辑错误是无能为力的,不会给出任何提示信息。这时可以通过一些调试手段来发现程序中的逻辑错误,最常见的办法是通过获取中间结果的

方式来获取错误可能发生的程序段,以便进一步分析错误的原因。

1.控制单步运行

(1)Step :单步运行。每单击一次,程序运行一次,但不进入函数。

(2)Step In :单步运行。遇到函数时进入函数内,仍单步运行。

(3)Step Out :停止单步运行。如果是在函数中,跳出函数;如果不在函数中,直接运行到下一个断点处。

(4)Go Until Cursor :直接运行到光标所在的位置。

2.断点操作

(1)Set/Clear Breakpoint :设置或清除断点。

(2)Set/Modify Conditional Breakpoint :设置或修改条件断点。条件断点可以使程序执行到满足一定条件时停止。

(3)Enable/Disable Breakpoint :使断点有效或无效。

(4)Clear Breakpoints in All Files :清除所有断点。

(5)Stop If Errors/Warnings :在程序执行出现错误或警告时,停止程序运行,进入调试状态,不包括try …catch 语句中的错误。

程序性能分析

通过函数文件性能评估器(Profiler )用户可以很方便地了解程序执行过程中各函数及函数中的每条语句所耗费的时间,从而有针对性地改进程序,提高程序的运行效率。

在MATLAB 主窗口的“Desktop ”菜单中选择“Profiler ”命令或在M 文件编辑器的“Tools ”菜单中选择“Open Profiler ”命令,屏幕上将出现Profiler 性能评估器,如图所示。在“Run this code ”编辑框中输入一个M 文件名(如ch01031)后,单击Start Profiling 命令按钮或按回车键启动分析。ch01031.m 中的代码如下: x=-20:0.1:20;

y=300*sin(x)./x;

plot(x,y);

检测综述报表提供了运行文件的时间和相关函数的调用频率,反映出整个程序耗时7.052s ,其中执行与绘制图形中调用的newplot 函数耗时最多。单击某函数名,则打开相应函数的详细报告。

程序优化

(1)向量化。

例 计算 n

L 1312111++++ ,当n = 100时,求y 的值。 用循环结构实现

y=0;

n=100;

for i=1:n

y=y+1/i;

end

y

采用向量求和的方法

n=100;

i=1:n;

f=1./i;

y=sum(f)

(2)预分配内存空间。通过在循环之前预分配向量或数组的内存空间可以提高for循环的处理速度。例如,下面的代码用函数zeros预分配for循环中用到的向量a的内存空间,使得这个for循环的运行速度显著加快。

程序1:

clear;

a=0;

for n=2:1000

a(n)=a(n-1)+10;

end

程序2:

clear;

a=zeros(1,1000);

for n=2:1000

a(n)=a(n-1)+10;

end

程序2采用了预定义矩阵的方法,运行时间比程序1要短。

(3)减小运算强度。采用运算量更小的表达式,一般来说,乘法比乘方运算快,加法比乘法运算快,位运算比求余运算快。例如:

clear;

a=rand(32); %生成一个32×32的矩阵

x=a.^3;

y=a.*a.*a;

从Profiler的评估报告中可以看出,a.*a.*a运算比a.^3运算所花的时间少得多。

二维曲线

1.plot函数

plot(x,y)

其中x和y为大小相同的向量,分别用于存储x坐标和y坐标数据。

t=0:0.1:8*pi;

x=cos(t)+t.*sin(t);

y=sin(t)-t.*cos(t);

plot(x,y);

(1)当x和y是同维矩阵时,配对的x、y按对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数。

例如,在同一坐标中绘制3条幅值不同的正弦曲线

x=0:pi/10:2*pi;

y=sin(x);

plot([x;x;x]',[y;y*2;y*3]')

当x是向量,y是有一维与x同维的矩阵时,则绘制出多根曲线,曲线条数等于y矩阵的另一维数,x被作为这些曲线共同的横坐标。

x=0:pi/10:2*pi;

y=sin(x);

plot(x,[y;y*2;y*3])

(2)当plot函数只有一个输入参数时,即

plot(y)

若y是实型向量,则以该向量元素的下标为横坐标、元素值为纵坐标画出一条连续曲线;若y是复数向量,则分别以向量元素实部和虚部为横、纵坐标绘制一条曲线。若y是实矩阵,则按列绘制每列元素值相对其下标的曲线,曲线条数等于输入参数矩阵的列数;若y是复数矩阵,则按列分别以元素实部和虚部为横、纵坐标绘制多条曲线。

(3)当plot函数有多个输入参数,且都为向量时,即

plot(x1,y1,x2,y2,…,xn,yn)

其中,x1和y1,x2和y2,……,xn和yn分别组成一组向量对,每一组向量对的长度可以不同。每一向量对可以绘制出一条曲线,这样可以在同一坐标内绘制出多条曲线。

例如,在同一坐标中绘制3条幅值不同的正弦曲线,命令也可以写成:

x=0:pi/10:2*pi;

y=sin(x);

plot(x,y,x,y*2,x,y*3)

2.具有两个纵坐标标度的图形

绘制出具有不同纵坐标标度的两个图形,可以使用plotyy绘图函数。这种图形有利于图形数据的对比分析。

plotyy(x1,y1,x2,y2)

其中,x1和y1对应一条曲线,x2和y2对应另一条曲线。横坐标的标度相同,纵坐标有两个,左纵坐标用于x1、y1数据对,右纵坐标用于x2、y2数据对。

3.设置曲线样式

在plot函数中加绘图选项,其调用格式为

plot(x1,y1,‘选项1’,x2,y2,‘选项2’,…,xn,yn,‘选项n’)

注意:选项缺省默认实现连接,颜色随机,选项需用‘’括起来

例在同一坐标内,分别用不同线型和颜色绘制曲线y1 = 和y2 = x)。

程序如下:

x=linspace(0,2*pi,1000);

y1=0.2*exp(-0.5*x).*cos(4*pi*x);

y2=1.5*exp(-0.5*x).*cos(pi*x);

plot(x,y1,x,y2,'k:');

4. 图形标注与坐标控制

1) 图形标注

●title(‘图形名称’)

●xlabel(‘x轴说明’)

●ylabel(‘y轴说明’)

●text(x,y,‘图形说明’)在(x,y)坐标处添加图形说明

●legend(‘图例1’,‘图例2’,……)用于绘制曲线所用线型、颜色或数据点标记图例

添加文本说明也可用gtext命令,执行该命令时,十字坐标光标自动跟随鼠标移动,单击鼠标即可将文本放置在十字光标处,如命令gtext('cos(x)'),即可放置字符串cos(x)。

例:在0≤x≤2 区间内,绘制曲线y1 = e?0.5x和y2 = ,并添加图形标注。

x=0:pi/100:2*pi;

y1=exp(-0.5*x);

y2=exp(-0.5*x).*sin(2*x);

plot(x,y1,x,y2)

title('x from 0 to 2{\pi}');

xlabel('Variable X');

ylabel('Variable Y');

text(1.5,0.5,'曲线y1=e^{-0.5x}');

text(3,-0.1,‘曲线y2=cos(4{\pi}x)e^{-0.5x}’); %有点错误,自行修改

legend('y1','y2')

2)坐标控制

根据要绘制曲线数据的范围选择合适的坐标刻度

axis([xmin xmax ymin ymax])

axis函数的其他用法

●axis equal:纵、横坐标轴采用等长刻度。

●axis square:产生正方形坐标系(默认为矩形)。

●axis on/off:显示/取消坐标轴。

grid on/off命令控制是画还是不画网格

box on/off命令控制是加还是不加边框线

hold on/off命令控制是否保持该图形窗

ginput( )

用鼠标从二维图形上获取n个点的数据坐标。

调用格式:【x,y,button】=ginput(n)

n为通过鼠标从图上获取的数据点的数目

x 存放n个数据点的横坐标

y 存放n个数据点的纵坐标

button 存放每次按下鼠标键的标号1左键2中键3右键

例用鼠标左键取点,每个点在屏幕上作一个圆圈标记,然后连成折线,最后用鼠标在图中适当位置写一行标注文字:用左键取点,然后画折线。

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); % line函数是将x为横坐标y为纵坐标画出的相应点连起来

hold off

gtext(‘用左键取点,然后画折线’);

使用plot函数绘图时,都是等间隔取点,然后连接成曲线,因此点不能过少,否则画出来的图形失真。(莱奎斯特定律,《数字信号处理》将学习)

fplot函数可自适应地对函数进行采样

调用格式为fplot(‘fname’,【lims】,tol,选项)

其中,fname为函数名,以字符串形式出现,它可以是由多个函数,但自变量都必须为x。lims为x、y的取值范围,以行向量形式出现。tol为相对允许误差,缺省默认为2e ? 3。

例如:

fplot('[sin(x),cos(x)]',[0,2*pi,-1.5,1.5], 'r.')

5.图形窗口的分割

分割后的图形窗口由若干个绘图区组成,每一个绘图区可以建立独立的坐标系并绘制图形。同一图形窗口中的不同图形称为子图。

subplot(m,n,p)

该函数将当前图形窗口分成m × n个绘图区,即每行n个,共m行,区号按行优先编号,且选定第p个区为当前活动区。在每一个绘图区允许以不同的坐标系单独绘制图形。

例在图形窗口中,以子图形式同时绘制多根曲线。

程序如下:

subplot(2,2,[1 3]);

fplot('x-cos(x^3)-sin(2*x^2)',[-3,3]);

xlabel('(a)');

x=-3:0.1:3;

subplot(2,2,2);

y2 = sin(2.*x.^2);

plot(x,y2);xlabel('(b)'); axis([-3 3 -1.2 1.2])

subplot(2,2,4);

y3 = cos(x.^3);

plot(x,y3);xlabel('(c)'); axis([-3 3 -1.2 1.2]); grid on;

练习

1、在[0,2*pi]用红线画sin(x),用绿线画cos(x),并加标注“自变量x”, “正弦、余弦波形图”,外加格栅。

2、将y=sin(x)、y=cos(x)分别用点和线画出同一屏幕上。

matlab基础知识

第2章基础知识 本章着重介绍MATLAB的一些基础知识,包括数据类型、基本矩阵操作、运算符和字符串处理函数。本章是MATLAB编程的基础。 2.1 数据类型 MATLAB中定义了很多种数据类型,包括字符、数值、单元、结构、java类、函数句柄等类型,用户还可以自己定义数据类型。 在MATLAB中有15种基本数据类型,每种基本数据类型均以数组/矩阵的形式出现,该矩阵可以是最小的0*0矩阵到任意大小的n维矩阵。 1.数值类型 数值类型包含整数、浮点数和复数3种类型。另外MATLAB还定义了Inf和NaN两个特殊数值。 (1)整数类型 MATLAB支持1、2、4和8字节的有符号整数和无符号整数。这8种数据类型的名称、表示范围、转换函数如表2-1所示,其中转换函数可以把其它数据类型的数值强制转换为对应的整数类型。尽可能使用字节少的数据类型,这样可以节约存储空间和提高运算速度。 表2-1 整数类型 名称范围转换函数名称范围转换函数 有符号1字节整数int8() 无符号1字节整数uint8() 有符号2字节整数int16() 无符号2字节整数uint16() 有符号4字节整数int32() 无符号4字节整数uint32() 有符号8字节整数int64() 无符号8字节整数uint64() (2)浮点数类型 MATLAB有单精度和双精度两种浮点数,其中双精度浮点数为MATLAB默认的数据类型。这2种数据类型的名称、存储空间、表示范围和转换函数如表2-2所示。

表2-2 浮点数类型 名称存储空间表示范围转换函数 单精度浮点数4字节single() 双精度浮点数8字节double() (3)复数类型 复数包含实部和虚部。在MATLAB中可以用i或j来表示虚部。 例如:在命令窗口中用赋值语句产生复数5+10i,代码如下: A=5+10i 例如:在命令窗口用函数complex()产生复数5+10i,具体代码如下: X=5; Y=10; z=complex(x,y) (4)Inf和NaN 在MATLAB中用Inf和-Inf分别表示正无穷大和负无穷大。除法运算中除数为0或者运算结果溢出都会导致inf或-inf的运行结果。 在MATLAB中用NaN(not a number)来表示一个既不是实数也不是复数的数值。类似0/0、inf/inf等运算产生的结果均为NaN。 2.逻辑类型 在MATLAB中逻辑类型包括true和false,分别由1和0表示。在MATLAB中用函数logical()将任何非零的数值转换为true(即1),将数值0转换为false(即0)。 3.字符和字符串类型 在MATLAB中,数据类型(char)表示一个字符。一个char类型的1*n数组称为字符串string。用单引号对表示字符串。 例如:str=‘I am a great person’

Matlab基础知识点汇总

MATLAB讲义 第一章 MATLAB系统概述 1.1 MATLAB系统概述 MATLAB(MATrix LABoratory)矩阵实验室的缩写,全部用C语言编写。 特点: (1)以复数矩阵作为基本编程单元,矩阵运算如同其它高级语言中的语言变量操作一样方便,而且矩阵无需定义即可采用。 (2)语句书写简单。 (3)语句功能强大。 (4)有丰富的图形功能。如plot,plot3语句等。 (5)提供了许多面向应用问题求解的工具箱函数。目前,有20多个工具箱函数,如信号处理、图像处理、控制系统、系统识别、最优化、神经网络的模糊系统等。 (6)易扩充。 1.2 MATLAB系统组成 (1)MATLAB语言 MATLAB语言是高级的矩阵、矢量语言,具有控制流向语句、函数、数据结构、输入输出等功能。同时MATLAB又具有面向对象编程特色。MATLAB语言包括运算符和特殊字符、编程语言结构、字符串、文件输入/输出、时间和日期、数据类型和结构等部分。 (2)开发环境 MATLAB开发环境有一系列的工具和功能体,其部分具有图形用户界面,包括MATLAB桌面、命令窗口、命令历史窗口、帮助游览器、工作空间、文件和搜索路径等。 (3)图形处理 图形处理包括二维、三维数据可视化,图像处理、模拟、图形表示等图形命令。还包括低级的图形命令,供用户自由制作、控制图形特性之用。 (4)数学函数库 有求和、正弦、余弦等基本函数到矩阵求逆、求矩阵特征值和特征矢量等。 MATLAB数学函数库可分为基本矩阵和操作、基本数学函数、特殊化数学函数、线性矩阵函数、数学分析和付里叶变换、多项式和二重函数等。 (5)MATLAB应用程序接口(API) MATLAB程序可以和C/C++语言及FORTRAN程序结合起来,可将以前编写的C/C++、FORTRAN语言程序移植到MATLAB中。 1.3 MATLAB的应用围包括: MATLAB的典型应用包括: ●数学计算 ●算法开发 ●建模、仿真和演算 ●数据分析和可视化 ●科学与工程绘图 ●应用开发(包括建立图形用户界面) 以矩阵为基本对象 第二章 Matlab基础

Matlab入门基础知识整理

MATLAB基础知识 MATLAB的主要功能 1.数值计算和符号计算功能 例如,求解线性方程组 在MATLAB命令窗口输入命令: a=[2,3,-1;3,-5,3;6,3,-8]; b=[7;8;9]; x=inv(a)*b 也可以通过符号计算来解此方程 syms x1 x2 x3 [x1,x2,x3]=solve(2*x1+3*x2-x3-7,3*x1-5*x2+3*x3-8,6*x1+3*x2-8*x3-9) 2.绘图功能 例如,分别绘制函数y=300sinx/x和y=x2的曲线 x=-20:0.1:20; plot(x,300*sin(x)./x,':',x,x.^2); 3.程序设计语言功能 MATLAB是解释性语言,程序执行速度较慢,而且不能脱离MATLAB环境而独立运行。MathWorks公司提供了将MATLAB源程序编译为独立于MATLAB集成环境运行的EXE文件以及将MATLAB程序转化为C语言程序的编译器。4.扩展功能 MATLAB包含两部分内容:基本部分和各种可选的工具箱。 基本部分构成了MATLAB的核心内容,也是使用和构造工具箱的基础。 工具箱扩展了MATLAB的功能。 功能性工具箱 学科性工具箱 MATLAB的集成开发环境 命令窗口(Command Window)用于输入命令并显示除图形以外的所有执行结果。一般来说,一个命令行输入一条命令,命令行以回车或分号结束 但一个命令行也可以输入若干条命令,各命令之间以逗号或分号隔开 如果一个命令行很长,一个物理行之内写不下,可以在第1个物理行之后加上3个小黑点并按下回车键,然后接着下一个物理行继续写命令的其他部分。3个小黑点称为续行符,即把下面的物理行看作该行的逻辑继续。例如: z=1+1/(1*2)+1/(1*2*3)+1/(1*2*3*4)+ … 1/(1*2*3*4*5) 工作空间(Workspace)是MATLAB用于存储各种变量的内存空间。 当前目录(Current Directory)是指MATLAB运行时的工作目录,只有在当前目录下的文件、函数才可以被运行或调用。 如果没有特殊指明,数据文件也将存放在当前目录下。 命令历史窗口 自动保留自安装起所有用过的命令的历史记录,并且还标明了使用时间,从而方便用户查询。而且,通过双击命令可进行历史命令的再运行。 MATLAB的帮助功能 进入MATLAB帮助界面可以通过以下方法。 ●单击MATLAB主窗口工具栏中的Help按钮。

MATLAB基础知识考试复习总结

第一章MATLAB基础 1系统仿真是根据被研究的真实系统的数学模型研究系统性能的一门学科,现在尤指利用计算机去研究数学模型行为的方法,即数值仿真。 2MATLAB集计算,可视化及编程于一身。其主要产品模块构成:(1)MATLAB(2)MATLABtoolbox(3)MATLAB Compiler(4)simulink(5)stateflow(6)Real-Time Workshop。 3MATLAB语言被称为第四代计算机语言。有以下几个主要特点:编程效率高;使用方便;高效方便的科学计算;先进的可视化工具;开放性、可扩展性强;运行时动态连接外部C或FORTRAN应用函数;在独立C或FORTRAN程序中调用MATLAB 函数;输入输出各种MATLAB及其他标准格式的数据文件;创建图文并茂的技术文档;特殊应用工具箱;高效仿真工具Smulink。 4变量命名规则:变量名、函数名对字母大小写敏感;变量名第一个字母必须是英文字母(只能是英文、数字和下连线)。 5 real(z)求复数Z实部 imag(Z)求复数Z虚部 abs(z) 求复数Z的模angle(Z)求复数Z的相角(单位是弧度) callback回校函数mdata=csvread(‘engdata.txt’) clc清除指令窗 clf清除图形窗 cd设置当前工作目录clear清除工作空间保存的变量 edit打开M文件编辑器exit、quit关闭、退出MATLAB 6 c=3+5i c=3+5*i (a=3;b=5;c=a+b*i) 1.3e-4 2.78e23 A.’转置S.*B S./B B.\S A.^n 7Command History(历史指令)窗记录着用户在命令指令窗中所输入过的所有指令行,且所有这些被记录的指令行都能被复制,并送到指令窗中再运行。 8Workspace Browser(工作空间浏览器)也叫内存浏览器,他保存了指令窗所使用过的全部变量(除非有意删除),可通过该浏览器对内存变量进行操作。 10点击MATLAB桌面工具条上的?图标,或选择下拉菜单项【Help】,都能提供帮助;MATLAB还提供现场帮助,用鼠标点亮指令并点击右键,在弹出的菜单中选择【Help On Selection】。 第二章数据及其运算 1简单数组生成方法:逐个元素输入法;冒号生成法[x=a:intc:b]; [x=linspace(a,b,n)]=[a:(b-a)/(n-1):b];logspace(w1,w2,n) 2>> diag([3,3,3])产生对角形数组 ans =3 0 0 0 3 0 0 0 3 >> eye(3) 产生单位数组 ans =1 0 0 0 1 0 0 0 1 >> magic(3) 产生魔方数组 a ns =8 1 6

第一章MATLAB基础知识

第一章MATLAB基础知识 1.1 MATLAB开发环境 1.MATLAB操作桌面 MATLAB4.0以上版本都是在Windows以上环境支持下操作与运行的,因此,这里必须假定读者对Windows有一定的了解和掌握。本书以Windows98环境,MATLAB6.5版本为例介绍。书中绝大多数例子在MA TLAB5.3版本中亦能使用. 要想进入MATLAB系统,方法有二: (1)在Windows98的桌面上双击MATLAB快捷图标。 (2)单击Windows98的“开始”按钮,再依次单击:程序/MA TLAB/MA TLAB6.5; 图1-1 MATLAB6.5除保留了传统的命令窗口外,还增加了启动平台窗口、工作空间窗口、命令历史窗口、当前路径窗口等窗口,与新的M文件编辑器和新的在线帮助浏览器等共同构成了MA TLAB6.5的开发环境。 MATLAB的开发环境是MATLAB语言的基础和核心部分,MATLAB语言的全部功能都是在MA TLAB的开发环境中实现的,MA TLAB的仿真工具Simulink、MATLAB

的工具箱等其他附加功能的实现也必须使用MATLAB开发环境,因此,掌握MATLAB 的开发环境是掌握MATLAB语言的关键。 启动MA TLAB后,将显示包括命令窗口、启动平台窗口、工作空间窗口、命令历史窗口和当前路径窗口等5个窗口和主菜单组成的操作桌面(图1-1)。本节对操作桌面的各个窗口作简要介绍,部分窗口的功能和使用将在以后的章节中详细介绍。 操作桌面缺省状态下显示3个窗口,当前路径和工作空间窗口在同一位置显示,可以通过该窗口下方的箭头或窗口标签来切换,命令历史窗口和当前目录窗口在同一位置显示,可以通过该窗口下方窗口标签来切换。每个窗可以脱离操作桌面独立出来。也可以通过菜单View来选择显示哪些窗口。 MATLAB还设定了几种特定的窗口布局方式,在View菜单的Desktop Layout选项中,给定了6种布局方式: Default(缺省方式) Command Window Only(只显示命命令窗口方式) Simple(简单方式,只有命令历史窗口和命令窗口) Short History(低命令历史窗口方式) Tall History(高命令历史窗口方式) Five Panel(5个窗口平铺方式) 2.MATLAB的通用参数设置 MATLAB的通用参数和各功能窗口的参数可以通过主菜单中的file/Preferences项设置,这里先介绍通用参数的设置。 在主菜单中选择Preferences项,打开Preferences窗口(图1-2),缺省状态为通用参数设置,其选项包括: Display(显示选择)Show tooltips(显示相关信息),当单选框选择后,鼠标放在工具栏的快捷按钮上时显示相关信息。 Toolbox caching(工具箱缓冲区)对于远程使用MATLAB的用户,应选择单选框Enable Toolbox caching(打开工具箱缓冲区),建立一个高速缓冲区,以提高使用速度,对单机用户该选项作用不大。 Figure window printing(图形窗口打印)有3个选项,分别为Use printer default(按打印机缺省设置输出)、Always send as black and white(按黑白图形输出)和Always send as color(按彩色图形输出)。

matlab

1.x=input('请输入一个四位整数:'); a=fix(x/1000); b=rem(fix(x/100),10); c=rem(fix(x/10),10); d=rem(x,10); a=a+7; b=b+7; c=c+7; d=d+7; a=rem(a,10); b=rem(b,10); c=rem(c,10); d=rem(d,10); e=a; a=c; c=e; f=b; b=d; d=f; x=1000*a+100*b+10*c+d; x 2.(1)a=input(‘请输入一个数’); b=input(‘请输入一个数’); c=input(‘请输入一个数’); If x>=0.5&&x<1.5 y=ax^2+bx+c elseif x>=1.5&&x<3.5 y=a(sinb)^c+x elseif x>=3.5&&x<5.5 y=log[abs(b+c/x)] end

disp y end (2)a=input(‘请输入一个数’); b=input(‘请输入一个数’); c=input(‘请输入一个数’); Switch x case[0.5,1.5] y=ax^2+bx+c case[1.5,3.5] y=a(sinb)^c+x case[3.5,5.5] y= log[abs(b+c/x)] end disp y 3. x=fix(rand(1,20)*89)+10; x1=fix(sum(x)/20); if xmax max=m; end if m

实验一matlab基础知识练习

本次实验包括四部分: 一、MATLAB语言矩阵运算 二、MATLAB的绘图 三、数字图像处理初步 四、Matlab的可视化界面设计 实验要求: 1、内容较多,课内做不完可以课外完成,要求写到实验报告上的内容包括: ●二、MATLAB的绘图的1、3 ●三、数字图像处理初步2、3 2、实验报告要求 ●实验目的 ●实验内容与步骤 ●实现代码与实验结果(实验效果图要求打印并贴在实验报告册上) ●实验分析 3、实验效果图上要求添加做实验同学的姓名,以防抄袭,效果如三、2所示 4、实验报告在下周上课前交上

一、MATLAB 语言矩阵运算 1、下列运算是否合法,为什么?如合法,结果是多少? ? ? ????=654321a ? ? ????-=531142b ????? ?????-=201c ?? ?? ? ?????=063258741d (1)result1=a'(2)result2=a *b (3)result6=a .*b (4)result7=a ./b (5)result8=a .*c (6)result9=a .\b (7)result10=a .^2 2、用MATLAB 求下面的的方程组。 (1)?? ? ??? ??????-=???????????????????? ?? ???----01741323151122231592127 4321x x x x 3、已知? ? ??? ???? ???----=132315112223159 2127A (1)求矩阵A 的秩(rank) (2)求矩阵A 的行列式(determinant)(3)求矩阵A 的逆(inverse) (4)求矩阵A 的特征值及特征向量(eigenvalue and eigenvector)4、关系运算与逻辑运算 已知a=20,b=-2,c=0,d=1 (1)r1=a >b (2)r2=a >b &c >d (3)r3=a ==b*(-10)(4)r4=~b |c

MATLAB基础知识习题

MATLAB 基础知识部分习题 1、使用help 命令,查看基本操作的有关命令,请输入help general ,熟悉通用的操作命令,如:General information 共有以下几项: helpbrowser - Bring up the help browser Managing the workspace Managing commands and functions Managing the search path Controlling the command window. Operating system commands Debugging M-files. Profiling M-files. Tools to locate dependent functions of an M-file. 2、可使用MA TLAB 进行计算,试计算下列各小题: 1)、|2+e 2| 2)、 arctg (0.75) 3)、sin(45o )+sin(60o ) 4)、lg (1000*arcsin (0.5)) 5)、若A=5+3i ,求A 的实、虚、复相角、共轭复数 3、对有关矩阵的计算 A=[4 2 3 2 3 4 3 4 5] B=[2 3 5 1 3 2 8 7 6] 分别用矩阵运算和数组运算计算A 、B 的加减乘除结果,并分析有和异同。它们的转置、逆、秩、特征值特征向量。 4、 绘制下列曲线 1)绘出y=e -1/2T sin (5t ),t 取值范围是0~4*pi ; 2)在一个窗口中,画y1=sin (2X )、y2=cos (2x )、y3=y1+y2;且线型颜色要求均不同,不同标注等,x 在0~3*pi 内; 5、编制程序求下列各题,要求编写M 文件: 1) 试计算1+2+……+n 〈2000时的最大n 值; 2) 试编制任一矩阵各元素累加和与连乘的函数; 3) 编函数计算1!+2!+……30! 4) 有两个矩阵A 、B 如下: A=[1 4 6 8 B=[-3 –7 6 -5 2 3 7 0 -2 1 3 -1 -2 –1 5 7 0 0 1 3 1 1 –1 0] 2 6 –1 0] 将A 中所有等于-1的元素改为-2,将B 中所有小于0的元素改为1,然后将B 中等于0的元素的值改为A 的相应位置元素的值。提示:可用A (find (A==-1))=-2这样的命令,此方法交互式即可。 5) 画出f=x 2+e Y *x ,x 在[-2,2]区间,分别取y=0、1、2、3、4、5;将这五条曲线画在同一窗口。 6) 根据阻尼系数绘制不同二阶系统的时域响应,当欠阻尼时,0<ζ<1 当临界阻尼时,ζ=0 当过阻尼时ζ>=1 1cos )x y a ??-=-+1(1)x y x e -=- +((1x x y ??--???=--??

matlab基础知识总结

1、linspace()函数 linspace是Matlab中的一个指令,用于产生x1,x2之间的N点行矢量。其中x1、x2、N分别为起始值、终止值、元素个数。若缺省N,默认点数为100。在matlab的命令窗口下输入help linspace或者doc linspace可以获得该函数的帮助信息。 例一: 在matlab的命令窗口输入: X=linspace(1,100) 将产生从1到100步长为1的数组。类似于在命令窗口中输入:X=[1:1:100] 在MATLAB中为什么输linspace(10,50,6)的时候其步进是8,而输入linspace(10,50,8)时,其步进为5点多的一个小数 linspace(x0,x1,n) 其中n代表的是点的数目,即分成n-1等分。 步长应当是(x1-x0)/(n-1) 二、格式:n=norm(A,p) 功能:norm函数可计算几种不同类型的矩阵范数,根据p的不同可得到不同的范数 以下是Matlab中help norm 的解释 NORM Matrix or vector norm. For matrices... NORM(X) is the largest singular value of X, max(svd(X)). NORM(X,2) is the same as NORM(X). NORM(X,1) is the 1-norm of X, the largest column sum, = max(sum(abs(X))). NORM(X,inf) is the infinity norm of X, the largest row sum, = max(sum(abs(X'))). NORM(X,'fro') is the Frobenius norm, sqrt(sum(diag(X'*X))). NORM(X,P) is available for matrix X only if P is 1, 2, inf or 'fro'. For vectors... NORM(V,P) = sum(abs(V).^P)^(1/P). NORM(V) = norm(V,2). NORM(V,inf) = max(abs(V)). 1、如果A为矩阵 n=norm(A) 返回A的最大奇异值,即max(svd(A)) n=norm(A,p) 根据p的不同,返回不同的值 p 返回值 1 返回A中最大一列和,即max(sum(abs(A))) 2 返回A的最大奇异值,和n=norm(A)用法一样 inf 返回A中最大一行和,即max(sum(abs(A’)))‘fro’ A和A‘的积的对角线和的平方根,即sqrt(sum(diag(A'*A)) 2、如果A为向量 norm(A,p) 返回向量A的p范数。即返回 sum(abs(A).^p)^(1/p),对任意1

matlab编程基础知识

MATLAB 编程基础 (一) 进入编程,建立一个文件或对已建立好的文件进入修改 1. Matlab主菜单下,选择"New"--"m-file". 2. 建立函数文件 输入function y=文件名(参数) 例如对潮水高度德48个点用正玄曲线来拟合, function yh=fsin(n) 然后进入编程.。 3. 编好程序后,要将文件存盘,单击 "Save" 即可,否则退出后文件消失(或修改无效). (二) 编程 将数据输入,要用输入语句(input),例如从键盘输入数据a: a=input ('input : a= '); 然后从键盘打入数据即可. 一、循环语句 1. for 循环 基本格式:for 循环变量=起始值::步长::终值 循环体 end 这里步长不写,只写起始值和终值,那么步长规定为1. 例如,计算10!,程序如下: function m=fcum(n) m=1; for i=1:10 m=m*I; end m (显示10!的值) 双循环:计算矩阵A m*n各元素的平方和 function sum=Asum(m,n) A=[a11,a12 . . .a1n;a21,a22 . . .a2n;. . .a m1. . .a mn ] ; sum=0 for i=1:m for j=1:n sum=sum+A(i,j)^2; end;end sum 2. while 循环 格式:while 表达式 循环体 end 例:求1到n的自然数的平方和,使和小于或等于1000,程序如下:

function sum=fsum(m) sum=0; n=0 while sum5 a(i)=10-i ; end end a (打印a) 例: 赋值: ()()()?????-≤-??-≥=110110 110 x x x y 从键盘输入x 的值,打印出y 的值,程序如下: function y=fxt(x) x=input(‘input x= ‘) if x>=1 y=10; elseif x>-1 & x<1 y=0; else y=-10; end end x (打印x, y ) 2、开关switch 语句 格式:switch 表达式 case 值1 语句 case 值2 语句 … … … otherwise 语句

相关主题
文本预览
相关文档 最新文档