MATLAB的使用方法

MATLAB的使用方法
MATLAB的使用方法

https://www.360docs.net/doc/9510471887.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),为以后画多条曲线的合成图作准备。调整参数后的系统误差如下图所

示(其他信号略)

4.单独的看各个信号还不能很好地反映输入与输出之间的关系,还需将三个信号合在一幅图中进行观

察,具体做法是:在各个示波器的属性中设置好输出数据到工作区的变量名(输出为output、输入为input、

误差为error),然后回到命令窗口(Command Window),键入以下命令便可看到三个信号合在一起的图

plot(output(:,1),output(:,2),error(:,1),error(:,2),input(:,1),input(: ,2))

其中,plot命令中的各参数

依次表示各条曲线的x轴

和y轴,output(:,1)表示

output变量第一列(1)中的

所有元素(:),如果想输出

的图带有格子,可键入

Grid on命令。由于输入与

输出的差别集中在前两拍,

因此还需调整仿真的停止

时间以达到更好的效果,

具体做法是:进入仿真窗

口,选择菜单Simulation->

Parameters,将参数Stop

time设置为5.0,再次进行

仿真、画图,最后得到的三

个信号合一的图如左。.

要想将所画的以图片的形式保存,有两种方法,一是用抓图软件将其抓下来,另一种方法是用以下一组命令

将其保存为 bmp文件ieo.bmp

[x,map]=capture

imwrite(x,map,'ieo.bmp')

至此,便完成了整个仿真过程。

-1、基本运算与函数在MATLAB下进行基本数学运算,只需将运算式直接打入提示号(>>)之後,并按入Enter键即可。例如:>>(5*2+1.3-0.8)*10/25 ans = 4.2000 MATLAB会将运算结果直接存入一变数ans,代表MATLAB运算後的答案(Answer),并显示其数值於萤幕上。(为简便起见,在下述各例中,我们不再印出MATLAB的提示号。)

=============================================== 小提

示: ">>"是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。rem(x,y):求x除以y的馀数gcd(x,y):整数x和y的最大公因数lcm(x,y):整数x和y的最小公倍数exp(x):自然指数pow2(x):2的指数log(x):以e为底的对数,即自然对数或log2(x):以2为底的对数log10(x):以10为底的对数

=============================================== 小整理:

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组成的向量,同样的方法可用於产生公差为1的等差数列:x = 7:16 x = 7 8 9 10 11 12 13 14 15 16 若不希望公差为1,则可将所需公差直接至於4与13之间:x = 7:3:16 % 公差为3的等差数列x = 7 10 13 16 事实上,我们可利用linspace来产生任意的等差数列:x = linspace(4, 10, 6) % 等差数列:首项为4,末项为10,项数为6 x = 4.0000 5.2000 6.4000 7.6000 8.8000 10.0000 若对MATLAB函数用法有疑问,可随时使用help来寻求线上支援(on-line help):help linspace LINSPACE Linearly spaced vector. LINSPACE(x1, x2) generates a row vector of 100 linearly equally spaced points between x1 and x2. LINSPACE(x1, x2, N) generates N points between x1 and x2. equally spaced points between x1 and x2. LINSPACE(x1, x2, N) generates N points between x1 and x2. See also LOGSPACE, :.

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

======================================================

Matlab入门教程--基本运算与函数(二)

