MATLAB简介即使用方法

MATLAB简介即使用方法
MATLAB简介即使用方法

MATLAB简介

1.MATLAB的概况

MATLAB是矩阵实验室(Matrix Laboratory)之意。除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。

MATLAB的基本数据单位是矩阵,它的指令表达式与数学,工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多.

当前流行的MATLAB 5.3/Simulink 3.0包括拥有数百个内部函数的主包和三十几种工具包(Toolbox).工具包又可以分为功能性工具包和学科工具包.功能工具包用来扩充MATLAB的符号计算,可视化建模仿真,文字处理及实时控制等功能.学科工具包是专业性比较强的工具包,控制工具包,信号处理工具包,通信工具包等都属于此类.

开放性使MATLAB广受用户欢迎.除内部函数外,所有MATLAB主包文件和各种工具包都是可读可修改的文件,用户通过对源程序的修改或加入自己编写程序构造新的专用工具包.

2.MATLAB产生的历史背景

在70年代中期,Cleve Moler博士和其同事在美国国家科学基金的资助下开发了调用EISPACK和LINPACK的FORTRAN子程序库.EISPACK是特征值求解的FOETRAN程序库,LINPACK是解线性方程的程序库.在当时,这两个程序库代表矩阵运算的最高水平.

到70年代后期,身为美国New Mexico大学计算机系系主任的Cleve Moler,在给学生讲授线性代数课程时,想教学生使用EISPACK和LINPACK程序库,但他发现学生用FORTRAN编写接口程序很费时间,于是他开始自己动手,利用业余时间为学生编写EISPACK和LINPACK的接口程序.Cleve Moler给这个接口程序取名为MATLAB,该名为矩阵(matrix)和实验室(labotatory)两个英文单词的前三个字母的组合.在以后的数年里,MATLAB在多所大学里作为教学辅助软件使用,并作为面向大众的免费软件广为流传.

1983年春天,Cleve Moler到Standford大学讲学,MATLAB深深地吸引了工程师John Little.John Little敏锐地觉察到MATLAB在工程领域的广阔前景.同年,他和Cleve Moler,Steve Bangert一起,用C语言开发了第二代专业版.这一代的MATLAB语言同时具备了数值计算和数据图示化的功能.

1984年,Cleve Moler和John Little成立了Math Works公司,正式把MATLAB 推向市场,并继续进行MATLAB的研究和开发.

在当今30多个数学类科技应用软件中,就软件数学处理的原始内核而言,可分为两大类.一类是数值计算型软件,如MATLAB,Xmath,Gauss等,这类软件长于数值计算,对处理大批数据效率高;另一类是数学分析型软件,Mathematica,Maple 等,这类软件以符号计算见长,能给出解析解和任意精确解,其缺点是处理大量数据时效率较低.MathWorks公司顺应多功能需求之潮流,在其卓越数值计算和图示能力的基础上,又率先在专业水平上开拓了其符号计算,文字处理,可视化建模和实时控制能力,开发了适合多学科,多部门要求的新一代科技应用软件MATLAB.经过多年的国际竞争,MATLAB以经占据了数值软件市场的主导地位.

在MATLAB进入市场前,国际上的许多软件包都是直接以FORTRANC 语言等编程语言开发的。这种软件的缺点是使用面窄,接口简陋,程序结构不开放以及没有标准的基库,很难适应各学科的最新发展,因而很难推广。MATLAB 的出现,为各国科学家开发学科软件提供了新的基础。在MATLAB问世不久的80年代中期,原先控制领域里的一些软件包纷纷被淘汰或在MATLAB上重建。

MathWorks公司1993年推出了MATLAB 4。0版,1995年推出4。2C版(for win3。X)1997年推出5。0版。1999年推出5。3版。MATLAB 5。X较MATLAB 4。X无论是界面还是内容都有长足的进展,其帮助信息采用超文本格式和PDF格式,在Netscape 3。0或IE 4。0及以上版本,Acrobat Reader中可以方便地浏览。

时至今日,经过MathWorks公司的不断完善,MATLAB已经发展成为适合多学科,多种工作平台的功能强大大大型软件。在国外,MATLAB已经经受了多年考验。在欧美等高校,MATLAB已经成为线性代数,自动控制理论,数理统计,数字信号处理,时间序列分析,动态系统仿真等高级课程的基本教学工具;成为攻读学位的大学生,硕士生,博士生必须掌握的基本技能。在设计研究单位和工业部门,MATLAB被广泛用于科学研究和解决各种具体问题。在国内,特别是工程界,MATLAB一定会盛行起来。可以说,无论你从事工程方面的哪个学科,都能在MATLAB里找到合适的功能。

2.MATLAB的语言特点

一种语言之所以能如此迅速地普及,显示出如此旺盛的生命力,是由于它有着不同于其他语言的特点,正如同FORTRAN和C等高级语言使人们摆脱了需要直接对计算机硬件资源进行操作一样,被称作为第四代计算机语言的MATLAB,利用其丰富的函数资源,使编程人员从繁琐的程序代码中解放出来。MATLAB最突出的特点就是简洁。MATLAB用更直观的,符合人们思维习惯的代码,代替了C和 FORTRAN语言的冗长代码。MATLAB给用户带来的是最直观,最简洁的程序开发环境。以下简单介绍一下MATLAB的主要特点。

1)。语言简洁紧凑,使用方便灵活,库函数极其丰富。MATLAB程序书写形

式自由,利用起丰富的库函数避开繁杂的子程序编程任务,压缩了一切不必要的编程工作。由于库函数都由本领域的专家编写,用户不必担心函数的可靠性。可以说,用MATLAB进行科技开发是站在专家的肩膀上。

具有FORTRAN和C等高级语言知识的读者可能已经注意到,如果用FORTRAN或C语言去编写程序,尤其当涉及矩阵运算和画图时,编程会很麻烦。例如,如果用户想求解一个线性代数方程,就得编写一个程序块读入数据,然后再使用一种求解线性方程的算法(例如追赶法)编写一个程序块来求解方程,最后再输出计算结果。在求解过程中,最麻烦的要算第二部分。解线性方程的麻烦在于要对矩阵的元素作循环,选择稳定的算法以及代码的调试动不容易。即使有部分源代码,用户也会感到麻烦,且不能保证运算的稳定性。解线性方程的程序用FORTRAN和C这样的高级语言编写,至少需要四百多行,调试这种几百行的计算程序可以说很困难。以下用MATLAB编写以上两个小程序的具体过程。

MATLAB求解下列方程,并求解矩阵A的特征值。

Ax=b,其中:

A= 32 13 45 67

23 79 85 12

43 23 54 65

98 34 71 35

b= 1

2

3

4

解为:x=A\b;设A的特征值组成的向量e,e=eig(A)。

可见,MATLAB的程序极其简短。更为难能可贵的是,MATLAB甚至具有一定的智能水平,比如上面的解方程,MATLAB会根据矩阵的特性选择方程的求解方法,所以用户根本不用怀疑MATLAB的准确性。

2)运算符丰富。由于MATLAB是用C语言编写的,MATLAB提供了和C 语言几乎一样多的运算符,灵活使用MATLAB的运算符将使程序变得极为简短。

3)MATLAB既具有结构化的控制语句(如for循环,while循环,break语句和if语句),又有面向对象编程的特性。

4)程序限制不严格,程序设计自由度大。例如,在MATLAB里,用户无需

对矩阵预定义就可使用。

5)程序的可移植性很好,基本上不做修改就可以在各种型号的计算机和操作系统上运行。

6)MATLAB的图形功能强大。在FORTRAN和C语言里,绘图都很不容易,但在MATLAB里,数据的可视化非常简单。MATLAB还具有较强的编辑图形界面的能力。

7)MATLAB的缺点是,它和其他高级程序相比,程序的执行速度较慢。由于MATLAB的程序不用编译等预处理,也不生成可执行文件,程序为解释执行,所以速度较慢。

8)功能强大的工具箱是MATLAB的另一特色。MATLAB包含两个部分:核心部分和各种可选的工具箱。核心部分中有数百个核心内部函数。其工具箱又分为两类:功能性工具箱和学科性工具箱。功能性工具箱主要用来扩充其符号计算功能,图示建模仿真功能,文字处理功能以及与硬件实时交互功能。功能性工具箱用于多种学科。而学科性工具箱是专业性比较强的,如control,toolbox,signl proceessing toolbox,commumnication toolbox等。这些工具箱都是由该领域内学术水平很高的专家编写的,所以用户无需编写自己学科范围内的基础程序,而直接进行高,精,尖的研究。

9)源程序的开放性。开放性也许是MATLAB最受人们欢迎的特点。除内部函数以外,所有MATLAB的核心文件和工具箱文件都是可读可改的源文件,用户可通过对源文件的修改以及加入自己的文件构成新的工具箱。

MATLAB入门教程

1.MATLAB的基本知识

1-1、基本运算与函数

在MATLAB下进行基本数学运算,只需将运算式直接打入提示号(>>)之後,并按入Enter键即可。例如:

>> (5*2+1.3-0.8)*10/25

ans =4.2000

MATLAB会将运算结果直接存入一变数ans,代表MATLAB运算後的答案(Answer)并显示其数值於萤幕上。

小提示: ">>"是MATLAB的提示符号(Prompt),但在PC中文视窗系统下,由於编码方式不同,此提示符号常会消失不见,但这并不会影响到MATLAB的

运算结果。

我们也可将上述运算式的结果设定给另一个变数x:

x = (5*2+1.3-0.8)*10^2/25

x = 42

此时MATLAB会直接显示x的值。由上例可知,MATLAB认识所有一般常用到的加(+)、减(-)、乘(*)、除(/)的数学运算符号,以及幂次运算(^)。

小提示: MATLAB将所有变数均存成double的形式,所以不需经过变数宣告(Variable declaration)。MATLAB同时也会自动进行记忆体的使用和回收,而不必像C语言,必须由使用者一一指定.这些功能使的MATLAB易学易用,使用者可专心致力於撰写程式,而不必被软体枝节问题所干扰。

若不想让MATLAB每次都显示运算结果,只需在运算式最後加上分号(;)即可,如下例:

y = sin(10)*exp(-0.3*4^2);

若要显示变数y的值,直接键入y即可:

>>y

y =-0.0045

在上例中,sin是正弦函数,exp是指数函数,这些都是MATLAB常用到的数学函数。

下表即为MATLAB常用的基本数学函数及三角函数:

小整理:MATLAB常用的基本数学函数

abs(x):纯量的绝对值或向量的长度

angle(z):复数z的相角(Phase angle)

sqrt(x):开平方

real(z):复数z的实部

imag(z):复数z的虚部

conj(z):复数z的共轭复数

round(x):四舍五入至最近整数

fix(x):无论正负,舍去小数至最近整数

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

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

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

rats(x):将实数x化为多项分数展开

sign(x):符号函数 (Signum function)。

当x<0时,sign(x)=-1;

当x=0时,sign(x)=0;

当x>0时,sign(x)=1。

> 小整理:MATLAB常用的三角函数

sin(x):正弦函数

cos(x):馀弦函数

tan(x):正切函数

asin(x):反正弦函数

acos(x):反馀弦函数

atan(x):反正切函数

atan2(x,y):四象限的反正切函数

sinh(x):超越正弦函数

cosh(x):超越馀弦函数

tanh(x):超越正切函数

asinh(x):反超越正弦函数

acosh(x):反超越馀弦函数

atanh(x):反超越正切函数

变数也可用来存放向量或矩阵,并进行各种运算,如下例的列向量(Row vector)

运算:

x = [1 3 5 2];

y = 2*x+1

y = 3 7 11 5

小提示:变数命名的规则

1.第一个字母必须是英文字母

2.字母间不可留空格

3.最多只能有19个字母,MATLAB会忽略多馀字母

我们可以随意更改、增加或删除向量的元素:

y(3) = 2 % 更改第三个元素

y =3 7 2 5

y(6) = 10 % 加入第六个元素

y = 3 7 2 5 0 10

y(4) = [] % 删除第四个元素,

y = 3 7 2 0 10

在上例中,MATLAB会忽略所有在百分比符号(%)之後的文字,因此百分比之後的文字均可视为程式的注解(Comments)。MATLAB亦可取出向量的一个元素或一部份来做运算:

x(2)*3+y(4) % 取出x的第二个元素和y的第四个元素来做运算

ans = 9

y(2:4)-1 % 取出y的第二至第四个元素来做运算

ans = 6 1 -1

在上例中,2:4代表一个由2、3、4组成的向量

若对MATLAB函数用法有疑问,可随时使用help来寻求线上支援(on-line help):help linspace

小整理:MATLAB的查询命令

help:用来查询已知命令的用法。例如已知inv是用来计算反矩阵,键入help inv 即可得知有关inv命令的用法。(键入help help则显示help的用法,请试看看!)lookfor:用来寻找未知的命令。例如要寻找计算反矩阵的命令,可键入 lookfor inverse,MATLAB即会列出所有和关键字inverse相关的指令。找到所需的命令後,即可用help进一步找出其用法。(lookfor事实上是对所有在搜寻路径下的M档案进行关键字对第一注解行的比对,详见後叙。)

将列向量转置(Transpose)後,即可得到行向量(Column vector):

z = x'

z = 4.0000

5.2000

6.4000

7.6000

8.8000

10.0000

不论是行向量或列向量,我们均可用相同的函数找出其元素个数、最大值、最小值等:

length(z) % z的元素个数

ans = 6

max(z) % z的最大值

ans = 10

min(z) % z的最小值

ans = 4

小整理:适用於向量的常用函数有:

min(x): 向量x的元素的最小值

max(x): 向量x的元素的最大值

mean(x): 向量x的元素的平均值

median(x): 向量x的元素的中位数

std(x): 向量x的元素的标准差

diff(x): 向量x的相邻元素的差

sort(x): 对向量x的元素进行排序(Sorting)

length(x): 向量x的元素个数

norm(x): 向量x的欧氏(Euclidean)长度

sum(x): 向量x的元素总和

prod(x): 向量x的元素总乘积

cumsum(x): 向量x的累计元素总和

cumprod(x): 向量x的累计元素总乘积

dot(x, y): 向量x和y的内积

cross(x, y): 向量x和y的外积(大部份的向量函数也可适用於矩阵,详见下述。)

若要输入矩阵,则必须在每一列结尾加上分号(;),如下例:

A = [1 2 3 4; 5 6 7 8; 9 10 11 12];

A =

1 2 3 4

5 6 7 8

9 10 11 12

同样地,我们可以对矩阵进行各种处理:

A(2,3) = 5 % 改变位於第二列,第三行的元素值

A =

1 2 3 4

5 6 5 8

9 10 11 12

B = A(2,1:3) % 取出部份矩阵B

B = 5 6 5

A = [A B'] % 将B转置後以行向量并入A

A =

1 2 3 4 5

5 6 5 8 6

9 10 11 12 5

A(:, 2) = [] % 删除第二行(:代表所有列)

A =

1 3 4 5

5 5 8 6

9 11 12 5

A = [A; 4 3 2 1] % 加入第四列

A =

1 3 4 5

5 5 8 6

9 11 12 5

4 3 2 1

A([1 4], :) = [] % 删除第一和第四列(:代表所有行)

A =

5 5 8 6

9 11 12 5

这几种矩阵处理的方式可以相互叠代运用,产生各种意想不到的效果,就看各位的巧思和创意。

小提示:在MATLAB的内部资料结构中,每一个矩阵都是一个以行为主(Column-oriented )的阵列(Array)因此对於矩阵元素的存取,我们可用一维或二维的索引(Index)来定址。举例来说,在上述矩阵A中,位於第二列、第三行的元素可写为A(2,3) (二维索引)或A(6)(一维索引,即将所有直行进行堆叠後的第六个元素)。

此外,若要重新安排矩阵的形状,可用reshape命令:

B = reshape(A, 4, 2) % 4是新矩阵的列数,2是新矩阵的行数

B =

5 8

9 12

5 6

11 5

小提示: A(:)就是将矩阵A每一列堆叠起来,成为一个行向量,而这也是MATLAB变数的内部储存方式。以前例而言,reshape(A, 8, 1)和A(:)同样都会产生一个8x1的矩阵。

MATLAB可在同时执行数个命令,只要以逗号或分号将命令隔开:

x = sin(pi/3); y = x^2; z = y*10,

z =

7.5000

若一个数学运算是太长,可用三个句点将其延伸到下一行:

z = 10*sin(pi/3)* ...

sin(pi/3);

若要检视现存於工作空间(Workspace)的变数,可键入who:

who

Your variables are:

testfile x

这些是由使用者定义的变数。若要知道这些变数的详细资料,可键入:

whos

Name Size Bytes Class

A 2x4 64 double array

B 4x2 64 double array

ans 1x1 8 double array

x 1x1 8 double array

y 1x1 8 double array

z 1x1 8 double array

Grand total is 20 elements using 160 bytes

使用clear可以删除工作空间的变数:

clear A

A

??? Undefined function or variable 'A'.

另外MATLAB有些永久常数(Permanent constants),虽然在工作空间中看不到,但使用者可直接取用,例如:

pi

ans = 3.1416

下表即为MATLAB常用到的永久常数。

小整理:MATLAB的永久常数i或j:基本虚数单位

eps:系统的浮点(Floating-point)精确度

inf:无限大,例如1/0 nan或NaN:非数值(Not a number),例如0/0

pi:圆周率p(= 3.1415926...)

realmax:系统所能表示的最大数值

realmin:系统所能表示的最小数值

nargin: 函数的输入引数个数

nargin: 函数的输出引数个数

1-2、重复命令

最简单的重复命令是for 圈(for-loop),其基本形式为:

for 变数 = 矩阵;

运算式;

end

其中变数的值会被依次设定为矩阵的每一行,来执行介於for和end之间的运算式。因此,若无意外情况,运算式执行的次数会等於矩阵的行数。

举例来说,下列命令会产生一个长度为6的调和数列(Harmonic sequence):

x = zeros(1,6); % x是一个16的零矩阵

for i = 1:6,

x(i) = 1/i;

end

在上例中,矩阵x最初是一个16的零矩阵,在for 圈中,变数i的值依次是1到6,因此矩阵x的第i个元素的值依次被设为1/i。我们可用分数来显示此数列:

format rat % 使用分数来表示数值

disp(x)

1 1/

2 1/

3 1/

4 1/

5 1/6

for圈可以是多层的,下例产生一个16的Hilbert矩阵h,其中为於第i列、第j 行的元素为

h = zeros(6);

for i = 1:6,

for j = 1:6,

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

end

end

disp(h)

1 1/

2 1/

3 1/

4 1/

5 1/6

1/2 1/3 1/4 1/5 1/6 1/7

1/3 1/4 1/5 1/6 1/7 1/8

1/4 1/5 1/6 1/7 1/8 1/9

1/5 1/6 1/7 1/8 1/9 1/10

1/6 1/7 1/8 1/9 1/10 1/11

小提示:预先配置矩阵在上面的例子,我们使用zeros来预先配置(Allocate)了一个适当大小的矩阵。若不预先配置矩阵,程式仍可执行,但此时MATLAB 需要动态地增加(或减小)矩阵的大小,因而降低程式的执行效率。所以在使用一个矩阵时,若能在事前知道其大小,则最好先使用zeros或ones等命令来预先配置所需的记忆体(即矩阵)大小。

在下例中,for 圈列出先前产生的Hilbert矩阵的每一行的平方和:

for i = h,

disp(norm(i)^2); % 印出每一行的平方和

end

1299/871

282/551

650/2343

524/2933

559/4431

831/8801

在上例中,每一次i的值就是矩阵h的一行,所以写出来的命令特别简洁。

令一个常用到的重复命令是while 圈,其基本形式为:

while 条件式;

运算式;

end

也就是说,只要条件示成立,运算式就会一再被执行。例如先前产生调和数列的例子,我们可用while 圈改写如下:

x = zeros(1,6); % x是一个16的零矩阵

i = 1;

while i <= 6,

x(i) = 1/i;

i = i+1;

end

format short

1-3、逻辑命令

最简单的逻辑命令是if, ..., end,其基本形式为:

if 条件式;

运算式;

end

if rand(1,1) > 0.5,

disp('Given random number is greater than 0.5.');

end

Given random number is greater than 0.5.

1-4、集合多个命令於一个M档案

若要一次执行大量的MATLAB命令,可将这些命令存放於一个副档名为m的档

案,并在 MATLAB提示号下键入此档案的主档名即可。此种包含MATLAB命令的档案都以m为副档名,因此通称M档案(M-files)。例如一个名为test.m的M档案,包含一连串的MATLAB命令,那麽只要直接键入test,即可执行其所包含的命令:

pwd % 显示现在的目录

ans =

D:\MATLAB5\bin

cd c:\data\mlbook % 进入test.m所在的目录

type test.m % 显示test.m的内容

% This is my first test M-file.

% Roger Jang, March 3, 1997

fprintf('Start of test.m!\n');

for i = 1:3,

fprintf('i = %d ---> i^3 = %d\n', i, i^3);

end

fprintf('End of test.m!\n');

test % 执行test.m

Start of test.m!

i = 1 ---> i^3 = 1

i = 2 ---> i^3 = 8

i = 3 ---> i^3 = 27

End of test.m!

小提示:第一注解行(H1 help line) test.m的前两行是注解,可以使程式易於了解与管理。特别要说明的是,第一注解行通常用来简短说明此M档案的功能,以便lookfor能以关键字比对的方式来找出此M档案。举例来说,test.m的第一注解行包含test这个字,因此如果键入lookfor test,MATLAB即可列出所有在第一注解行包含test的M档案,因而test.m也会被列名在内。

严格来说,M档案可再细分为命令集(Scripts)及函数(Functions)。前述的test.m

即为命令集,其效用和将命令逐一输入完全一样,因此若在命令集可以直接使用工作空间的变数,而且在命令集中设定的变数,也都在工作空间中看得到。函数则需要用到输入引数(Input arguments)和输出引数(Output arguments)来传递资讯,这就像是C语言的函数,或是FORTRAN语言的副程序(Subroutines)。举例来说,若要计算一个正整数的阶乘(Factorial),我们可以写一个如下的MATLAB函数并将之存档於fact.m:

function output = fact(n)

% FACT Calculate factorial of a given positive integer.

output = 1;

for i = 1:n,

output = output*i;

end

其中fact是函数名,n是输入引数,output是输出引数,而i则是此函数用到的暂时变数。要使用此函数,直接键入函数名及适当输入引数值即可:

y = fact(5)

y = 120

(当然,在执行fact之前,你必须先进入fact.m所在的目录。)在执行fact(5)时,MATLAB会跳入一个下层的暂时工作空间(Temperary workspace),将变数n的

值设定为5,然後进行各项函数的内部运算,所有内部运算所产生的变数(包含输入引数n、暂时变数i,以及输出引数output)都存在此暂时工作空间中。运算完毕後,MATLAB会将最後输出引数output的值设定给上层的变数y,并将清除此暂时工作空间及其所含的所有变数。换句话说,在呼叫函数时,你只能经由输入引数来控制函数的输入,经由输出引数来得到函数的输出,但所有的暂时变数都会随着函数的结束而消失,你并无法得到它们的值。

小提示:有关阶乘函数前面(及後面)用到的阶乘函数只是纯粹用来说明MATLAB的函数观念。若实际要计算一个正整数n的阶乘(即n!)时,可直接写成prod(1:n),或是直接呼叫gamma函数:gamma(n-1)。

MATLAB的函数也可以是递 式的(Recursive),也就是说,一个函数可以呼叫它本身。

举例来说,n! = n*(n-1)!,因此前面的阶乘函数可以改成递式的写法:

function output = fact(n)

% FACT Calculate factorial of a given positive integer recursively.

if n == 1, % Terminating condition

output = 1;

return;

end

output = n*fact(n-1);

在写一个递函数时,一定要包含结束条件(Terminating condition),否则此函数将会一再呼叫自己,永远不会停止,直到电脑的记忆体被耗尽为止。以上例而言,n==1即满足结束条件,此时我们直接将output设为1,而不再呼叫此函数本身。

1-5、搜寻路径

在前一节中,test.m所在的目录是d:\mlbook。如果不先进入这个目录,MATLAB 就找不到你要执行的M档案。如果希望MATLAB不论在何处都能执行test.m,那麽就必须将d:\mlbook加入MATLAB的搜寻路径(Search path)上。要检视MATLAB的搜寻路径,键入path即可:

path

MATLABPATH

d:\matlab5\toolbox\matlab\general

d:\matlab5\toolbox\matlab\ops

d:\matlab5\toolbox\matlab\lang

d:\matlab5\toolbox\matlab\elmat

d:\matlab5\toolbox\matlab\elfun

d:\matlab5\toolbox\matlab\specfun

d:\matlab5\toolbox\matlab\matfun

d:\matlab5\toolbox\matlab\datafun

d:\matlab5\toolbox\matlab\polyfun

d:\matlab5\toolbox\matlab\funfun

d:\matlab5\toolbox\matlab\sparfun

d:\matlab5\toolbox\matlab\graph2d

d:\matlab5\toolbox\matlab\graph3d

d:\matlab5\toolbox\matlab\specgraph

d:\matlab5\toolbox\matlab\graphics

d:\matlab5\toolbox\matlab\uitools

d:\matlab5\toolbox\matlab\strfun

d:\matlab5\toolbox\matlab\iofun

d:\matlab5\toolbox\matlab\timefun

d:\matlab5\toolbox\matlab\datatypes

d:\matlab5\toolbox\matlab\dde

d:\matlab5\toolbox\matlab\demos

d:\matlab5\toolbox\tour

d:\matlab5\toolbox\simulink\simulink

d:\matlab5\toolbox\simulink\blocks

d:\matlab5\toolbox\simulink\simdemos

d:\matlab5\toolbox\simulink\dee

d:\matlab5\toolbox\local

此搜寻路径会依已安装的工具箱(Toolboxes)不同而有所不同。要查询某一命令是在搜寻路径的何处,可用which命令:

which expo

d:\matlab5\toolbox\matlab\demos\expo.m

很显然c:\data\mlbook并不在MATLAB的搜寻路径中,因此MATLAB找不到test.m这个M档案:

which test

c:\data\mlbook\test.m

要将d:\mlbook加入MATLAB的搜寻路径,还是使用path命令:

path(path, 'c:\data\mlbook');

此时d:\mlbook已加入MATLAB搜寻路径(键入path试看看),因此MATLAB 已经"看"得到

test.m:

which test

c:\data\mlbook\test.m

现在我们就可以直接键入test,而不必先进入test.m所在的目录。

小提示:如何在其启动MATLAB时,自动设定所需的搜寻路径?如果在每一次启动MATLAB後都要设定所需的搜寻路径,将是一件很麻烦的事。有两种方法,可以使MATLAB启动後,即可载入使用者定义的搜寻路径:

1.MATLAB的预设搜寻路径是定义在matlabrc.m(在c:\matlab之下,或是其他安装MATLAB 的主目录下),MATLAB每次启动後,即自动执行此档案。因此你可以直接修改matlabrc.m ,以加入新的目录於搜寻路径之中。

2.MATLAB在执行matlabrc.m时,同时也会在预设搜寻路径中寻找startup.m,若此档案存在,则执行其所含的命令。因此我们可将所有在MATLAB启动时必须执行的命令(包含更改搜寻路径的命令),放在此档案中。

每次MATLAB遇到一个命令(例如test)时,其处置程序为:

1.将test视为使用者定义的变数。

2.若test不是使用者定义的变数,将其视为永久常数。

3.若test不是永久常数,检查其是否为目前工作目录下的M档案。

4.若不是,则由搜寻路径寻找是否有test.m的档案。

5.若在搜寻路径中找不到,则MATLAB会发出哔哔声并印出错误讯息。

以下介绍与MATLAB搜寻路径相关的各项命令。

1-6、资料的储存与载入

实验1熟悉matlab环境和基本操作

实验1 熟悉Matlb环境及基本操作 实验目的: 1.熟悉Matlab环境,掌握Matlab的主要窗口及功能; 2.学会Matlab的帮助使用; 3.掌握向量、矩阵的定义、生成方法和基本运算; 4.掌握Matlab的基本符号运算; 5.掌握Matlab中的二维图形的绘制和控制。 实验内容: 1.启动Matlab,说明主窗口、命令窗口、当前目录窗口、工作空间窗口、历史窗口、图形窗口、M文件编辑器窗口的功能。 2.实例操作Matlab的帮助使用。 3.实例操作向量、矩阵的定义、生成方法和基本运算。 4.实例操作Matlab的基本符号运算。 5.实例操作Matlab中的二维图形绘制和控制。 实验仪器与软件: 1.CPU主频在2GHz以上,内存在512Mb以上的PC; 2.Matlab 7及以上版本。 实验讲评: 实验成绩: 评阅教师: 年月日

实验1 熟悉Matlab环境及基本操作 一、Matlab环境及主要窗口的功能 运行Matlab安装目录下的matlab.exe文件可启动Matlab环境,其默认布局如下图: 其中, 1.主窗口的功能是:主窗口不能进行任何计算任务操作,只用来进行一些整体的环境参数设置,它主要对6个下拉菜单的各项和10个按钮逐一解脱。 2.命令窗口的功能是:对MATLAB搜索路径中的每一个M文件的注释区的第一行进行扫描,一旦发现此行中含有所查询的字符串,则将该函数名及第一行注释全部显示在屏幕上。 3. 历史窗口的功能是:历史窗口显示命令窗口中的所有执行过的命令,一方面可以查看曾经执行过的命令,另一方面也可以重复利用原来输入的命令行,可以从命令窗口中直接通过双击某个命令行来执行该命令,

实验一 MATLAB基本操作及运算

实验一 MATLAB 基本操作及运算 一、 实验目的 二、 实验的设备及条件 三、 实验内容 1、 建立以下标量: 1) a=3 2) ,(j 为虚数单位) 3) c=3/2πj e 2、 建立以下向量: 1) Vb= 2.71382882????????-???? 2) Vc=[4 3.8 … -3.8 -4 ] (向量中的数值从4到-4,步长为-0.2) 3、 建立以下矩阵: 1) 3 333Ma ????=?????? Ma 为一个7×7的矩阵,其元素全为3. 2) 11191212921020100Mb ??????=??????

Mb 为一个10×10的矩阵. 3) 114525173238Mc ????=?????? 4、 使用题1中的变量计算下列等式的x,y,z 的值: 1) ((15)/6)111a x e --=+ 2) 2x π= 3) 3ln([()()]sin(/3))x b c b c a π=+-R ,其中R 表示复数实部。 5、 求解函数值22/(2.25)ct y e -=,其中c 取值见题1,t 的取值范围为题2中行 向量Vc 。 6、 使用题1和题3中所产生的标量和矩阵计算等式 1()()T Mx a Mc Mc Mc -=?? 其中*为矩阵所对应行列式的值,参考det 。 7、 函数的使用和矩阵的访问。 1) 计算矩阵Mb 每一列的和,结果应为行向量形式。 2) 计算整个矩阵Mb 的平均值。 3) 用向量[1 1…1] 替换Mb 的最上一行的值 4) 将矩阵Mb 的第2~5行,第3到9列的元素所构成的矩阵赋值给矩阵SubMb 。 5) 删除矩阵Mb 的第一行; 6) 使用函数rand 产生一个1×10的向量r ,并将r 中值小于0.5的元素设置为0。 8、 已知CellA (1, 1)=‘中国’,CellA (1,2)=‘北京’,CellA (2,1)是一个3乘3的单位阵,CellA (2, 2)=[1 2 3],试用MATLAB 创建一个2×2的细胞数组CellA 。 9、 已知结构数组student 中信息包含有姓名,学号,性别,年龄和班级,试用MATLAB 创建相应的结构数组student 。该数组包含有从自己学号开始连续5个同学的信息(如果学号在你后面的同学不足5个则往前排序),创建完成后查看自己的信息。

实验1 MATLAB使用方法和程序设计

