此文仅记录个人于Matlab学习中注意到的要点以方便记忆与复习
开始应用Matlab
什么是Matlab
MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室),软件主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式。
开始应用
在Matlab中, 用(1 2 3)表示行向量;用(1;2;3)表示列向量;两者结合,(1 2 3;4 5 6;7 8 9)则表示为矩阵。 行与行之间的元素,既可以用空格隔开,也可以用逗号隔开。
想要列出一组向量的所有元素,除了像上面的穷举法以外,还可以使用以下命令来创建一组向量variable_name=[m:q:n]
其中,m是起始值,n是终止值,q是增量。
例如:
>>a=[1:3:13]
a=
1 4 7 10 13
如果只给出m与n的值,则会默认增量为1。
当然,q可以取负数。
还有另外一个命令可供选择:variable_name=linspace(xi,xf,n)
其中,xi是起始值,xf是终止值,n是项数。
例如:
>>d=linspace(0,8,6)
d=
0 1.600 3.200 4.800 6.400 8.000
矩阵的元素可以是表达式
例如:
>>a=6;b=3;c=4;D=[b,a*c,cos(pi/3);c^2,sqrt(c^2/a),14]
D=
3.0000 24.0000 0.5000
16.0000 1.6330 14.0000
前面创建向量的方法同样可以用于生成矩阵的行
例如:
>>A=[1:2:11;0:3:15;linspace(10,60,6);1 2 3 4 5 6]
A =
1 3 5 7 9 11
0 3 6 9 12 15
10 20 30 40 50 60
1 2 3 4 5 6
二维图形绘制
功能介绍
MATLAB具有很强的图形功能,其中有很多命令可以用于绘制不同类型的图形,如按坐标划分
有标准图形、对数坐标的图形、半对数坐标的图形和极坐标的图形;按维数划分
有平面(二维)图形和立体(三维)图形;用于统计
的还有散点图、条形图、饼状图、直方图、时间序列图和阶梯状图等。
绘制二维图形的基本命令
plot(x,y)
命令执行后图形会自动打开。plot(t,x,t,y)
该命令基本与上文相同,需要注意的是这里面的t为自变量,x与y均为因变量。与cos(t)")
当然除了像上图分开写,也可以合并在同一命令中与cos(t)")
plot(x)
该命令会将你的向量组x内的值进行排序,并作为因变量依次绘制于图上
命令等价于
4.plot(t1,x1,t2,x2,...,tn,xn)
没玩太明白这个命令,直接上例子吧
这里如果把0.003换成0.3,图形会变成折线。可以看出,点越多,得到的图形越光滑。
绘图命令的选项
plot命令可以有选项,用于确定线和标记的类型及颜色。带有选项的plot命令的形式如下:plot(x, y,‘line specifiers’,’property name’, property value)
式中,x和y是两个同维数的向量;line specifiers
给出曲线和标记的类型及颜色;property name
和 property value
给出曲线的宽标记的尺寸、边框和填充色。
例如:
>> plot(x,y)
>> plot(x,y,'r')
>> plot(x,y,'r*-')
>> plot(x,y,'r-')
>> plot(x,y,'g--')
>> plot(x,y,'g:o')
>> plot(x,y,'o:g')
这里给出相关参数的表格
三者之间无需考虑顺序问题,参见例子最后一条
还有一个例子需要记忆plot(x,y,’g:o’,’LineWidth’,2,’markersize’,12,’MarkerEdgeColor’,’g’,’markerfacecolor’,’y’)
它表示点用绿色的点线连接,圆形标记;线宽是2;圆形标记的大小是12点;标记有绿色边线;标记用黄色填充。
图形绘制后的注释
二维图形生成后比较常用插入
这个工具栏
其中的工具基本上可以看名字猜用途
同时,菜单中的线条等均可以通过旁边的查看
内的图窗选项板
加入
另外,若想实现图中的网格效果,需要在生成图形后执行以下命令grid on
三维图形的绘制
使用指令plot3(x,y,z)
上方的选项同样可以加在这个指令中
`plot3(x, y, z,‘line specifiers’,’property name’, property value)
例如:
>> t=(0:pi/50:10*pi);
plot3(sin(t),cos(t),t0)
grid on
得到结果
网状图与表面图
若已知一个二元函数z=f(x,y),可以利用Matlab绘制出它的三维模型。
为此,需要运用函数meshgrid
生成网格矩阵数据x和y,然后利用函数z的表达式计算出不同组x,y下对应的的z值,再运用函数mesh(x,y,z)
生成网状图,或者函数surf(x,y,z)
生成表面图
例如:
绘制函数 z=x^2+y^2
>> [x,y]=meshgrid(10:10); %这里利用meshgrid函数绘制了一个21*21的格点矩阵,参见下图
z=x.^2+y.^2;
mesh(z) %使用mesh(x,y,z)效果一样
运行后得到结果
使用meshgrid所绘制的(x,y)格点矩阵
而surf函数
则专门用于绘制着色的曲面图,它对数据的要求与mesh函数
相同
例如
绘制函数 z=x^2+y^2
>>[x,y]=meshgrid(-10:10);
z=x.^2+y.^2;
surf(z)
运行后得到结果
等高线
函数mesh
有扩展函数meshc(x,y,z)
,在绘制三维网格图的同时,还绘出等高线。如果将函数surf
换成扩展函数surfc(x,y,z)
,即在绘制着色的三维表面图的同时,还绘出等高线。
而只绘制等高线的函数是contour3(x,y,z)
去掉数字3后的contour(x,y,z)
可以绘制等高线在xOy处的投影
Matlab文件
介绍
可以将无法在命令窗口储存的指令存储进M文件
中方便调用,调用时其内指令循序执行
调用后其运行所得变量值会储存进工作空间中
可以在命令窗口直接输入文件名后按Enter
键运行,也可以在编辑器内使用save and run
运行,最后结果都将显示在命令窗口内
Matlab程序设计
关系运算和逻辑运算
对于真假的判断,MATLAB把任何非0的数值都当做真,把0当做假;
但在关系和逻辑表达式的输出中,MATLAB会将真输出为1,将假输出为0
关系操作符和逻辑操作符
其中,关系运算符号主要有以下几种
符号 | 含义 |
---|---|
< | 小于 |
\> | 大于 |
\== | 等于 |
<= | 小于或等于 |
\>= | 大于或等于 |
~= | 不等于 |
需注意,两个\==才代表着等于的意思,一个\=则是赋值的意思
进行比较的过程中,两个阵列仅会在维数(向量/矩阵)相同时才进行比较,结果是同样维数的逻辑数列,它的元素为1或0。当标量与阵列进行比较时,标量与阵列的每个元素将进行比较,结果是一个逻辑阵列。
例如:
逻辑操作符有以下几种
符号 | 含义 | |
---|---|---|
& | 与 | |
\ | 或 | |
~ | 非 |
在一个表达式中
算术运算、关系运算和逻辑运算都可以出现在表达式中,这时MATLAB的执行顺序是圆括号->指数-->逻辑非-->乘除-->加减-->关系符号操作-->逻辑与-->逻辑或
在以上8个优先级中,如果同一级有多个运算,则自左向右执行。
例如:
>> x=-2;y=-5;
>>
>> -5<x&x<-1
ans =
logical
1
>> ~((y<=8)|(x<-1))
ans =
logical
0
>> ~(y<=8)|(x<-1)
ans =
logical
1
矩阵的逻辑运算
两个同维数的矩阵的逻辑与和逻辑或运算是相应元素的逻辑与和逻辑或运算
>>A=[0 1 0;3 2 0;1 2 6];B=[2 5 0;1 3 4;1 2 6];
>>A&B
ans=
0 1 0
1 1 0
1 1 1
Matlab if语句
if-end结构
if-else-end结构
if-elseif-else-end结构
Matlab for语句
for-end结构
其使用结构如下
for k=f:s:t
一组MATLAB命令
end
其中的f为初值
,s为增量
,t为终值
在C语言中是f为初值
,s为终值
,t为增量
(
如果不填写t的数值,其会默认设置为1
使用事例:
Matlab while语句
其使用结构如下
while 条件表达式
一组MATLAB命令
end
循环将进行到条件表达式不再成立,与C语言相同
需要注意,条件表达式至少应包含一个迭代变量
,并且当执行第1次迭代前
必须给它赋值。
条件表达式中至少一个变量在迭代中要被赋予新的值
,否则循环一旦开始就不能停止了
如果发生了这种情况,可以按<Ctrl+C>
或<Ctrl+Break>
键停止。
使用事例: