自看笔记:MATLAB基本语句

269 阅读4分钟

det(A) 行列式的值

rank(A) 矩阵的秩

inv(A) 逆矩阵

format rat 显示转化为有理数形式

format 显示为浮点数

定义矩阵时,最后带上单引号是转置:
eg: b=[15 15 15]'

eig(A) A的特征值

null(A) 求解矩阵的零空间

A(3,:)=[1 1 1] 将矩阵第三行换为1 1 1 ,也可以为空,即去掉第三行

A=hilb(3) 希尔伯特矩阵

cond(A) 条件数 ,误差放大倍数

3阶希尔伯特矩阵的误差倍数:524.0568倍

x=linspace(0,1,10) 等距间隔 区间是0-1,十个点

x(5)=0.6 把第五个换成0.6

norm(y-x) 求(y-x)的范数,求y与x的差值(算误差)。norm(y-x,2) 默认为2范数:对应分量相减的平方和再开方。


max(A) 查找矩阵中最大行

A(:) 按列拉直

max(A(:))即可直接寻找最大值:


[M,Id]=find(A==max(A(:))) 返回A中最大值的位置,M接收为行,Id接收为列

同样可以:[M,Id]=find(A==9)


syms x y 定义变量x和y

subs(f,x,0) 给函数f中的x带0


limit(f,x,0,'left') 取函数f中x从左侧向0的极限

limit(sin(x)/x,x,inf) 从函数sin(x)/x取x的极限


diff(f,x,2) 给函数f对x求2阶导


factor(diff(f,x,2)) 分解因式化简

simple(diff(f,x,2)) 化简


int(f,x) 不定积分

int(f,x,0,pi) 对f中变量x从0~pi的积分


quad('sin(x)./x',1,pi/2,1e-6) 数值积分(一定得出一个结果) ,从1~pi/2积分,这个点是拆分成若干个点计算


taylor(sin(x),pi/2,6) 将sin(x)在pi/2展开成6阶泰勒展开

taylor(f,y,0,6) 函数f中指定y变量在0处展开6阶泰勒


diff(f,5)/5! 可以通过对函数求5次导并除以5的阶乘,得出五次的系数


求极大值 diff(f,1)求导,然后将求导的式子取0点。

将函数在pi/2取零点


fminbnd(f,0,pi) 求函数f在0~pi中的最小值


例如画f图像 t=linspace(0,pi,50) 声明t为0-pi的50个点

yt=subs(f,x,t) 将x=t(50个点)带入

plot(t,yt,'-r','Linewidth',2) 线形红色线宽2

hold on 图像画上去

legend('曲线','最值点') 按画上去的顺序右上角标志


jacobian([sin(x)*exp(y);cos(x)*exp(y)],[x,y]) 雅克比矩阵的定义


一维图像:

function huitu
f1=inline('sin(x).*cos(exp(x))','x');//与下面定义方法皆可
a=-pi;b=pi;n=50;   //自变量范围:-π~π
x=linspace(a,b,n);
y1=f1(x);
y2=f2(x);
y3=f3(x);
plot(x,y1,'r--p','linewidth',1)
hold on
plot(x,y2,'b--s','linewidth',2)
plot(x,y3,'g--*','linewidth',3)
legend('方法一','方法二','方法三')
hold off

function y=f2(x)
y=sin(x).*sin(exp(-x.^2));

function y=f3(x)
y=sin(x).*sin(exp(x)+f2(x));

将三个函数图像分开:

  1. subplot(1,3,1) 一行三列第一个... 其他插入,代码插入位置在绘图前面。
  2. 去掉hold on 和 hold off (可不去)


二维图形

function huitu3v
a=-pi;b=2*pi;n=60;
c=-pi;d=pi;m=30;
x=linspace(a,b,n);   //在x方向区间和分的点
y=linspace(c,d,m);
[x,y]=meshgrid(x,y);  //织网(四边形)
z=f(x,y);   //网的z在下面定义了
p1=mesh(x,y,z)  //织网
set(p1,'facecolor','g','edgecolor','r')// 设定表面为绿色,阴影为红色
hold on 
view(-120,64)
hold off

function z=f(x,y)
z=sin(x).*sin(exp(y));


三维图像

isosurface(x,y,z,v,0) 意为V=x^2+y^2+z^2=0


数据拟合

多项式,非多项式逼近

根据数据点猜背后模型

多项式拟合

p=polyfit(x,y,9) 多项式拟合,对x,y使用9个点拟合

y1=polyval(p,x) 使用上面的p

差值命令

xt=linspace(x(1),x(end),50) 从1-无穷,50个点

interpl(x,y,xt,'linear') 线性差值

interpl(x,y,xt,'cubic') 三次多项式

非线性拟合

y=fmx(bt,x)

y=sin(bt(1)*x+bt(2).*exp(bt(3)*...)


bt0=[1 1 1] 所选初值

需要出现在函数fmx中:

nlinfit(x,y,@fmx,bt0)