实验1 MATLAB 使用方法和程序设计 一、实验目的 1、掌握MATLAB 软件使用的基本方法。 2、熟悉MATLAB 的数据表示、基本运算和程序控制语句。 3、熟悉MATLAB 绘图命令及基本绘图控制。 4、熟悉MATLAB 程序设计的基本方法。 二、实验内容 1.帮助命令 使用Help 命令,查找sqrt (开方)函数的使用方法。 2、矩阵运算 (1)矩阵乘法 已知A=[1 2;3 4];B=[5 5;7 8]; 求A^2*B 。 (2) 矩阵除法 已知A=[1 2 3;4 5 6;7 8 9];B=[1 0 0;0 2 0;0 0 3]; 求A\B,A/B 。 (3) 矩阵的转置及共轭转置 已知A=[5+i ,2-i ,1;6*i ,4,9-i];求A.’,A ’ 。 (4)使用冒号选出指定元素 已知A=[1 2 3 ; 4 5 6 ; 7 8 9]; 求A 中第3列前2个元素;A 中所有列第2,3行的元素。 (5)方括号[] 用magic 函数生成一个4阶魔术矩阵,删除该矩阵的第四列。 3、多项式 (1)求多项式p(x)=x 3-2x-4的根。 (2)求 f (x) = (cos x)2 的一次导数。 (3)求微分方程 的通解,并验证。 4、基本绘图命令 (1)绘制余弦曲线cost =y , ]2,0[π∈t 。 (2)在同一坐标系中绘制余弦曲线 0.25)-cos(t =y 和正弦曲线 )5.0sin(-=t y ,]2,0[π∈t (3)用plot3函数绘制三维螺线: 22x dy xy xe dx -+= sin()cos()x t y t z t =??=??=?( 0 < t < 20 )

实验一 Matlab基本操作(2016)

实验一 MATLAB 基本操作 一、实验目的 1. 学习和掌握MA TLAB 的基本操作方法 2. 掌握命令窗口的使用 3. 熟悉MATLAB 的数据表示、基本运算 二、实验内容和要求 1. 实验内容 1) 练习MATLAB7.0或以上版本 2) 练习矩阵运算与数组运算 2. 实验要求 1) 每位学生独立完成,交实验报告 2) 禁止玩游戏! 三、实验主要软件平台 装有MATLAB7.0或以上的PC 机一台 四、实验方法、步骤及结果测试 1. 实验方法:上机练习。 2. 实验步骤: 1) 开启PC ,进入MA TLAB 。 2) 使用帮助命令,查找sqrt 函数的使用方法 答: help sqrt 3) 矩阵、数组运算 a) 已知 ??????????=987654321A ,???? ??????=963852741B ,求)2()(A B B A -?+ 答: A=[1, 2, 3; 4, 5, 6; 7, 8, 9]; B=[1, 4, 7; 2, 5, 8; 3, 6, 9]; (A+B)*(2*B-A) b) 已知?? ????-=33.1x ,??????=π24y ,求T xy ,y x T c) 已知??????????=987654321A ,???? ??????=300020001B ,求A/B, A\B. d) 已知???? ??????=987654321A ,求:(1) A 中第三列前两个元素;(2) A 中所有第二行元素;(3) A 中四个角上的元素;(4) 交换A 的第1、3列。(5) 交换A 的第1、2行。(6) 删除A 的第3列。

e) 已知[]321=x ,[]654=y ,求:y x *.,y x /.,y x \.,y x .^, 2.^x ,x .^2。 f) 给出x=1,2,…,7时,x x sin 的值。 3)常用的数学函数 a )随机产生一个3x3的矩阵A ,求:(1) A 每一行的最大、最小值,以及最大、最小值所在的列;(2) A 每一列的最大、最小值,以及最大、最小值所在的行;(3) 整个矩阵的最大、最小值;(4) 每行元素之和;(5) 每列元素之和;(6) 每行元素之积;(7) 每列元素之积。 b) 随机产生两个10个元素的向量x ,y 。(1) 求x 的平均值、标准方差。(2) 求x ,y 的相关系数。(3)对x 排序,并记录排序后元素在原向量中的位置。 4) 字符串操作函数 建立一个字符串向量(如‘ABc123d4e56Fg9’),然后对该向量做如下处理: (1) 取第1~5个字符组成的子字符串。 (2) 将字符串倒过来重新排列。 (3) 将字符串中的小写字母变成相应的大写字母,其余字符不变。 (4) 统计字符串中小写字母的个数。

matlab基本使用方法

1-1、基本运算与函数 在MATLAB下进行基本数学运算,只需将运算式直接打入提示号(>>)之後,并按入Enter键即可。例如:>> (5*2+1.3-0.8)*10/25 ans =4.2000 MATLAB会将运算结果直接存入一变数ans,代表MATLAB运算後的答案(Answer)并显示其数值於萤幕上。小提示: ">>"是MATLAB的提示符号(Prompt),但在PC中文视窗系统下,由於编码方式不同,此提示符号常会消失不见,但这并不会影响到MATLAB的运算结果。 我们也可将上述运算式的结果设定给另一个变数x: x = (5*2+1.3-0.8)*10^2/25 x = 42 此时MATLAB会直接显示x的值。由上例可知,MATLAB认识所有一般常用到的加(+)、减(-)、乘(*)、除(/)的数学运算符号,以及幂次运算(^)。 小提示: MATLAB将所有变数均存成double的形式,所以不需经过变数宣告(Variable declaration)。MATLAB同时也会自动进行记忆体的使用和回收,而不必像C语言,必须由使用者一一指定.这些功能使的MATLAB易学易用,使用者可专心致力於撰写程式,而不必被软体枝节问题所干扰。 若不想让MATLAB每次都显示运算结果,只需在运算式最後加上分号(;)即可,如下例: y = sin(10)*exp(-0.3*4^2); 若要显示变数y的值,直接键入y即可: >>y y =-0.0045 在上例中,sin是正弦函数,exp是指数函数,这些都是MATLAB常用到的数学函数。 下表即为MATLAB常用的基本数学函数及三角函数: 小整理:MATLAB常用的基本数学函数 abs(x):纯量的绝对值或向量的长度 angle(z):复数z的相角(Phase angle) sqrt(x):开平方 real(z):复数z的实部 imag(z):复数z的虚部 conj(z):复数z的共轭复数 round(x):四舍五入至最近整数 fix(x):无论正负,舍去小数至最近整数 floor(x):地板函数,即舍去正小数至最近整数 ceil(x):天花板函数,即加入正小数至最近整数 rat(x):将实数x化为分数表示 rats(x):将实数x化为多项分数展开 sign(x):符号函数 (Signum function)。 当x<0时,sign(x)=-1; 当x=0时,sign(x)=0; 当x>0时,sign(x)=1。 > 小整理:MATLAB常用的三角函数 sin(x):正弦函数 cos(x):馀弦函数 tan(x):正切函数

Matlab figure 基本操作

Matlab figure基本操作 set(gcf,'Position',[300 300 700 220]); %调整Figure位置和大小。前两个为离屏幕左下角的X,Y距离,后两个值为Figure窗口的宽和高 set(gca,'Position',[.05 .1 .9 .8]); %调整绘图范围(比例关系)。0.05+0.9为横向比例,最大为1;0.1+0.8为纵向比例。0.05和0.1为距离Figure左下角的X,Y距离 figure_FontSize=12; set(gca,'FontSize',figure_FontSize,'FontName','Arial'); xlabel('Distance (m)','FontSize',figure_FontSize,'fontweight','b','FontName','Arial'); ylabel('Thickness (m)','FontSize',figure_FontSize,'fontweight','b','FontName','Arial'); box off; %关闭上和右侧刻度线 grid on; %添加网格线 xkd=[10 20 30]; %定义坐标刻度数量 ykd=[100 200 300]; xkd_label=[1 3 5]; %更改刻度 ykd_label=[100 200 300]; set(gca,'xtick',xkd); set(gca,'xticklabel',xkd_label); set(gca,'ytick',ykd); set(gca,'yticklabel',ykd_label); set(gca,'xscale','log'); %改为对数坐标

实验一 Matlab基本操作及运算

实验一Matlab基本操作及运算 一、实验目的: 1.熟悉MATLAB基本操作 2.掌握矩阵、变量、表达式的各种基本运算 二、实验基本知识: 1.熟悉MATLAB环境 熟悉MATLAB桌面和命令窗口、命令历史窗口、帮助信息浏览器、工作空间浏览器文件和搜索路径浏览器。 2.掌握MATLAB常用命令 3.MATLAB变量与运算符 变量命名规则如下: (1)变量名可以由英语字母、数字和下划线组成 (2)变量名应以英文字母开头 (3)长度不大于31个 (4)区分大小写 MATLAB中设置了一些特殊的变量与常量,列于下表。 MATLAB运算符,通过下面几个表来说明MATLAB的各种常用运算符

表2 MATLAB算术运算符 表3 MATLAB关系运算符 表4 MATLAB逻辑运算符 表5 MATLAB特殊运算

4. MATLAB的一维、二维数组的访问 表6 子数组访问与赋值常用的相关指令格式 5. MATLAB的基本运算 表7 两种运算指令形式和实质内涵的异同表 6.MATLAB的常用函数

