MatLab光速入门(doge
清除命令
Matlab常用清除命令:clc、clear、clear all、clf、close、close all
矩阵操作
定义矩阵
A=[1,4,7;3,6,9;6,7,4]
A=linspace(start,end,step)
A=start:step:end
其中,linspace和括号声明向量的方式基本等同
ones函数
matlab中ones函数的作用是生成全1阵。
ones的使用方法:
B=ones(n)
:生成n×n全1阵。
B=ones(m,n)
:生成m×n全1阵。
B=ones([m n])
:生成m×n全1阵。
B=ones(d1,d2,d3……)
:生成d1×d2×d3×……全1阵或数组。
B=ones([d1 d2 d3……])
:生成d1×d2×d3×……全1阵或数组。
B=ones(size(A))
:生成与矩阵A相同大小的全1阵。
矩阵转置
B=A'
矩阵运算
矩阵加减
注:矩阵加减运算必须是同型矩阵
C=A+B
C=A-B
矩阵乘法
注:前一矩阵的列数要与后一矩阵的行数相同
C=A*B
矩阵对应元素乘法
如果a和b是两个矩阵的话,a*b
是进行矩阵相乘,a.*b
是a矩阵的每一个元素乘以b矩阵对应位置的元素形成的一个新矩阵,
矩阵行列式
求矩阵行列式:Z=det(A)
矩阵求逆
非奇异矩阵 A 求逆:N=inv(A)
矩阵特征值
如果A为方阵,满足$AX=\lambda X$的$\lambda$称为A的特征值,X称为A的特征向量:[X,V]=eig(A)
得到A的特征向量和特征值,其中 X 各列为特征向量,V 主对角元素为特征值。
函数画图
单窗口
基础图
单窗口:plot(x1,y1,’s1’,x2,y2,’s2’,...,xn,yn,’sn’),si=r,b...
直方图
用法:
count = hist(X)
:把向量 X 中的元素放入等距的 10 个条形中,且返回每一个条形 中的元素个数。若 X 为矩阵,则该命令按列对 X 进行处理。
count = hist(X,center)
:参量 X 为向量,把 X 中元素放到 m(m=length(center)) 个由 center 中元素指定的位置为中心的直方图中。
count = hist(X,number)
参量 number 为标量,用于指定条形的数目。
[count,center] = hist(X)
返回向量 X 中包含频率计数的 count 与条形的位置向量
center,可以用命令bar(center,count)
画出条形直方图。
三维图
曲面的一般方程是F(x,y,z)=0,一般需要将曲面的点坐标先表示出来,再使用对应的曲面绘图函数。
meshgrid
[x,y]=meshgrid(xgv,ygv);
meshgrid函数生成的X,Y是大小相等的矩阵,xgv
,ygv
是两个网格矢量,都是行向量。
X:通过将xgv
复制length(ygv)
行(严格意义上是length(ygv)-1)
行得到
Y:首先对ygv
进行转置得到ygv'
,将ygv'
复制(length(xgv)-1)
次得到。
这样的好处在于,可以直接调用某一个位置的x和y的值,这样有利于后续的三维画图
mesh
mesh(X,Y,Z)
,画出由x,y,z指定的网线面。其中,若 X 与 Y 均为矩阵,则空间中的点 $(X(i,j),Y(i,j),Z(i,j))$为所画曲面的网线的交点。
surf
surf(X,Y,Z)
,在矩形区域内显示三维带阴影曲面图,其中数据 Z 同时为曲面高度,也是颜色数据。X 和 Y 为定义 X 坐标轴和 Y 坐标轴的曲面数据
contour,contourf
绘制等高线:https://zhuanlan.zhihu.com/p/359626420
多窗口
将窗口分为多个子窗口
多窗口:subplot(m,n,k);
表示将窗口分为 m x n 个子窗口,当前图在第 k 个窗口完成。
eg:subplot(m,n,k);
+单图操作+grid on
多个分立窗口
figure('Name','XXX')
:新建一个名为XXX的窗口,一般在这一句话之后紧跟图像的调用命令(如mesh,surf之类的)
注1:figure
语句不需要打分号
注2:如果只有一个图,那么其实可以不用figure函数,否则的话,如果有多个图,则只会显示最后一个图
基本语句
输出语句
fprintf("format define",var1,...,varn);
eg:fprintf('s1=%3d s2=%3d s3=%3d\n',s1,s2,s3);
循环语句
for语句
for x=a:d:b
(command lines;)
end
while语句
while expression:
(command lines;)
end
if-else-end语句
if expression1
(command1;)
elseif expression2
(command2;)
elseif expression3
(command3;)
else
(command4;)
end
M文件
Matlab 中 M 文件有两种:脚本 M 文件和函数 M 文件。
脚本M文件
一个比较复杂的程序通常需要反复调试,而我们通常也要编写一大段程序,这时通常可 建立一个脚本 M 文件将其存储起来,以便于随时调用计算。脚本 M 文件就是许多的命令的 简单组合。
函数M文件
当我们要编写一个函数便于主程序调用时,该函数通常也需要写为 M 文件。这种 M 文件称为函数 M 文件。
函数 M 文件是文件名后缀为 m 的文件,这类文件的第一行必须以一特殊字符 function
开始,格式为:function 因变量名=函数名(自变量名)
函数 M 文件和脚本 M 文件差异
- (1)函数 M 文件的文件名必须与函数名相同,而脚本 M 文件则可以任意取合法的文件名。
- (2)脚本 M 文件没有输入参数与输出参数,而函数 M 文件有输入与输出参数,对函数进
行调用时,可以按少于函数 M 文件规定的输入与输出变量个数,但不能多于函数 M 文件规 定的输入与输出变量个数。 - (3)脚本 M 文件运行产生的所有变量都是全局变量,而函数 M 文件的所有变量除特别申 明外都是局部变量。
函数定义
M文件
可使用上文所属的M文件定义一个函数文件。注意,一个函数文件里面可以有子函数
inline
定义内联函数:
g=inline("x^2+y^2",'x','y');
z=g(1,2);
匿名函数
f=@(x)x^2;
f(2)
syms+subs
先使用syms定义一个符号表达式,然后使用subs函数计算值
syms x y
f=x+y;
subs(f,'x',1);
-->y+1
matlab中的数学运算
数据精度规定:
format
digits和vpa
如:
digits(5);
a=vpa(sqrt(2));
这样的话a的值就是1.4142,5位小数,否则的话就很多
符号对象
在MATLAB中,sym x
函数用于创建符号数字、符号变量、符号对象。如果需要一次性添加多个符号对象,使用syms x,y
来创建。符号对象的类型是sym.
符号变量的优点是,使用符号变量运算得到的只是一个解析解,例如,在符号变量运算过程中pi就用pi表示,而不是具体的近似数值3.14或3.14159。使用符号变量进行运算能最大限度减少运算过程中因舍入造成的误差。符号变量也便于进行运算过程的演示。
求极限
Matlab中关于极限的命令主要有:syms x
:将x定义为符号变量limit (F, x, a)
:返回符号表达式x趋近于alimit (F, a, inf)
:返回符号表达式x趋近于alimit (F, x, a, ‘right’)
:返回符号表达式x趋近于a的右极限limit (F, x, a, ‘left’)
:返回符号表达式x趋近于a的左极限
注:必须先把x定义为符号变量才能够调用求极限函数
求导数
Matlab中关于导数的命令主要有:syms x
:将x 定义为符号变量diff(F, x, n)
:返回符号表达式对x的n阶导数
注:必须先把x定义为符号变量才能够调用求导函数
化简多项式
simplify(s)
:对s表达式进行化简
计算多项式
eval(x)
:对x多项式进行计算
求极值,求最值
Matlab中关于极值和最值的命令主要有:[x,f]=fminbnd(F, a, b)
:x 返回[a,b]内极小值点,f返回[a,b]内极小值[x,f]=fminsearch(F, x0)
:x返回x0附近局部极小值,f返回x0附近局部极小值[m,k]=min(y)
:m返回矩阵最小值,k返回对应的编址(下标)[m,k]=max(y)
:m返回矩阵最大值,k返回对应的编址(下标)
方程求解
Matlab中关于方程(组)求根的命令主要有:solve(Fun, x)
:x 返回Fun的所有符号解或者精确解。当x为符号对象的时候返回符号解,使用eval可计算精确解[x,y]=solve(Fun1, Fun2, x, y)
:返回Fun1和Fun2方程组的符号解或者精确解,规则同上
eg:
syms x y
w = solve(x+y.*2==3,y);
x=3;
z=eval(w);
-->w:
val =
3/2 - x/2
-->z:
z=0
积分
Matlab中关于求解积分的命令主要有:sym x
int(s,x,a,b)
:返回符号表达式s关于指定变量x的定积分quad(Fun, a, b, tol)
:抛物线积分法quadl(Fun, a, b, tol)
:NewtonCotes积分法
多重积分则int(int(int(s,x,a,b)))
常微分方程(组)
在Matlab中可用dsolve求常微分方程的通解,包括可分离变量,齐次方程,一阶、二阶、n阶线性齐次和非齐次微分方程,可降阶的高阶微分方程等,主要格式:
dsolve(‘eqn’, ‘var’)
# eqn是常微分方程,var是变量
dsolve(‘eqn1’,’eqn2’,…,’eqnm’,‘var’)