MatLab(Matrix Laboratory),一种以矩阵计算为基础的交互式程序语言,专门针对科学,工程计算以及绘图的需求。函数众多。
常用命令
Esc恢复命令输入的空白状态
上下键:调出上一行下一行命令
exit/quit退出并关闭Matlab
figure/figure(2)
logo显示MatLab的Logo
clc清屏
help sqrt
demo
formatcompact
formatloose
cleari, j
clearall
who或whos,检查工作空间中的变量及其阶数
语句的结尾可用回车符或逗号,此时会立即显示运算结果。如果不希望显示结果,就以分号结尾。此时运算仍然执行,指示不显示。
若赋值时,只剩下右侧的表达式,而没有被赋值的变量,则Matlab会自动给出一个临时变量ans,把运算结果暂存在ans中。
基本语法
Matlab中的变量或常量都代表矩阵,标量应看作1*1阶矩阵。
a=[1 23; 4 5 6; 7 8 9],同一行元素之间以逗号或空格分开,不同的行以分号分开。
变量的元素用圆括号()中的数字(下标)来注明,二维的下标以逗号分开。
如果赋值元素的下标超出了原来矩阵的大小,矩阵的行列会自动扩展
给全行赋值,可用冒号 a(5, :)=[5, 4, 3] //[]用来表示矩阵
b =a([2, 4], [1, 3]) //把a的第2,4行及第1,3列交点上的元素取出,构成一个新矩阵b
a([2,4, 5], :)=[] //抽去a中的第2,4,5行,利用空矩阵[]的概念,空矩阵不同于零矩阵
a(2,4) //a矩阵的a[2][4]元素
复数用i或j来表示 c=3+5i
z =[1, 3;5, 7]+[2, 4;6, 8]*i // ‘*’不可省略
w=z' //共轭转置
w=conj(z) //共轭
w=conj(z)' //转置
基本矩阵
zeros(m,n), ones(m, n), rand(m, n), linspace(a, b, n), eye(n) //linspace(a, b, n)在a与b之间均匀地产生n个点值,形成1*n维向量; eye产生单位矩阵
大矩阵可由若干个小矩阵组成,但必须行列数正确,恰好填满全部元素
元素显示不精确时,可用显示单个元素的命令来得到它的精确值,或改用长格式(format long)来显示整个矩阵
[n,m]=size(z) //获得矩阵阶数,若要自己编写矩阵A和B相加减,必须先求nA,mA,nB,mB,并检验是否满足nA=nB,mA=mB。作相乘时,正好相反
x=[1,2, 3]; y=x-1
l=length(X) //一维数组,length不分行和列
inv(z) //求逆矩阵,z必须为n阶方阵
x=inv(D)*B=D\B //把D的逆矩阵左乘B,记作D\, 称之为左除。
x=B*inv(D)=B/D //把D的逆矩阵右乘B,记作/D, 称之为右除。
*, \, /, ^, expm, logm, sqrtm是将矩阵作为一个整体进行运算的
+, -, sqrt, exp, log是对矩阵中的元素分别进行的(按元素群运算)
矩阵结构形式的提取与变换
fliplr矩阵左右翻转fliplr(A),flipud矩阵上下翻转flipud(A),reshape阶数重组, 元素总数不变reshape(A, 2, 6)
rot90矩阵整体反时针旋转90度rot90(A), diag提取或建立对角阵diag(A), tril取矩阵的左下三角部分tril(A),triu取矩阵的右上三角部分triu(A), :将元素按列取出排成一列B=A(:)'
元素群运算
数组赋值
1) 用两个冒号组成等增量语句,格式:t=[初值:增量:终值],增量为1 时可以省略
2) 用linspace函数,格式:linspace(初值,终值,点数)
元素群运算也就是矩阵中所有元素按单个元素进行运算。为了与矩阵作为整体的运算符号相区别,要在运算符*,/,\,^前加一点符号‘.’,以表示在作元素群运算。参与运算的两个矩阵必须是同阶的。非方阵不能按整体作矩阵乘幂运算的。
Eg :
x=[0:0.1:pi/4]’;
disp(‘ x sin(x) cos(x) tan(x) ’)
disp([x,sin(x),cos(x),tan(x)])
逻辑判断
1 数学及逻辑运算符(~=不等于)
2 逻辑字符检查(all, any, find, isnan, isreal, isstr)
3 位运算
4 集合运算
流程控制语句
1 if语句
1) if(expression) section, end
2) if(expression1) section1, elsesection2, end
3) if(expression1) section1, elseifexpression2 section2, else section3, end
2while语句
while(expression)section, end
3 for 语句
for k=初值:增量:终值 语句组A, end
4 switch语句
switch表达式(标量或字符串)
case 值1
语句组A
case 值2
语句组B
… …
Otherwise
语句组N
end
基本绘图方法
Graph2d,Graph3d,Graphics,specgraph函数库
基本作图函数说明:
Plot绘制连续波形 stem绘制离散波形 subplot一个窗口内绘制多副图
axis定义x,y轴最大最小值 hold保留目前曲线 grid画网格线 xlabel/ylabel为x/y轴加上说明
title为图形加上标题 text在图上加文字说明 gtext用鼠标拖动来确定标注文字的位置
1直角坐标中的两维曲线
1) plot(y)输入一个数组的情况
2) plot(x,y)输入两个数组的情况
如果数组x和y具有相同长度,命令plot(x,y)将绘出以x元素为横坐标,y元素为纵坐标的曲线。
2线形,点型,颜色
Y***m品红c青r红g绿b蓝w白k黑
.,o,x,+,-,*,: 虚线,-.点划,- -长划
Eg: plot(x1, y1, ‘:y’), plot(x2,y2,’+r’)
3多条曲线的绘制
1) plot(t, [y1, y2, …]) 要求所有输出量有同样的长度和同样的自变量向量,不便于用户自行设定线型和颜色
2) hold命令 坐标选择要得当,注意及时解除保持状态hold off
3) 在plot后使用多输入变量
plot(x1, y1,’+g’, x2, y2,’:r’ …)
4) plotyy命令
plotyy(t,y,t2,y2)
屏幕控制
1 图形窗的控制
figure创建图形窗 gcf获取当前图形窗的句柄 clf清除当前图形窗 shg显示图形
refresh刷新图形 close关闭图形窗 close all关闭所有图形窗
2 轴系的控制
axes在任意位置创建坐标系 gca获取当前坐标系的句柄 cla清除当前坐标系 ishold保持当前图形状态为真
3 图形对象
line创建直线 surface创建曲面 patch创建图形填充块 light创建照明 image创建图像
4 图形句柄操作
5工具
6 其他
subplot(n,m,p):将图形窗口分为n*m个子图,在第p个子图处绘制图形
其他二维绘图命令
虚数的绘图
坐标比例和尺寸的设定---axis命令
图形窗口中的直接编辑
M文件及程序调试
M文件分两种:一种是主程序文件(script file),由用户为解决特定的问题而编制的;另一种是子程序,也称为函数文件(function file),它必须由其他文件调用
主程序文件
1) 用clear,close all等语句开始,清除掉工作空间中原有的变量和图形,以避免其它已执行程序残留数据对本程序的影响。前几行通常是注释,说明此程序的用途。注释必须以%开始。在MatLab中输入help filename时,屏幕上会将该文件中以%起头的最前面几行的内容显示出来。
2) 程序主体。注意避免中文的字符,否则会引起死机
3) 文件名不要用汉字。避免出现汉字路径名。
人机交互命令
估值并执行,流程控制语句,程序,函数和变量,变元管理,信息显示,人机交互命令
pause(n)程序执行到此处,暂停n秒,再继续执行。如果没有括号参数,则等待用户输入任意键后才继续执行。
keyboard程序执行到此处暂停,在屏幕上显示字符K,并把程序的输入和执行权交给用户。如果需要系统恢复运行原来的程序,只需输入字符串return。在M文件中设置该命令,有利于进行程序调试,以及临时修改变量内容。
Ctrl+C强行停止程序运行的命令
函数文件
由function起头,后跟的函数名必须与文件名相同
有输入输出变元(变量),可进行变量传递
除非用global声明,程序中的变量均为局部变量,不保存在工作空间中