表8 标准数组生成函数 表9 数组操作函数 7.多项式运算 poly——产生特征多项式系数向量 roots——求多项式的根 p=poly2str(c,‘x’)—(将特征多项式系数向量c转换为以习惯方式显示是多项式)conv, convs——多项式乘运算 deconv——多项式除运算 polyder(p)——求p的微分 polyder(a, b)——求多项式a,b乘积的微分 [p,q]=polyder(p1,p2)——求解多项式p1/p2微分的有理分式 poly(p,A)——按数组运算规则求多项式p在自变量A的值 polym(p,A)——按矩阵运算规则求多项式p在自变量A的值

MATLAB快速入门第一章

。下面将对菜单进行介绍。 图1-8 1.3.1 M文件 M文件有两种类型:文本M文件和函数M文件。 (一)文本M文件 一个比较复杂的程序常常要作反复的调试,这时你不妨建立一个文本文件并把它储存起来,可以随时调用进行计算。建立文本文件可以在File菜单中选择New,再选择M-file,这时MATLAB将打开一个文本编辑窗口,在这里输入命令和数据。储存时文件名遵循MA TLAB变量命名的原则,但必须以m 为扩展名,其一般形式为 < M文件名>.m 如juzhen.m, pp.m等。 值得注意的是,文本M文件中的变量都是全局变量,在执行过程中, 文本M 文件中的命令可以使用目前工作区中的变量,它所产生的变量也将成为工作区的一部分。例如我们把下面的程序保存为名为budijifen1.m的文本M文件:function budijifen1 x=-4*pi:0.014*pi;a=1; for C=-3:3 y =1/2*(-sin(a*x)+a*x)/a+C plot(x,y) hold on end grid hold off xlabel('自变量 X') ylabel('因变量 Y') title('不定积分的积分曲线族') legend('不定积分的积分曲线族') 然后在MA TLAB工作窗口中输入文件名:

>> budijifen1 运行后屏幕显示计算结果(略)和图形(见图1-9)。 再如,将下面的一个生成矩阵的程序保存为名为juzhen.m 的文本M 文件: for i=1:k for j=1:n b(i,j)=7/(2*i+3*j-6); end end a=rats(b) 然后在MA TLAB 工作窗口中输入: >> k=3;n=4; juzhen,b 图1-9 名为budijifen1.m 的文本M 文件的图形 运行后屏幕显示运行结果如下: a = -7 7/2 7/5 7/8 7 7/4 1 7/10 7/3 7/6 7/9 7/12 b = -7.0000e+000 3.5000e+000 1.4000e+000 8.7500e-001 7.0000e+000 1.7500e+000 1.0000e+000 7.0000e-001 2.3333e+000 1.1667e+000 7.7778e-001 5.8333e-001 (二) 函数M 文件 函数M 文件是另一类M 文件,我们可以根据需要建立自己的函数文件,它们能够像库函数一样方便地调用,从而极大地扩展MA TLAB 的能力。如果对于一类特殊的问题,建立起许多函数M 文件,就能最终形成独立的工具箱。 函数M 文件的第一行有特殊的要求,其形式必须为 function <因变量>= <函数名>(<自变量>) 其他各行为从自变量计算因变量的语句,并最终将结果赋予因变量。而这个M 文件的文件名必须是<函数名>.m 。下面给出函数文件的一个简单例子。 如果我们要在某个程序中要调用函数π= 21y e 22x -,就必须建立并保存下面的名为fun.m 的函数M 文件。 function y = fun(x)

MATLAB 基本操作和简单语句输入

实验一基本操作和简单语句输入 一、实验目的和要求 1、熟悉MATLAB的命令窗口 2、掌握MATLAB的一些基本操作,能够进行一般的数值计算 3、实现语句的重调和修改 二、实验内容和步骤 1、启动MATLAB 2、观察MATLAB窗口的组成部分 (1)了解菜单栏各菜单项的功能,用书变打开MA TLAB的各个菜单,在状态栏里显示当前鼠标所指的菜单项的含义 (2)用鼠标指向常用工具栏的每个工具按钮,了解各个工具按钮的含义 3、命令窗口的打开和关闭 (1)查看窗口的打开和关闭 (2)在命令窗口中输入命令a=3;b=4;y=a*b+a/b,然后回车,查看命令显示结果 (3)利用MATLAB中编辑命令行事常用的按键功能,调出上一语句,对它进行修改(如把分号改成逗号,看运行结果),并把运行结果复制到word中保存。 >> a=3;b=4;y=a*b+a/b, y = 12.7500 >> a=3,b=4,y=a*b+a/b, a = 3 b = 4 y = 12.7500 (4)关闭命令窗口

(5)打开命令窗口 4、使用MATLAB帮助 熟悉MATLAB的帮助系统,通过帮助系统了解有关内容 5、在命令窗口中输入demo,将出现MA TLAB的演示窗,通过演示窗,对MATLAB的功能进一步的浏览。 三、试验环境 计算机MA TLAB软件 四、练习 1、调出MATLAB\stateflow的演示实例

2、计算y=x^3+(x-0.98)^2/(x+1.25)^3-5(x+1/x),x=2,x=3时的值 3、计算cos60?-√(9-√2) 4、已知a=3,A=4,b=a^2,B=b^2-1,c=a+A-2B,C=a+B+2c,求C

实验一 MATLAB基础准备及入门

实验一 MATLAB基础准备及入门本次实验有两个目的:一是讲述MATLAB正常运行所必须具备的基础条件;二是简明 系统地介绍高度集成的Desktop操作桌面的功能和使用方法。 本章的前两节分别讲述:MATLAB的正确安装方法和MATLAB 环境的启动。因为指令窗是MATLAB最重要的操作界面,所以本章用第 1.3、1.4 两节以最简单通俗的叙述、算例讲述指令窗的基本操作方法和规则。这部分内容几乎对MATLAB各种版本都适用。 MATLAB6.x 不同于其前版本的最突出之处是:向用户提供前所未有的、成系列的交互式工作界面。了解、熟悉和掌握这些交互界面的基本功能和操作方法,将使新老用户能事半功倍地利用MATLAB去完成各种学习和研究。为此,本章特设几节用于专门介绍最常用的交互界面:历史指令窗、当前目录浏览器、工作空间浏览器、内存数组编辑器、交互界面分类目录窗、M文件编辑/调试器、及帮助导航/浏览器。 本章是根据MATLAB6.5版编写的,但大部分内容也适用于其他6.x版。 1.1M ATLAB的安装和内容选择 图 1.1-1 1.2D esktop操作桌面的启动 1.2.1MATLAB的启动 1.2.2Desktop操作桌面简介