将列向量转置(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 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: 函数的输出引数个数

===============================================

Matlab入门教程--流程控制

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,而不再呼叫此函数本身。发信人: alphazhao (子羽& 三笑), 信区: Modelling 标题: Matlab入门(3) 发信站: 武汉白云黄鹤站(Fri Dec 10 14:41:49 1999), 站内信件发信人: Mars (混沌·分形·周期三), 信区: MATH 标题: Matlab入门教程--流程控制发信站: 一网深情(Sun Nov 29 17:35:36 1998), 转信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,而不再呼叫此函数本身。

Matlab入门教程--环境设置

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,以加入新的目录於搜寻路径之中。 1.MATLAB在执行matlabrc.m时,同时也会在预设搜寻路径中寻找startup.m,若此档案存在,则执行其所含的命令。因此我们可将所有在MATLAB启动时必须执行的命令(包含更改搜寻路径的命令),放在此档案中。每次MATLAB遇到一个命令(例如test)时,其处置程序为: 1.将test视为使用者定义的变数。 2.若test

不是使用者定义的变数,将其视为永久常数。 3.若test不是永久常数,检查其是否为目前工作目录下的M档案。 4.若不是,则由搜寻路径寻找是否有test.m的档案。 5.若在搜寻路径中找不到,则MATLAB会发出哔哔声并印出错误讯息。以下介绍与MATLAB搜寻路径相关的各项命令。1-6、资料的储存与载入有些计算旷日废时,那麽我们通常希望能将计算所得的储存在档案中,以便将来可进行其他处理。MATLAB储存变数的基本命令是save,在不加任何选项(Options)时,save会将变数以二进制(Binary)的方式储存至副档名为mat的档案,如下述:save:将工作空间的所有变数储存到名为matlab.mat 的二进制档案。save filename:将工作空间的所有变数储存到名为filename.mat的二进制档案。save filename x y z:将变数x、y、z储存到名为filename.mat的二进制档案。以下为使用save命令的一个简例:who % 列出工作空间的变数Your variables are: B h j y ans i x z save test B y % 将变数B与y储存至test.mat dir % 列出现在目录中的档案 . 2plotxy.doc fact.m simulink.doc test.m ~$1basic.doc .. 3plotxyz.doc first.doc temp.doc test.mat 1basic.doc book.dot go.m template.doc testfile.dat delete test.mat % 删除test.mat 以二进制的方式储存变数,通常档案会比较小,而且在载入时速度较快,但是就无法用普通的文书软体(例如pe2或记事本)看到档案内容。若想看到档案内容,则必须加上-ascii选项,详见下述:save filename x -ascii:将变数x以八位数存到名为filename的ASCII档案。save filename x -ascii -double:将变数x以十六位数存到名为filename的ASCII档案。另一个选项是-tab,可将同一列相邻的数目以定位键(Tab)隔开。小提示:二进制和ASCII档案的比较在save命令使用-ascii选项後,会有下列现象:save命令就不会在档案名称後加上mat的副档名。因此以副档名mat 结尾的档案通常是MATLAB的二进位资料档。通常只储存一个变数。若在save命令列中加入多个变数,仍可执行,但所产生的档案则无法以简单的load命令载入。有关load命令的用法,详见下述。原有的变数名称消失。因此在将档案以load载入时,会取用档案名称为变数名称。对於复数,只能储存其实部,而虚部则会消失。对於相同的变数,ASCII档案通常比二进制档案大。由上表可知,若非有特殊需要,我们应该尽量以二进制方式储存资料。load命令可将档案载入以取得储存之变数:load filename:load会寻找名称为filename.mat的档案,并以二进制格式载入。若找不到filename.mat,则寻找名称为filename的档案,并以ASCII 格式载入。load filename -ascii:load会寻找名称为filename的档案,并以ASCII格式载入。若以ASCII格式载入,则变数名称即为档案名称(但不包含副档名)。若以二进制载入,则可保留原有的变数名称,如下例:clear all; % 清除工作空间中的变数x = 1:10; save testfile.dat x -ascii % 将x以ASCII格式存至名为testfile.dat的档案load testfile.dat % 载入testfile.dat who % 列出工作空间中的变数

Your variables are: testfile x 注意在上述过程中,由於是以ASCII格式储存与载入,所以产生了一个与档案名称相同的变数testfile,此变数的值和原变数x完全相同。

=============================================== 1-7、结束MATLAB 有三种方法可以结束MATLAB: 1.键入exit 2.键入quit 3.直接关闭MATLAB的命令视窗(Command window)

===============================================

Matlab入门教程--二维绘图

2.基本xy平面绘图命令MATLAB不但擅长於矩阵相关的数值运算,也适合用在各种科学目视表示(Scientific visualization)。本节将介绍MATLAB基本xy平面及xyz空间的各项绘图命令,包含一维曲线及二维曲面的绘制、列印及存档。plot是绘制一维曲线的基本函数,但在使用此函数之前,我们需先定义曲线上每一点的x及y座标。下例可画出一条正弦曲线:close all; x=linspace(0, 2*pi, 100); % 100个点的x座标y=sin(x); % 对应的y 座标plot(x,y);

==================================================== 小整理:MATLAB基本绘图函数plot: x轴和y轴均为线性刻度(Linear scale)loglog: x轴和y轴均为对数刻度(Logarithmic scale)semilogx: x轴为对数刻度,y轴为线性刻度semilogy: x轴为线性刻度,y轴为对数刻度

==================================================== 若要画出多条曲线,只需将座标对依次放入plot函数即可:plot(x, sin(x), x, cos(x)); 若要改变颜色,在座标对後面加上相关字串即可:plot(x, sin(x), 'c', x, cos(x), 'g'); 若要同时改变颜色及图线型态(Line style),也是在座标对後面加上相关字串即可:plot(x, sin(x), 'co', x, cos(x), 'g*');

==================================================== 小整理:plot绘图函数的叁数字元颜色字元图线型态 y 黄色 . 点 k 黑色

o 圆 w 白色x x b 蓝色+ + g 绿色* * r 红色- 实线 c 亮青色: 点

线 m 锰紫色-. 点虚线-- 虚线

==================================================== 图形完成後,我们可用axis([xmin,xmax,ymin,ymax])函数来调整图轴的范围:axis([0, 6, -1.2, 1.2]); 此外,MATLAB也可对图形加上各种注解与处理:xlabel('Input Value'); % x 轴注解ylabel('Function Value'); % y轴注解title('Two Trigonometric Functions'); % 图形标题legend('y = sin(x)','y = cos(x)'); % 图形注解grid on; % 显示格线我们可用subplot来同时画出数个小图形於同一个视窗之中:subplot(2,2,1); plot(x, sin(x)); subplot(2,2,2); plot(x, cos(x)); subplot(2,2,3); plot(x, sinh(x)); subplot(2,2,4); plot(x, cosh(x)); MATLAB还有其他各种二维绘图函数,以适合不同的应用,详见下表。

==================================================== 小整理:其他各种二维绘图函数 bar 长条图 errorbar 图形加上误差范围 fplot 较精确的函数图形 polar 极座标图 hist 累计图 rose 极座标累计图 stairs 阶梯图 stem 针状图 fill 实心图 feather 羽毛图 compass 罗盘图 quiver 向量场图

==================================================== 以下我们针对每个函数举例。当资料点数量不多时,长条图是很适合的表示方式:close all; % 关闭所有的图形视窗x=1:10; y=rand(size(x)); bar(x,y); 如果已知资料的误差量,就可用errorbar来表示。下例以单位标准差来做资料的误差量:x = linspace(0,2*pi,30); y = sin(x); e = std(y)*ones(size(x)); errorbar(x,y,e) 对於变化剧烈的函数,可用fplot来进行较精确的绘图,会对剧烈变化处进行较密集的取样,如下例:fplot('sin(1/x)', [0.02 0.2]); % [0.02 0.2]是绘图范围若要产生极座标图形,可用polar:theta=linspace(0, 2*pi);

r=cos(4*theta); polar(theta, r); 对於大量的资料,我们可用hist来显示资料的分情况和统计特性。下面几个命令可用来验证randn产生的高斯乱数分:x=randn(5000, 1); % 产生5000个?=0,?=1 的高斯乱数hist(x,20); % 20代表长条的个数rose和hist很接近,只不过是将资料大小视为角度,资料个数视为距离,? ⒂眉 昊嬷票硎荆?

x=randn(1000, 1); rose(x); stairs可画出阶梯图:x=linspace(0,10,50);

y=sin(x).*exp(-x/3); stairs(x,y); stems可产生针状图,常被用来绘制数位讯号:

x=linspace(0,10,50); y=sin(x).*exp(-x/3); stem(x,y);

stairs将资料点视为多边行顶点,并将此多边行涂上颜色:x=linspace(0,10,50); y=sin(x).*exp(-x/3); fill(x,y,'b'); % 'b'为蓝色feather将每一个资料点视复数,并以箭号画出:theta=linspace(0, 2*pi, 20); z = cos(theta)+i*sin(theta); feather(z); compass和feather很接近,只是每个箭号的起点都在圆点:theta=linspace(0, 2*pi, 20); z = cos(theta)+i*sin(theta); compass(z); 3.基本XYZ立体绘图命令在科学目视表示(Scientific visualization)中,三度空间的立体图是一个非常重要的技巧。本章将介绍MATLAB基本XYZ三度空间的各项绘图命令。mesh和plot是三度空间立体绘图的基本命令,mesh可画出立体网状图,plot则可画出立体曲面图,两者产生的图形都会依高度而有不同颜色。下列命令可画出由函数形成的立体网状图: x=linspace(-2, 2, 25); % 在x轴上取25点y=linspace(-2, 2, 25); % 在y轴上取25点[xx,yy]=meshgrid(x, y); % xx和yy都是21x21的矩阵zz=xx.*exp(-xx.^2-yy.^2); % 计算函数值,zz也是21x21的矩阵mesh(xx, yy, zz); % 画出立体网状图surf和mesh的用法类似:x=linspace(-2, 2, 25); % 在x轴上取25点y=linspace(-2, 2, 25); % 在y轴上取25点[xx,yy]=meshgrid(x, y); % xx和yy 都是21x21的矩阵zz=xx.*exp(-xx.^2-yy.^2); % 计算函数值,zz也是21x21的矩阵surf(xx, yy, zz); % 画出立体曲面图为了方便测试立体绘图,MATLAB提供了一个peaks 函数,可产生一个凹凸有致的曲面,包含了三个局部极大点及三个局部极小点,其方程式为:要画出此函数的最快方法即是直接键入peaks:peaks z = 3*(1-x).^2.*exp(-(x.^2) - (y+1).^2) ... - 10*(x/5 - x.^3 - y.^5).*exp(-x.^2-y.^2) ... - 1/3*exp(-(x+1).^2 - y.^2) 我们亦可对peaks函数取点,再以各种不同方法进行绘图。meshz可将曲面加上围裙:[x,y,z]=peaks; meshz(x,y,z); axis([-inf inf -inf inf -inf inf]); waterfall可在x方向或y方向产生水流效果:[x,y,z]=peaks; waterfall(x,y,z); axis([-inf inf -inf inf -inf inf]); 下列命令产生在y方向的水流效果:[x,y,z]=peaks; waterfall(x',y',z'); axis([-inf inf -inf inf -inf inf]); meshc同时画出网状图与等高线:[x,y,z]=peaks; meshc(x,y,z); axis([-inf inf -inf inf -inf inf]); surfc同时画出曲面图与等高线:[x,y,z]=peaks; surfc(x,y,z); axis([-inf inf -inf inf -inf inf]); contour3画出曲面在三度空间中的等高线:contour3(peaks, 20); axis([-inf inf -inf inf -inf inf]); contour画出曲面等高线在XY平面的投影:contour(peaks, 20); plot3可画出三度空间中的曲线:t=linspace(0,20*pi, 501); plot3(t.*sin(t), t.*cos(t), t); 亦可同时画出两条三度空间中的曲线:t=linspace(0, 10*pi, 501); plot3(t.*sin(t), t.*cos(t), t, t.*sin(t), t.*cos(t), -t);

https://www.360docs.net/doc/9510471887.html,/Article/resource/soft/matlab/200702/27763.shtml生物导航网

matlab函数用法

A a abs 绝对值、模、字符的ASCII码值 acos 反余弦 acosh 反双曲余弦 acot 反余切 acoth 反双曲余切 acsc 反余割 acsch 反双曲余割 align 启动图形对象几何位置排列工具 all 所有元素非零为真 angle 相角 ans 表达式计算结果的缺省变量名 any 所有元素非全零为真 area 面域图 argnames 函数M文件宗量名 asec 反正割 asech 反双曲正割 asin 反正弦 asinh 反双曲正弦 assignin 向变量赋值 atan 反正切 atan2 四象限反正切 atanh 反双曲正切 autumn 红黄调秋色图阵 axes 创建轴对象的低层指令 axis 控制轴刻度和风格的高层指令 B b bar 二维直方图 bar3 三维直方图 bar3h 三维水平直方图 barh 二维水平直方图 base2dec X进制转换为十进制 bin2dec 二进制转换为十进制 blanks 创建空格串 bone 蓝色调黑白色图阵 box 框状坐标轴 break while 或for 环中断指令 brighten 亮度控制 C c

capture (3版以前)捕获当前图形 cart2pol 直角坐标变为极或柱坐标 cart2sph 直角坐标变为球坐标 cat 串接成高维数组 caxis 色标尺刻度 cd 指定当前目录 cdedit 启动用户菜单、控件回调函数设计工具cdf2rdf 复数特征值对角阵转为实数块对角阵ceil 向正无穷取整 cell 创建元胞数组 cell2struct 元胞数组转换为构架数组 celldisp 显示元胞数组内容 cellplot 元胞数组内部结构图示 char 把数值、符号、内联类转换为字符对象chi2cdf 分布累计概率函数 chi2inv 分布逆累计概率函数 chi2pdf 分布概率密度函数 chi2rnd 分布随机数发生器 chol Cholesky分解 clabel 等位线标识 cla 清除当前轴 class 获知对象类别或创建对象 clc 清除指令窗 clear 清除内存变量和函数 clf 清除图对象 clock 时钟 colorcube 三浓淡多彩交叉色图矩阵 colordef 设置色彩缺省值 colormap 色图 colspace 列空间的基 close 关闭指定窗口 colperm 列排序置换向量 comet 彗星状轨迹图 comet3 三维彗星轨迹图 compass 射线图 compose 求复合函数 cond (逆)条件数 condeig 计算特征值、特征向量同时给出条件数condest 范-1条件数估计 conj 复数共轭 contour 等位线 contourf 填色等位线 contour3 三维等位线

matlab基本用法

目录: 一、说明 二、数据类型及基本输入输出 三、流程控制 四、循环 五、数组、数组运算和矩阵运算 六、M脚本文件和M函数文件、函数句柄 七、文件 八、数据和函数的可视化 一、说明 matlab作为数学软件有其强大的图形用户界面操作、数据和函数的可视化和数值计算功能,且自带很多现有的函数和工具包。而本文只涉及一些比较系统的基本操作,在最后附带介绍一些基本的数据和函数的可视化命令。建议要用的时候再利用matlab自带的帮助文档来搜索有用的函数和工具包。matlab的函数和命令都是比较人性化的,比如想要搜索读取fits文件的函数,搜索fits就能够搜到fitsread函数;需要将读出的fits数据重新做图,搜索image就可以找到imagesc函数。从书和别人的文档都只能学到有限的比较系统的操作,看帮助文档能发现更多的东西并整理出自己的使用方法。 二、数据类型及基本输入输出 1、数据类型,声明及赋初值 matlab中存储的数据类型(class)有以下几种: 而实际上matlab不需要对变量做声明,当它发现一个新的变量名时,将默认将其为双精度浮点类型(double)并分配内存空间。(这比C和 Fortran方便了许多,但在完成大运算量的程序时就显得浪费存储空间了) 当需要把变量a从double转为其他类型的时候,比如要转为int16型,可以使用以下命令:a=int16(a) 当需要创建一个字符型变量x并对其赋初值时,用以下格式:x='字符串'; 注意: (1)在命令后加“;”表示不在command window中显示结果,而对上例来说如果不加“;”则会显示所赋字符串内容。 (2)所有的命令必须在英文输入状态下,如果使用中文输入状态下全角的“;”,将被处理为非法字符。其中logical,cell和structure为逻辑,元胞和构架数组类型,将在后面的数组部分提到;function handle为函数句柄类型,将在后面的“M脚本文件和M函数文件、函数句柄”部分提到;java类供JAVA API应用程序接口使用,本文不进行说明。最后说明一下,matlab也支持复数操作,赋值的时候直接输入即可,比如:a=1+2i; 2、基本输入输出 输入:v=input('message') %将用户输入的内容赋给变量v v=input('message','s') %将用户输入的内容作为字符串赋给变量v keyboard %用户可以从键盘输入任意多个指令 v=yesinput('prompt',default,possib) %prompt为文字提示,default为缺省设置“值”,possib为设置值的范围。

MATLAB文件各种操作方法(全)

1.1 文件的打开和关闭 1.1.1 文件的打开 fopen ('filename', 'mode') mode格式有: ‘r’:只读方式打开文件(默认的方式),该文件必须已存在。 ‘r+’:读写方式打开文件,打开后先读后写。该文件必须已存在。 ‘w’:打开后写入数据。该文件已存在则更新;不存在则创建。 ‘w+’:读写方式打开文件。先读后写。该文件已存在则更新;不存在则创建。 ‘a’:在打开的文件末端添加数据。文件不存在则创建。 ‘a+’:打开文件后,先读入数据再添加数据。文件不存在则创建。 如果rt表示该文件以文本方式打开,如果添加的是“b”,则以二进制格式打开,这也是fopen函数默认的打开方式。 Fopen函数两个返回值: 1、一个是返回一个文件标识(file Identifier),它会作为参数被传入其他对文件进 行读写操作的命令,通常是一个非负的整数,可用此标识来对此文件进行各种处理。 (如果返回的文件标识是–1,则代表fopen无法打开文件,其原因可能是文件不 存在,或是用户无法打开此文件权限); 2、另一个返回值就是message,用于返回无法打开文件的原因; 例:1-1 [f,message]=fopen('fileexam1', 'r') if f==-1 disp(message); %显示错误信息 end (若文件fileexam1不存在,则显示如下信息。 Cannot open file.existence?permissions?memory?) 例:1-2 [f,message]=fopen('fileexam2', 'r'); if f==-1 disp (message); %显示错误信息 else disp(f); end 若文件fileexam2存在,则返回f值。 1.1.2文件的关闭 Fclose(f) F为打开文件的标志,若若fclose函数返回值为0,则表示成功关闭f标志的文件;若返回值为–1,则表示无法成功关闭该文件。(打开和关闭文件比较耗时,最好不要在循环体内使用文件) 若要一次关闭打开的所有文件,可以使用下面的命令:fclose all

实验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中plot的用法

MATLAB中plot的用法(2011-05-17 22:10:50)转载▼ 标签:杂谈 第五讲计算结果的可视化 本节介绍MATLAB 的两种基本绘图功能:二维平面图形和三维立体图形。 5.1 二维平面图形 5.1.1 基本图形函数 plot 是绘制二维图形的最基本函数,它是针对向量或矩阵的列来绘制曲线的。也就是说,使用plot 函数之前,必须首先定义好曲线上每一点的x 及y 坐标,常用格式为:(1)plot(x) 当x 为一向量时,以x 元素的值为纵坐标,x 的序号为横坐标值绘制 曲线。当x 为一实矩阵时,则以其序号为横坐标,按列绘制每列元素值相对于其序号的曲线, 当x 为m×n 矩阵时,就由n 条曲线。 (2)plot(x,y) 以x 元素为横坐标值,y 元素为纵坐标值绘制曲线。 (3)plot(x,y1,x,y2,…) 以公共的x 元素为横坐标值,以y1,y2,…元素为纵坐标值绘 制多条曲线。 例5.1.1 画出一条正弦曲线和一条余弦曲线。 >> x=0:pi/10:2*pi; >> y1=sin(x); >> y2=cos(x); >>plot(x,y1,x,y2) 图5.1.1 函数plot 绘制的正弦曲线 在绘制曲线图形时,常常采用多种颜色或线型来区分不同的数据组,MATLAB 软件专 门提供了这方面的参数选项(见表5.1.1),我们只要在每个坐标后加上相关字符串,就可实 现它们的功能。 - 2 - 表5.1.1 绘图参数表 色彩字符颜色线型字符线型格式标记符号数据点形式标记符号数据点形式 y 黄- 实线. 点<小于号 m 紫:点线o 圆s 正方形 c 青-. 点划线x 叉号 d 菱形 r 红- - 虚线+ 加号h 六角星 g 绿* 星号p 五角星 b 蓝v 向下三角形 w 白^ 向上三角形 k 黑>大于号 例如,在上例中输入 >>plot(x,y1,'r+-',x,y2,'k*:') 则得图5.1.2 图5.1.2 使用不同标记的plot 函数绘制的正弦曲线 5.1.2 图形修饰 MATLAB 软件为用户提供了一些特殊的图形函数,用于修饰已经绘制好的图形。 表5.1.2 图形修饰函数表

2matlab基本使用方法

(12+2*(7-4))/3^2 ans = 2 format short;pi ans = 3.1416 format long;pi ans = 3.141592653589793 format rat;pi ans = 355/113 format long;vpa(pi,50) ans = 3.141592653589793115997963468544185161590576171875 who Your variables are: ans a=randn(4) a = -0.1241 0.6715 0.4889 0.2939 1.4897 -1.2075 1.0347 -0.7873 1.4090 0.7172 0.7269 0.8884 1.4172 1.6302 -0.3034 -1.1471 whos Name Size Bytes Class Attributes a 4x4 128 double ans 1x1 8 double who Your variables are: a ans what M-files in the current directory E:\Matlab2010\智能仿生算法\遗传算法TSP_SuiJiSuanFa ZhuanJiaXiTongP167 fun_SuiJiSuanFa TSPrun_SuiJiSuanFa f fun_SuiJiSuanFa0

ZhuanJiaXiTongP162 f1 fun_SuiJiSuanFa2 MAT-files in the current directory E:\Matlab2010\智能仿生算法\遗传算法 my27city dir . ZhuanJiaXiTongP162.asv f.m my27city.mat .. ZhuanJiaXiTongP162.m f1.m temp 3d.asv ZhuanJiaXiTongP167.asv fun_SuiJiSuanFa.asv temp.prj 3d.m ZhuanJiaXiTongP167.m fun_SuiJiSuanFa.m zia03836 New Folder bou2_4l.shp fun_SuiJiSuanFa0.asv TSP_SuiJiSuanFa.m da fun_SuiJiSuanFa0.m TSPrun_SuiJiSuanFa.m da.prj fun_SuiJiSuanFa2.m type 3d clf; x=-3:0.1:3; y=-3:0.1:3; [X Y]=meshgrid(x,y); Z=f(X,Y)+4; mesh(X,Y,Z); hold on; plot3(-0.7,-1,f(-0.7,-1)+4,'g*'); contour(X,Y,Z,'r'); which rand built-in (D:\Program Files\MATLAB\R2010a\toolbox\matlab\randfun\rand) which 3d.m E:\Matlab2010\智能仿生算法\遗传算法\3d.m help exist EXIST Check if variables or functions are defined. EXIST('A') returns: 0 if A does not exist 1 if A is a variable in the workspace 2 if A is an M-file on MATLAB's search path. It also returns 2 when A is the full pathname to a file or when A is the name of an ordinary file on MATLAB's search path 3 if A is a MEX-file on MATLAB's search path 4 if A is a MDL-file on MATLAB's search path 5 if A is a built-in MATLAB function 6 if A is a P-file on MATLAB's search path 7 if A is a directory 8 if A is a Java class

matlab软件的使用方法

MATLAB 软件使用简介 默认分类2007-03-15 21:26:49 阅读4106 评论8 字号:大中小订阅 MATLAB 软件使用简介 MATLAB 是一个功能强大的常用数学软件, 它不但可以解决数学中的数值计算问题, 还可以解决符号演算问题, 并且能够方便地绘出各种函数图形。MATLAB自1984年由美国的MathWorks公司推向市场以来,历经十几年的发展和竞争,现已成为国际最优秀的科技应用软件之一。这里主要以适用于Windows操作系统的MATLAB5.3版本向读者介绍MATLAB 的使用命令和内容。 一、MATLAB 的进入/退出 MA TLAB 的安装成功后, 系统会在Windows【开始】菜单的【程序】子菜单中加入启动MATLAB命令的图标, 用鼠标单击它就可以启动MATLAB系统,见图2.1。 图2.1 启动MA TLAB 启动MATLAB后, 屏幕上出现MATLAB命令窗口: 图2.2 MA TLAB命令窗口 图2.2的空白区域是MATLAB 的工作区(命令输入区), 在此可输入和执行命令。 退出MATLAB系统像关闭Word文件一样, 只要用鼠标点击MATLAB系统集成界面右上角的关闭按钮即可。 二、MATLAB 操作的注意事项 l 在MA TLAB工作区输入MATLAB命令后, 还须按下Enter键, MA TLAB才能执行你输入的MA TLAB命令, 否则MA TLAB不执行你的命令。 l MATLAB 是区分字母大小写的。 l 一般,每输入一个命令并按下Enter键, 计算机就会显示此次输入的执行结果。(以下用↙表示回车)。如果用户不想计算机显示此次输入的结果,只要在所输入命令的后面再加上一个分号“;”即可以达到目的。如: x= 2 + 3 ↙x=5 x = 2 + 3 ; ↙不显示结果5 l 在MA TLAB工作区如果一个表达式一行写不下,可以用在此行结尾处键入三个英文句号的方法达到换行的目的。如: q=5^6+sin(pi)+exp(3)+(1+2+3+4+5)/sin(x)… -5x+1/2-567/(x+y) l MATLAB 可以输入字母、汉字,但是标点符号必须在英文状态下书写。 l MATLAB 中不需要专门定义变量的类型,系统可以自动根据表达式的值或输入的值

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用法大全

Matlab用法大全 1求取系统单位阶跃响应:step() step()函数的用法 y=step(num,den,t):其中num和den分别为系统传递函数描述中的分子和分母多项式系数,t为选定的仿真时间向量,一般可以由t=0:step:end等步长地产生出来。该函数返回值y为系统在仿真时刻各个输出所组成的矩阵 [y,x,t]=step(num,den):此时时间向量t由系统模型的特性自动生成, 状态变量x返回为空矩阵。 [y,x,t]=step(A,B,C,D,iu):其中A,B,C,D为系统的状态空间描述矩阵,iu用来指明输入变量的序号。x为系统返回的状态轨迹。 2h = tf([1 1],[1 2 5]); [num,den] = tfdata(h,'v') 3a(:,j)表示a的j列的所有行元素 a(i,:)表示i行的所有列元素 4a=[]创建空矩阵 5 eval ()函数的功能就是将括号内的字符串视为语句并运行 例如:eval ('y1=sin(2)')就是相当于在matlab命令窗口输入了y1=sin(2)这条命令。 多在循环中使用,可以对多个名字有规则的变量或文件进行操作, 例一: for x=1:5 eval (['y',num2str(x),'=',num2str(x^2),';']) end 以上语句等价于执行以下5句: ynum2str(1)=num2str(1^2); ynum2str(2)=num2str(2^2); ynum2str(3)=num2str(3^2); ynum2str(4)=num2str(4^2); ynum2str(5)=num2str(5^2); 例二: subplot(711);plot(t,y);title('原始信号’); for i=1:6 subplot(7,1,i+1); plot(t,imf(i,:)); eval (['title(''IMF',int2str(i),''');']); end ------------------------- 以上6行程序实际上是执行以下7条命令 subplot(711);plot(t,y);title('原始信号'); subplot(7,1,2);plot(t,imf(1,:));title('IMF1'); subplot(7,1,3);plot(t,imf(2,:));title('IMF2'); subplot(7,1,4);plot(t,imf(3,:));title('IMF3'); subplot(7,1,5);plot(t,imf(4,:));title('IMF4');

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中solve函数用法详解

Matlab中solve函数主要是用来求解线性方程组的解析解或者精确解。对于得出的结果是符号变量,可以通过vpa()得出任意位数的数值解! solve函数的语法定义主要有以下四种: solve(eq) solve(eq, var) solve(eq1, eq2, …, eqn) g = solve(eq1, eq2, …, eqn, var1, var2, …, varn) eq代表方程,var代表的是变量。 例1: syms a b c x; solve(‘a*x^2 + b*x + c’) 当没有指定变量的时候matlab默认求解的是关于x的一元二次方程的解,求解的结果为: ans = -(b + (b^2 – 4*a*c)^(1/2))/(2*a) -(b – (b^2 – 4*a*c)^(1/2))/(2*a) 当指定变量为b的时候: syms a b c x; solve(‘a*x^2 + b*x + c’,'b’) 求解的结果为: ans = -(a*x^2 + c)/x 从上面的例子很容易理解语法1,2。 例2:对于方程组的情况 syms x; S = solve(‘x + y = 1′,’x –11*y = 5′); S = [S.x S.y] 求解的结果为: S = [ 4/3, -1/3]

例3: syms a u v; A = solve(‘a*u^2 + v^2′, ‘u –v = 1′, ‘a^2 –5*a + 6′) 的求解结果为 A = a: [4x1 sym] u: [4x1 sym] v: [4x1 sym] 对于查看具体的数值可以通过 Aa = A.a Au = A.u Av = A.v 命令来查看。 PS:对于solve求解的方程,默认的为eq=0,eq1=0,eq2=0….eqn=0;

MATLAB使用方法1

A a abs绝对值、模、字符的ASCII码值acos反余弦 acosh反双曲余弦 acot反余切 acoth反双曲余切 acsc反余割 acsch反双曲余割 align启动图形对象几何位置排列工具all所有元素非零为真 angle相角 ans表达式计算结果的缺省变量名any所有元素非全零为真 area面域图 argnames函数M文件宗量名 asec反正割 asech反双曲正割 asin反正弦 asinh反双曲正弦 assignin向变量赋值 atan反正切 atan2四象限反正切 atanh反双曲正切 autumn红黄调秋色图阵 axes创建轴对象的低层指令 axis控制轴刻度和风格的高层指令 B b bar二维直方图 bar3三维直方图 bar3h三维水平直方图 barh二维水平直方图 base2dec X进制转换为十进制 bin2dec二进制转换为十进制blanks创建空格串 bone蓝色调黑白色图阵 box框状坐标轴 break while或for环中断指令brighten亮度控制C c capture(3版以前)捕获当前图形 cart2pol直角坐标变为极或柱坐标 cart2sph直角坐标变为球坐标 cat串接成高维数组 caxis色标尺刻度 cd指定当前目录 cdedit启动用户菜单、控件回调函数设计工具 cdf2rdf复数特征值对角阵转为实数块对角阵 ceil向正无穷取整 cell创建元胞数组 cell2struct元胞数组转换为构架数组celldisp显示元胞数组内容 cellplot元胞数组内部结构图示 char把数值、符号、内联类转换为字符对象 chi2cdf分布累计概率函数 chi2inv分布逆累计概率函数 chi2pdf分布概率密度函数 chi2rnd分布随机数发生器 chol Cholesky分解 clabel等位线标识 cla清除当前轴 class获知对象类别或创建对象 clc清除指令窗 clear清除内存变量和函数 clf清除图对象 clock时钟 colorcube三浓淡多彩交叉色图矩阵colordef设置色彩缺省值 colormap色图 colspace列空间的基 close关闭指定窗口 colperm列排序置换向量 comet彗星状轨迹图 comet3三维彗星轨迹图 compass射线图

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基础函数用法总结解读

1、Size 函数用法 例如:1,2,3;4,5,6]是一个2*3的矩阵,则: d = size(X); %返回矩阵的行数和列数,保存在d中 [m,n] = size(X)%返回矩阵的行数和列数,分别保存在m和n中 m = size(X,dim);%返回矩阵的行数或列数,dim=1返回行数,dim=2返回列数 2、Corrcoef 函数用法 corrcoef(x,y)表示序列x和序列y的相关系数,得到的结果是一个2*2矩阵,其中对角线上的元素分别表示x和y的自相关,非对角线上的元素分别表示x 与y的相关系数和y与x的相关系数,两个是相等的 3、sort函数用法 sort(X) 功能:返回对向量X中的元素按列升序排列的新向量。 [Y, I] = sort(A, dim, mode) 功能:对矩阵A的各列或各行重新排序,I记录Y中的元素在排序前A中位置,其中dim指明读A的列还是行进行排序。若dim=1,则按列排序;若dim=2,则按行排序。mode为排序的方式,取值'ascend'为升序,'descend'为降序 4、Legend 函数用法 legend(string1,string2,string3,┈) 分别将字符串1、字符串2、字符串3……标注到图中,每个字符串对应的图标为画图时的图标。 例如: plot(x,sin(x),?.b?,x,cos(x),?+r?) legend(…sin?,?cos?) //这样就可以把”.”标识为”sin”,把”+”标识为“cos” 5、find 函数用法 找到非零元素的索引和值 语法: 1. ind = find(X) 2. ind = find(X, k) 3. ind = find(X, k, 'first') 4. ind = find(X, k, 'last') 5. [row,col] = find(X, ...) 6. [row,col,v] = find(X, ...) 说明: 1. ind = find(X)

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部分函数使用方法

读取图像:用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 显示图像:用imshow显示图像 imshow(f, G) 其中f是图像矩阵,G是像素的灰度级,G可以省略。比如 >> imshow(f, [100 200]) 图像上所有小于等于100的数值都会显示成黑色,所有大于等于200的数值都会显示成白色。pixval命令可以用来查看图像上光标所指位置的像素值。 pixval 例如 >> f = imread('rose_512.tif'); >> whos f >> imshow(f) 如果要同时显示两幅图像,可以用figure命令,比如 >> figure, imshow(g) 用逗号可以分割一行中的多个命令。imshow的第二个参数用一个空的中括号: >> imshow(h, []) 可以使动态范围比较窄的图像显示更清楚。 写图像。用imwrite写图像 imwrite(f, 'filename') 文件名必须包括指明格式的扩展名。也可以增加第三个参数,显式指明文件的格式。比如

>> imwrite(f, 'patient10_run1.tif', 'tif') 也可以写成 >> imwrite(f, 'patient10_run1.tif') 还可以有其他参数,比如jepg图像还有质量参数: >> imwrite(f, 'filename.jpg', 'quality', q) q是0到100之间的一个整数。对比不同质量的图像效果。用imfinfo命令可以查看一个图像的格式信息,比如 >> imfinfo bubbles25.jpg 可以把图像信息保存到变量中 >> K = imfinfo('bubbles25.jpg'); >> image_bytes = K.Width * K.Height * K.BitDepth / 8; >> compressed_btyes = K.FileSize; >> compression_ratio = image_bytes / compressed_bytes 数据类型。MA TLAB的数据类型包括: double 双精度浮点 uint8 无符号8位整数 uint16 无符号16位整数 uint32 无符号32位整数 int8 有符号8位整数 int16 有符号16位整数 int32 有符号32位整数 single 单精度 char 字符 logical 逻辑型(二值) 数据类型转换 B = data_class_name(A) 比如 >> C = [1.4 1.5] >> D = uint8(C) 图像类型分为: Intensity image 灰度图 Binary image 二值图 Indexed image 索引图 RGB image 彩色图 在灰度图中每个像素可以是整型、浮点型或者逻辑型。图像类型的像素类型可以转换

MATLAB的使用方法

https://www.360docs.net/doc/9510471887.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主要函数使用方法

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');

相关文档
最新文档