MATLAB学习笔记整理Word文档格式.docx
《MATLAB学习笔记整理Word文档格式.docx》由会员分享,可在线阅读,更多相关《MATLAB学习笔记整理Word文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
16、二维数组为例:
arr[1,:
]取数组的子集;
arr[1,2]取具体的元素;
17、format包括两方面的内容,一方面是打印内容的文本的提示;
另一方面是打印的格式。
18、fprintf函数有一个重大的局限性,只能显示复数的实部。
。
当我们的计算结果是复数时,这个局限性将会产生错误。
在这种情况下,好用disp显示数据。
19、如果数据需要在matlab和其他程序之间交换使用,那么以ASCII格式存储数据。
如果只在matlab中使用那么,应以mat文件的形式存储数据。
20、以“dat”的扩展名保存ASCII数据文件,以区别于以“mat”为扩展名的mat文件。
21、filename代表你要保存变量的那个文件,var1,var2等是要保存的变量。
在默认情况下,这个这个文件的扩展名为‘mat’,我们称之为MAT文件。
如果在filename后面无变量,则工作区的所有内容将会被保存。
22、MATLAB在数组运算中提供了两种不同类型的运算,一种是数组运算(arrayoperations),一种是矩阵运算(matrix).数组运算是一种用于元素对元素的运算..当一个数组和一个标量进行运算时,标量将会和数组中的每一元素进行运算.相对地,矩阵运算则遵守线性代数的一般规则
23、MATLAB用一个特殊的符号来区分矩阵运算和数组运算。
在需要区分两者不同的时侯,把点置于符号前来指示这是一个数组运算(例如,.*)。
数组运算符.*,.^和./
24、[maxvalindex]=max([1-56-3])将会产生结果maxval=6,和index=3.
25、一个重要的选项是-dtiff.这个选项指定输出图片的格式是标签影像档案格式(TIFF)。
26、下面这个命令将会创建一个TIFF格式的当前图象的图片,并保存在一个叫my_image.tif的文件中print–dtiffmy_image.tif。
你也可以选择图象窗口中的“file/export”选项来创建tiff图片。
27、我们可以用legend来制作图例。
它的基本的形式如下:
legend('
string1'
string2'
...,pos)其中string1,string2等等是与轨迹标签名,而pos是一个整数,用来指定图例的位置。
用legendoff命令将能去除多余的图例。
28、打印数据既可以用对数尺度,也可以用线性尺度:
1.plot函数的x,y均用线性尺度
2.semilog函数x轴用对数尺度,y轴将用线性尺度
3.semiloge函数x轴用线性尺度,y轴用对数尺度
4.loglog函数两坐标轴将会都用对数尺度。
29、在MATLAB中有三种类型的错误:
1.语法错误:
缺括号等
2.运行错误:
当一个非法的数学运算出现在程序的过程(例如,除以0),将会出现运行时错误。
这些错误将会使程序返回Inf或NaN
3.逻辑错误:
指编译和运行都能通过,而产生了错误的结果。
30、养成好的编程习惯:
1.尽可能的使用有意义的变量名,一眼就可以看懂,像day,month,year.
2.给每一个程序创建一个数据字典,以提高程序的可维护性.
3.变量名一律用小写字母,这样可以不会因大小写不同而造成变量混淆。
4.在所有的MATLAB赋值语句的后面加上一个分号,用来禁止赋值的重复.在程序调试期间,如果你检验某个语句的值,可去掉语句后的分号.
5.如果要在MATLAB和其他程序之间交换数据,那么就要以ASCII格式存储数据.如果数据只应用在此MATLAB中那么,应以matfile格式存储数据.
6.以”dat”为扩展名保存ASCII数据以区分MAT文件,MAT文件的扩展名为mat.
7.用适当的括号使你的表达式清晰,易理解.
8.当你读取和写入数据时,使用适当的单位
31、常见的数组与矩阵的运算:
运算
MATLAB形式
注释
数组加法
A+B
数组加法和矩阵加法相同
数组减法
AB
数组减法和矩阵减法相同
数组乘法
A.*B
A和B的元素逐个对应相乘.两数组之间必须有相同的形,或其中一个是标量.
矩阵乘法
A*B
A和B的矩阵乘法.A的列数必须和B的行数相同.
数组右除法
A./B
A和B的元素逐个对应相除:
A(i,j)/B(i,j)两数组之间必须有相同的形,或其中一个是标量.
数组左除法
A.\B
B(i,j)/A(i,j)两数组之间必须有相同的形,或其中一个是标量.
矩阵右除法
A/B
矩阵除法,等价于A*inv(B),inv(B)是B的逆阵
矩阵左除法
A\B
矩阵除法,等价于inv(B)*A,inv(A)是A的逆阵
数组指数运算
A.^B
AB中的元素逐个进行如下运算A(i,j)^B(i,j),A(i,j)/B(i,j)两数组之间必须有相同的形,或其中一个是标量.
32、有两大类控制顺序结构:
选择结构,用选择执行特定的语句;
循环结构,用于重复执行特定部分的代码。
33、程序设计的基本步骤如下:
1.清晰地陈述出你要解决的问题。
2.确定程序所需地输入量和程序所产生的输出量。
3.为你的程序设计算法(伪代码)
4.将算法转化为MATLAB语句
5.调试MATLAB程序
34、有两种形式的运算符可以在MATLAB中关系得到true/false:
关系运算符和逻辑运算符。
跟C语言一样,MATLAB没有布尔型和逻辑数据类型。
MATLAB把0值作为结果false,把所有的非0值作为结果ture。
35、关系运算符也可用于标量与数组的比较。
关系运算符也可比较两个数组,只要两个数组具有相同的大小。
关系运算符也比较两个相同长度的字符串
36、符号==是一个比较运算符,返回一个逻辑数,而符号=是将等号右边的表达式的值赋给左边的变量
37、如果它为0,则其为false。
所以~5的结果为0,~0的结果为1。
38、标量和数组之间也可进行逻辑运算。
两数组之间也可进行逻辑运算,只要它们具有相同的大小。
39、逻辑运算在所有的数学运算和关系运算之后进行。
数学运算符>
关系运算符>
逻辑运算符
40、表达式中的运算顺序如下:
1.所有的数学运算按照前面描述的顺序的进行。
2.从左向右依次进行关系运算
3.执行所有~运算
4.从左向右依次进行&
5.从左向右依次进行|运算和数学运算一样,括号能够改变括号的默认顺序。
41、选择结构在MATLAB中有三种具体的形式:
if结构,switch结构和try/catch结构。
42、对于有许多选项的选择结构来说,好在一个if结构中使用多个elseif语句,尽量不用if的嵌套结构。
43、注意只有带有字符参数的函数才能当作命令。
带有数字参数的函数只能被当作函数。
44、在同一坐标系内画出多个图象:
1.当holdon命令执行后,所有的新的图象都会叠加在原来存在的图象。
holdoff命令可恢复默认情况,用新的图象来替代原来的图象。
2.我们用figure函数来选择当前窗口。
这个函数的形式为“figure(n)”,其中n代表图象数。
当这个函数被执行后,图n将会变为当前图象,执行所有的画图命令。
3.gcf函数用于当于返回当前图象数。
4.subplot命令允许程序在一个图象窗中创建多个子图象。
45、文本的字体通可以通过streammodifiers修改。
一个streammodifier是一个特殊的字符序列,用来告诉编译器改变它的行为。
46、一旦一个streammodifier插入一个文本字符串中,它持续发挥作用,直到这个字符串的结束或消失。
如果一个modifier后在跟着一个{},只有{}中的文本起作用。
47、如果要打印转义符\,{,},_,或^就必须在前面加上一个反斜杠
48、Matlab中包括一个重要的函数叫做polar,它用于在极坐标系中画图。
这个函数的基本形式如下:
polar(theta,r)
49、
50、设置断点:
我们可以用鼠标右击你所关心的行并选择”set/clearbreakpoint”选项。
51、一旦到达某个断点程序员可以通过在命令窗口中键入变量名的方法检查或修改在工作区内的任一变量。
当程序员对程序的这一点感到满意时,可以通过重复按F10一行一行调试,也可以按F5运行到下一个断点。
它总是能检测程序中的每一个断点中的任何一个变量的值。
52、这个菜单包括两个项目:
“stopifError”和“stopifwarning”
53、axis命令允许程序员指定X,Y轴的取值范围
54、循环结构有两种基本形式:
while循环和for循环。
55、其中index是循环变量(就是我们所熟知的循环指数),exp是循环控制表达式。
变量index读取的是数组expr的行数,然后程序执行循环体(loopbody),所以expr有多少列,循环体就循环多少次。
expr经常用捷径表达式的]方式,即first:
last。
forindex=expr(1:
n)
Statement1...
BodyStatementn
End
注意:
在循环体在后一次执行后,循环系数将会一直为n。
循环指数可以为向量。
56、每一次扩展数组,都要经过以下步骤:
第一步,创建一个新数组。
第二步,把旧数组的元素复制到新数组当中。
第三步,把扩展的元素写入新数组。
第四步,删除旧数组。
对于大数组来说这些步骤是相当耗时的。
57、向量算法的缺点是需要很大的内存,因为一些间接的数组需要创建。
这经常是一小点损失,所以要比for循环算法好的多。
在matlab中,用向量算法代替循环的算法的过程称之为向量化(vectorization)。
向量化能够改进许多的matlab程序。
那种既可以用向量可以解决的问题,也可以用循环解决的问题,好用向量解决,这是因为向量执行的速度快。
58、:
break和continue语句。
break语句可以中止循环的执行和跳到end后面的第一句执行,而continue只中止本次循环,然后返回循环的顶部
59、如果你要利用那些没有被选择到的元素进行运算,只需要在逻辑屏蔽上加一个非运算符(-)
60、forkk=[0,5;
3,3],一次循环一个列向量,第一次循环kk=[0;
3],第二次循环kk=[5;
3]
61、size(a,1)是矩阵a的行数,size(a,2)表示矩阵a的列数
62、单次执行一段代码所消耗的时间有一定的偶然性,maxcount的作用是把循环体的代码重复执行多次,然后取平均值,以尽量消除偶然性因素的影响
63、逻辑数组有一个重要的属性——它在算术运算中能提供一个屏蔽(mask)。
屏蔽(mask)是指一个数组,它从另一个数组选择所需的元素参与运算。
指定的运算只在选择的元素上执行,而不执行原有的元素。
64、\bf黑体
\it斜体
\rm恢复正常字体
\fontname字体的名字
\fontsize字体的大小
_{xxx} xxx做为某字符的上标
^{xxx} xxx做为某字符的下标
65、一个数组的逻辑属性可以通任何的数学运算去除;
用logical函数给一个数组加上一个逻辑属性。
66、function[outarg1,outarg2,...]=fname(inarg1,inarg2,...)
function语句标志着这个函数的开始。
它指定了函数的名称和输入输出列表。
输入函数列表显示在函数名后面的括号中。
输出函数列表显示在等号左边的中括号中。
(如果只有一个输出参数,中括号可以省略。
)
67、绘图
y黄色.点-实线m品红色o圈:
点线c青绿色x×
号-.画点线r红色s正方形--虚线g绿色d菱形<
none>
无
颜色标记类型线型
b蓝色v倒三角w白色^正三角k黑色>
三角(向右)<
三角(向左)p五角星h六线形<
无
68、MATLAB特殊符号及说明:
(53)
69、程序调试(89)
1.设置断点
2.运行程序
3.F10按程序一步步执行
4.按F5运行到下一个断点
5.F11进入函数一步步调试
70、maltab程序与它们函数之间的交互用是按值传递机制。
当一个函数调用发生时,MATLAB将会复制实参生成一个副本,然后把它们传递给函数。
这次复制是非常重要的,因为它意味着虽然函数修改了输入参数,但它并没有影响到调用者的原值。
这个特性防止
了因函数修改变量而导致的意想不到的严重错误
71、选择性参数
nargin这个函数返回调用这个函数时所需要的实际输入参数的个数
nargout这个函数返回调用这个函数时所需要的实际输出参数的个数
nargchk如要一个函数调用被调用时参数过多或过少,那么nargchk函数将返回一个标准错误信息error显示错误信息,并中止函数以免它产生这个错误。
如果参数错误是致命的,这个函数将会被调用。
warning显示警告信息并继续执行函数,如果参数错误不是致命的,执行还能继续,则这个将会被调用。
inputname这个函数将会返回对于特定参数个数的实际变量名。
72、脚本文件与函数的区别:
函数:
程序部分的独立检测,代码的可复用性,避免意想不到的错误。
脚本文件:
把每一个子问题产生的MATLAB代码嵌入到一个单独的大程序中。
在嵌入之前我们无法对每一次子问题的代码进行独立地验证和测试
脚本文件是保存在文件中的MATLAB语句集合。
脚本文件共享命令窗口工作区,所以任何之前运行的脚本文件中定义的变量都能被当前脚本文件使用,脚本文件定义的变量在文件执行之后还保留在工作区中。
脚本文件没有输入参数,也没有输出参数,不过脚本文件之间可以通过工作区交换数据。
相反,每一个MATLAB函数运行在它自己的独立工作区,函数通过输入参数列表获取输入数据,通过输出参数列表给调用者返回数据。
73、函数通过输入参数列表(inputargumentlist)从程序中读取输入值,通过输出参数列表(outputargumentlist)给程序返回结果
74、自定义函数的help命令是如何工作的?
help命令显示某个函数的所有注释行,直到遇到空白注释行或执行语句为止。
75、函数中的H1注释行有什么重要性?
它应当是对本函数功能的总结。
这一行的重要性在于,通过lookfor命令它能被搜索到并显示出来。
从H1注释行到第一个空行或第一个可执行性语句可以通过help命令或帮助窗口搜索到。
它们则应包含如何使用这个函数的简单总结。
H1注释行是文件中注释的第一行,这一行可以被lookfor命令搜索并显示。
应该把该函数的用途摘要写在这一行中。
76、什么是按值传递机制?
它对结构化编程有什么好处。
实参传递给形参的过程,不会修改调用函数的变量值。
MATLAB中按值传递,值可以是标量、数据
在值传递机制中,每个输入参数的副本而不是参数本身从调用者传递给函数。
这样设计可以避免输入数据在函数内被自由的修改,这可能并不是调用者实际上需要的,因而也为设计好程序提供保证。
77、如何使MATLAB函数带有选择性参数?
(见71)
78、全局变量(占用的是全局内存,而不是本地工作区)的声明要用到global主语句,基本形式如下
globalvar1var2var3...
其中var1,var2,var3等等是用全局内存的变量。
为了方便,全局变量将在函数开头被声明,但是实际上没有这个必要。
79、在函数中的初始注释行之后和第一个可执行性语句之前声明全局变量
80、随机数种子不同产生不同的结果,种子同时,结果同。
不设置种子,每次取的随机数相同。
81、持久变量应用语句声明。
它的形式如下:
persistentvar1var2var3...var1,
var2,var3...是存储于持久内存中的变量。
82、常见的函数的函数:
fminbnd求函数的最小值,这函数只有一个自变量
fzero找出函数为0时的自变量的值
quad在数学上组合一个函数
ezplot简单易用的函数画图
fplot通过函数名画出这个函数的图象
83、函数feval对在M文件进行定义的命名函数进行求值,要求有指定的输入值。
函数feaval的基本形式如下
feval(fun,value).
84、函数的函数操作的关键字有两个专门的maltab函数,eval和feval。
函数eval对一个字符串进行求值,就如它在命令窗口中已经键入了一样。
函数feval用一个特定的输入值对命名的函数进行求值。
85、好的编程习惯:
1.把大的程序分解小的,易于理解的函数
2.在M文件的开头声明全局变量。
以区分本地变量
3.在函数中的初始注释行之后和第一个可执行性语句之前声明全局变量
4.全局变量适用大规模数据的传输(global)
5.在两次函数调用之间有持久内存保存本地数据。
(persistent)
6.用子函数或私有函数来隐藏特殊目的的函数,这些隐藏的函数只能被其他函数调用。
隐藏这些函数防止了它们偶然的使用,也能防止与其他公共函数重名时发生的冲突。
86、关系运算符>
,<
=或>
=只比较复数的实部,而不是它们的模。
87、我们可以利用char函数把double型数据转化为字符型数据。
我们可以利用double函数把变量从字型转化为double型。
88、创建二维字符数组,但一个数组中每一行的长度都必须相等。
应用deblank函数去除多余空格。
>
line2=name(2,:
)
line2=SeniorEngineer
>
line2_trim=deblank(name(2,:
))
line2_trim=SeniorEngineer
size(line2)
ans=118
size(line2_trim)ans=11
89、函数strcat水平连接两字符串,忽略所有字符串末端的空格,而字符串的空格保留。
函数strvcat用于竖直地连接两字符串,自动地把它转化为二维数组。
你可以利用MATLAB函数比较两字符串整体是否相同。
它们是:
strcmp判断两字符串是否等价
strcmpi忽略大小写判断两字符串是否等价
strncmp判断两字符串前n个字符是否等价
strncmpi忽略大小写判断两字符串前n个字符是否等价
90、函数strtok返回输入字符串中第一次出现在分隔符前面的所有字符。
默认的分隔符为一系列的空白字符
[token,remainder]=strtok(string,delim)
其中string是输入字符串,delim是可选择的分隔符,token代表输入字符串中第一次出现在分隔符前面的所有字符,remainder代表这一行的其余部分。
[token,remainder]=strtok('
Thisisatest!
token=This
remainder=isatest!
91、大小写转换:
函数upper和lower分别把一个字符串中所有转化大定和小写
注意在大小转换时,数字和符号不受影响。
92、MATLAB把由数字组成的字符串转化为数字要用到函数eval。
字符串可以用sscanf函数转化为数字。
这个函数根据格式化转义字符转化为相应的数字。
这个函数简单的形式如下
value=sscanf(string,format)
其中,string是要转化的字符串,format是相应的转义字符。
函数sscanf两种普通的转义序是“%d”,“%g”,它们分别代表输出为整数或浮点数
93、MATLAB中有许多的字符串/数字转换函数把数字转化为相应的字符串
函数num2str为输出字符串的格式提供更多的控制。
第二个可选择的参数可以对输出字符串的数字个数进行设置或指定一个实际格式。
例如
p=num2str(pi,7)
p=3.141593
p=num2str(pi,'
%10.5e'
p=3.141