一 操作桌面的缺省外貌 图1.2-1 二 通用操作界面 1.3 C ommand Window 运行入门 1.3.1 Command Window 指令窗简介 图 1.3-1 1.3.2 最简单的计算器使用法 【例1.3.2-1】求2 3)]47(212[÷-?+的算术运算结果。 (1)用键盘在MATLAB 指令窗中输入以下内容 >> (12+2*(7-4))/3^2 (2)在上述表达式输入完成后,按【Enter 】键,该就指令被执行。 (3)在指令执行后,MATLAB 指令窗中将显示以下结果。

Matlab使用方法和程序设计解析

实验一Matlab使用方法和程序设计 一、实验目的: 1、掌握Matlab软件使用的基本方法 2、熟悉Matlab的基本运算和程序控制语句 3、熟悉Matlab程序设计和基本方法 二、实验内容: 1、求多项式的根:p(x=x^4+2x^3+3x^2+5x+4 源程序: a=[12354]; b=roots(a 运行结果: 分析:

调用roots(a,求多项式的根 2、已知f=a^4*(b^2-c^2+b^4*(c^2-a^2+c^4*(a^2-b^2,试用符号运算的方法对其因式分解 源程序: syms a b c; f=a^4*(b^2-c^2+b^4*(c^2-a^2+c^4*(a^2-b^2; R=factor(f 运行结果: 分析: 调用factor(s对多项式进行因式分解 3、编写一个函数,完成求和:S=1+3+5+,,,,,,+2i+1 源程序: sum=0;

for i=1:2:1000; sum=sum+i; end sum 运行结果: 分析: 调用for循环完成求和,起始值为1,步长为2,终止值为1000 4、已知一传递函数。F(s=,试将其分解部分分式 源程序: num=[12]; den=[154]; [res,poles,k]=residue(num,den 运行结果:

分析: 调用residue(num,den进行分解部分分式,num为传递函数的分子,den为传递函数的分母。 三、实验总结: 本次实验使我掌握了Matlab软件使用的基本方法,熟悉了Matlab的基本运算和程序控制语句,熟悉Matlab程序设计和基本方法,让我将理论与实践相结合增强了自我动手能力,为以后的工作打下一定的基础。 实验二Matlab使用方法和程序设计 一、实验目的: 1、掌握如何使用MATLAB进行系统时域分析

Matlab gui新手入门指南

1、从最简单的开始 编程最基本的目的就是——我执行一个操作,程序做出一个反应。 “一个操作”包括:点击鼠标,拖动滑块,填写数据,选择选项…… “做出一个反应”包括:计算一些东西,然后储存在哪里,或者贴个图出来,或者显示在哪里…… ------------------------------------------------------------------------------------------------------------------- 编程的基本思想: 目的->当点击按钮A时,然后执行任务C, 则->进入按钮A的回调函数callback里,写下任务C的代码。 ------------------------------------------------------------------------------------------------------------------- a:不知道callback在哪??右键单击按钮,view callbacks->选择callback)别的控件也一样。 a:不同的回调函数啥意思?? callBack 最常用的就是它。如果控件是按钮,那点击按钮时,则按钮下的Callback就会执行;如果是滑块,则拖动滑块时,滑块名下的callback就会执行;总之,就是对控件默认操作时,matlab后台就会自动调用它名下的的callback。正常用途,全放在callback下就够了。如果其他的,实在是想知道,了解一下也未尝不可。 ButtonDownFcn 就是鼠标在它(代指各种控件)上面点击一下,你放在这个函数名下的代码就会执行。(ps:按钮的callback也是点击,所以会覆盖掉这个buttondownfcn。) CreateFcn 顾名思义,在生成这个控件,显示之前,执行你放在这个函数名下的代码; DeleteFcn 一样。在控件要销毁,但是被毁灭之前执行这个函数名下的代码。貌似“真的要退出吗”这一类就是写在这里。 KeyPressFcn 当前控件获得焦点且有按键按下时执行。(什么是焦点?就是这个控件被鼠标点了(或者是tab轮选到了)。你打开一个记事本,然后再点这个网页,再随便按几个按键,记事本上有字不?没有对吧。因为它没获得焦点,所以你的按键它不会反应的。只有你最后再点它一下,再按几个按键,结果怎么样?有字了吧?)这里的KeyPressFcn也是一样的道理。 一般在这下面的代码还会判断下按键是什么,然后执行相应的代码。 ResizeFcn,SelectionChangeFcn 不常用。也懒得去看了。附几句,控件都有Resize的属性,好像默认是不可调整,如果要用到这个函数,去把它打开先。 SelectionChangeFcn 是在群按钮组件中,改变选择时,所执行的函数。 哪些控件支持哪些回调函数?很简单,你在它上面右键就可以看到了,点进去就可以编辑了。 可以在property inspect中在需要的回调函数下设置%automatic就可以自动添加相应的回调函数框架。 2、常用控件代码框架参考 --------------------------------------------------------------------- Toggle Button的callback一般写法

MATLAB的基本操作实验报告

MATLAB 的基本操作(MATLAB Basics ) 1. Plot the following graph (1) Plotting the two curves under one coordinate system with different color sin(), sin(3)y x y x == 代码: clear; x=-pi:pi/1000:pi; y=sin(x); plot(x,y,'r:'); hold on; x=-pi:pi/1000:pi; y=sin(3*x); plot(x,y,'b'); hold off; xlabel('x 轴'); ylabel('y 轴'); legend('y=sinx','y=sin(3x)'); 运行结果: (2) Plotting the standard normal distribution density function: )55(21)(2 2 ≤≤-= -x e x p x π 代码: clear;

MATLAB 的基本操作(MATLAB Basics ) x=-5:0.05:5; y=1/sqrt(2*pi)*exp(-x.^2/2); plot(x,y) 运行结果: (3)Using ‘subplot ’ command to plot 6 curves : )55()6,...,2,1() *sin()(ππ≤≤-==x i x i x f i 代码: clear; x=-5*pi:0.05:5*pi; for i=1:6 subplot(2,3,i); y=sin(i*x); plot(x,y); end 运行结果:

MATLAB基本使用方法

MATLAB基本的使用方法 1.读取图像:用imread函数读取图像文件,文件格式可以是TIFF、JPEG、GIF、BMP、PNG等。比如 >>f=imread('chestxray.jpg'); 读进来的图像数据被保存在变量f中。尾部的分号用来抑制输出。如果图片是彩色的,可以用rgb2gray转换成灰度图: >>f=rgb2gray(f); 然后可以用size函数看图像的大小 >>size(f) 如果f是灰度图像,则可以用下面的命令把这个图像的大小赋给变量M和N >>[M,N]=size(f); 用whos命令查看变量的属性 >>whos f 2.显示图像:用imshow显示图像 imshow(f,G) 其中f是图像矩阵,G是像素的灰度级,G可以省略。比如 >>imshow(f,[100200]) 图像上所有小于等于100的数值都会显示成黑色,所有大于等于200的数值都会显示成白色。pixval命令可以用来查看图像上光标所指位置的像素值。 pixval 例如 >>f=imread('rose_512.tif');>>whos f>>imshow(f) 如果要同时显示两幅图像,可以用figure命令,比如 >>figure,imshow(g) 用逗号可以分割一行中的多个命令。imshow的第二个参数用一个空的中括号: >>imshow(h,[])可以使动态范围比较窄的图像显示更清楚。 3.写图像。用imwrite写图像 imwrite(f,'filename') 文件名必须包括指明格式的扩展名。也可以增加第三个参数,显式指明文件的格式。比如>>imwrite(f,'patient10_run1.tif','tif')

MATLAB的使用方法

https://www.360docs.net/doc/c55471051.html,/irp/uploadfile/netclass/CONTROL/application/ Matlab%E7%9A%84%E4%BD%BF%E7%94%A8.html 在本教程的制作中,主要是应用MATLAB的仿真功能对各例题的结果进行仿真,观察所设计的控制系统的 输出、误差等。 MATLAB本身自带了很多的模型,这次所应用到的有以下一些: 以上模型的参数都可以改变。比如线性传递函数的描述方法是:将线性传递函数的分子和分母分别按s的降幂 排列,然后将各项的系速以矩阵的形式描述。例如,线性传递函数 10/s(s+1)的描述方法为:分子 (Numerator)----[10]、分母(Denominator)----[1 1 0]。 以下以例一中在单位加速度输入时的仿真为例说明MATLAB的使用方法。 步骤如下: 1.进入 MATLAB命令窗口(Command Window)后,单击工具栏中的New Simulink Mode l图标,进入仿 真(Simulink)窗口。

2.从同时打开的Library窗口中选取组成框图所需的部件:零阶保持器、离散传递函数、线性传递函数、 示波器、比较器。由于MATLAB没有提供加速度输入的模型,因此,要由速度输入和积分器组合而成。根据题 目给出的条件和计算得出的控制器模型调整各环节的参数,设置如下: Ramp----Slope:1 Start time:0 initial output:0; Sum----List of signs:+-; Discrete Transfer Fcn---- Numerator: [0.8154 -1.11538566 0.57178566 -0.09999522] Denominator: [1 -1.282 -0.436 0.718] Sample time:1; Zero-Order Hold---- Sample time:1; Transfer Fcn---- Numerator:[10] Denominator:[1 10]。合成后的框图如下 如果觉得各模型下的英文说明难以说明问题的话,还可以把它们改成中文,或隐藏,也可以在任一地方添加 注释。 3.图上共设置了三个示波器,分别观察系统的输入、输出合误差。要观察这些信号,就要进行仿真,选 择菜单项Simulation->Start以开始仿真,听到扬声器发出“嘀”的一声,表示仿真结束,这时可以双击示 波器来观察仿真结果。如果所现示的信号图不理想,还可以通过调整图的属性来达到很好的效果。单击属性 按钮,便可设置y-轴的最大值(y-max)、最小值(y-min)、时间跨度 (time-range)等参数,还可以将数据送 给工作区(Save data to workspace),为以后画多条曲线的合成图作准备。调整参数后的系统误差如下图所 示(其他信号略)

matlab常用操作

常用的快捷键(用【】表示)或命令:1.在命令窗口(Command Window)中: 1)【上、下键】――切换到之前、之后的命令,可以重复按多次来达到你想要的命令 2)clc——清除命令窗口显示的语句,此命令并不清空当前工作区的变量,仅仅是把屏幕上显示出来的语句清除掉 3)clear――这个才是清空当前工作区的变量命令,常用语句clear all来完成 4)【Tab】键――(转自版友心灯)在 [email]matlab@https://www.360docs.net/doc/c55471051.html,[/email]看到的:在command窗口,输入一个命令的前几个字符,然后按tab键,会弹出前面含这几个字符的所有命令,找到你要的命令,回车,就可以自动完成。目前讨论结果是:matlab6.5版本中,如果候选命令超过100个,则不显示。而在matlab7以后版本中,则没有这个限制,均可正常提示 5)【Ctrl+C】(或【Ctrl+Break】)――(转自版友yangjin_ren)在matlab程序运行过程中,可能由于程序编写的失误,导致程序不停的运行,在命令窗口输入“Ctrl+C”可以将运行的程序停下来,而不需要将整个Matlab程序关掉。不过进行此操作的前提是能够激活切换到命令窗口才行,呵呵。

2.在编辑器(Editor)中: 1)【Tab】(或【Ctrl+]】)――增加缩进(对多行有效) 2)【Ctrl+[】--减少缩进(对多行有效) 3)【Ctrl+I】--自动缩进(即自动排版,对多行有效) 4)【Ctrl+R】――注释(对多行有效) 5)【Ctrl+T】――去掉注释(对多行有效) 6)【Ctrl+B】――括号配对检查(对版本6.5有效,但版本7.0无效,不知道是取消了还是换了另外的快捷键,请大牛们指点,其他版本没有测试过) 7)【F12】――设置或取消断点 8)【F5】――运行程序 matlab常用图像操作(2009-3-1522:54:00) 【收藏】【评论】【打印】【关闭】 一.读写图像文件 1.imread imread函数用于读入各种图像文件,如:a=imread('e:\w01.tif')

MATLAB 语言的基本使用方法

实验一 MATLAB 语言的基本使用方法 1. 实验目的 1) 了解MATLAB 程序设计语言的基本特点,熟悉MATLAB 软件运行环境。 2) 掌握创建、保存、打开文件及数据的方法,掌握设置文件路径的方法。 3) 掌握变量、函数等有关概念,具备初步的将一般数学问题转化为对应计算机模型并进行处理的能力。 2. MATLAB 基础知识 2.1 MATLAB 程序设计语言简介 MATLAB ,Matrix Laboratory 的缩写,是由MathWorks 公司开发的一套用于科学工程计算的可视化高性能语言,具有强大的矩阵运算能力。 与大家常用的Fortran 和C 等高级语言相比,MATLAB 的语法规则更简单,更贴近人的思维方式,被称之为“草稿纸式的语言”。 MATLAB 软件主要由主包、仿真系统(simulink )和工具箱(toolbox )三大部分组成。 2.2. MATLAB 界面简介 下面我们主要对MATLAB 基本界面进行介绍。如图 1-1所示,命令窗口包含标题栏、菜单栏、工具栏、命令行区、状态栏、垂直和水平波动条等 区域。 标题栏菜单栏工具栏命令行区状态栏垂直和水平滚 动条 图 1-1 MATLAB 基本界面——命令窗口 1) 菜单栏 菜单栏中包括File 、Edit 、View 、Web 、Window 和Help 六个菜单项。这里着重介绍File 项。 File 项是数据输入/输出的接口, 包括10个子项, 这里重点介绍其中的5个子项: New: 新建文件项。 有四个选择: M File(.M ,文本格式的MATLAB 程序文件, 可以直接通过文件名的方式在MATLAB 环境下解释运行); Figure(图形);

Matlab主要函数使用方法

Matlab主要函数使用方法 ndims(A)用ndims命令常看矩阵的维数 1. matlab中mod的用法 简单的说mod(a,b)就是求的是a除以b的余数。比方说mod(100,3)=1,mod(17,6)=5 Examples mod(13,5) ans = 3 mod([1:5],3) ans = 1 2 0 1 2 mod(magic(3),3) ans = 2 1 0 0 2 1 1 0 2 2. 关于Matlab中size()的问题 size按照下面的形式使用: [m,n]=size(a,x)。一般的,函数的输入参量x不是用,这是当只有一个输出变量时,size返回一个行向量,第一个数为行数,第二个数为列数;如果有两个输出变量,第一个返回量为行数,第二个返回数为列数。当使用x时,x=1返回行数,x=2返回列数,这时只有一个返回值。 我要问的是: I=im2double(imread(file)) ;//把图像数组转换成double精度类型; if(size(I,3) > 1) I = rgb2gray( I ) ;

end 中size(I,3) 代表什么意思?按照上面的说法X=1,2都可以理解。 I 代表的是图像数组阿,不是二维的么?那么size(I,3) 中的3 代表什么? 一个函数可以是多维的..比如说是一个10*10*10*10的距阵 那就是说这个距阵是4维的.. 那个'()'里的3就是指的第三维 3.r = corr2(A,B) 计算两个矩阵的二维相关系数. 4.matlab中imshow显示问题 各位好,将一幅灰度图像经过小波变换后,数据变成double型,对变换后的图像进行显示时,设变换后的图像为y,为何用imshow(uint8(y))和imshow(y,[])时的图像显示结果不同呢?请问该如何正确显示变换后的图像呢?着急解决,请各位xdjm帮帮忙吧! 回答: imshow(uint8(y))是按照256级灰度显示y得绝对数据。0表示0,255表示255,大于255得都是255。imshow(y,[]),将y得最小值看作0,最大值看作255。 所以两者不同。 小波变换得图像应该用第二种显示,把数据scale一下。 5.matlab中用imshow显示图像由于数组类型产生的错误 今天在用MATLAB写程序的时候遇到个问题,以前一直没有注意到,刚才检查的时候才发现。 我们先来看段不复杂的程序 %定义常量 size=256; block=8; I_w=zeros(size); %读入原始图像和水印图像并显示 I=imread('lena.bmp'); W=imread('watermark.bmp');

MATLAB基本使用方法

基本使用方法 一、简单数学运算 (一)计算器使用方法 a)直接输入法 0.5*pi*5^2 b)存储变量法 a=0.5*pi*5^2 注意: 1)空格不处理 2)遵守四则运算法则 3)多重括号,从里向外运算 4)小括号代表运算级别,中括号生成向量和数组,花括号生成单元数组(二)数学运算符

(三)标点符号的使用 >> a = [1,2,3;4,5,6;7,8,9] 二、常用命令和快捷键

三、数据类型 (一)整数 >>x = int8(50) >>class(x) >>y = 50 >>class(y) 注意: 1)MATLAB默认数据类型为双精度型,定义其它变量类型时需要指定类型 2)整型除法运算时,系统先以双精度进行运算,将结果转为整型 3)不同整型数据不能运算 4)运算结果超出上限或下限,结果取值上限或下限 >>x = int8(100) >>y = int8(90) >>z = x + y (二)浮点数 单精度和双精度浮点数 >>a = single(10.01) >>b = double(10.01) >>class(a) >>class(b) >>eps(‘single’) >>eps(‘double’) >>realmin(‘single’) >>realmax(‘single’) >>realmin(‘double’) >>realmax(‘double’)

(三)复数 >> a = 1 + 2i >> b = complex(1,2) >> c1 = int8([1;2;3;4]) >> c2 = int8([5;6;7;8]) >> c3 = complex(c1,c2) >> d1 = 1 + 0i >> d2 = complex(8,0) >> d3 = complex(9) >> isreal(d1) >> isreal(d2) >> isreal(d3) (四)逻辑变量 1:真; 0:假 >> a = [true, false, true, true, false] >> b1 = magic(3) >> b2 = b1 > 5 >> b3 = sparse(b2) >> d1 = islogical(b1) >> d2 = islogical(b2) >> d3 = islogical(b3) >> A = rand(5) >> B = A>0.5 >> A(B) = 0 >> A = magic(4) >> B = isprime(A) >> A(~B) = 0

相关文档
最新文档