本渣想回过头来整理一下MATLAB的一些基本的知识(很多东西比较琐碎,应该系统的梳理梳理),下文中没有提到的,自己用help查即可。 此文用来存个档,便于回顾。 由于matlab各版本部分语法存在差异,可能会出现bug,用help查帮助文档即可。 里面的一些内容仅供参考,知识量有限,仅供入门。 后期可能会随缘写一点笔记。
如果没有装Matlab,我这里有一篇建模软件的博客:https://www.cnblogs.com/fangxiaoqi/p/10563509.html
变量名:字母数字串(第一个字符必须英文字母 | 字符间无空格 | 最多19个字符);
用%注解;
检查现存于工作空间(Workspace)的变量,可键入who;
检查更加详细的信息,可键入whos;
删除工作空间里的变量clear;
一些永久常数:
基本虚数单位 i或j; 系统的浮点精确度 eps; 无限大 inf; 系统所能表示的最大/最小数值 realmax / realmin; 非数值 NaN; 圆周率 pi; 函数的输入/输出参数个数 nargin / nargout;
搜寻路径:which(空格)文件名;
基本命令:
其他命令:
特殊矩阵:
向量的范数——n = norm(X) 具体help查询
矩阵的范数——n = norm(A) 具体help查询
其他运算:
数学定义为矩阵A的条件数等于A的范数与A的逆的范数的乘积,即cond(A) = ‖ A ‖·‖ A逆 ‖
LU = A——[L,U] = lu(A)
LU = PA——[L,U,P] = lu(A)
U为上三角阵,L为下三角阵或其变换形式,P为单位矩阵的行变换矩阵
解方程组

clear
format rat %format函数控制输出格式 format rat是小数去用分数输出表示
A=[5,0,4,2;1,-1,2,1;4,1,2,0;1,1,1,1];
B=[3;1;1;0];
S=length(A(:,1))
R=rank(A)
if S==R
X=A\B
else
fprintf('error\n')
end
解线性方程组

clear
A=[1,-2,3,1,1;1,1,-1,-1,-2;2,-1,1,0,-2;2,2,5,-1,1];
b=[7;2;7;18];
B=[A,b];
n=length(A(1,:))
RA=rank(A)
RB=rank(B)
if RA==RB
if RA==n
X=A\b
else
D=rref(B)
end
else
fprintf('No Solution for the Equations')
end
解齐次线性方程组
clear
A=[1,1,1,4,-3;2,1,3,5,-5;1,-1,3,-2,-1;3,1,5,6,-7];
R=rank(A)
%X=rref(A)
%仅仅用rref的话,本题的秩=2<5,方程有非零解,需要自己再去做
%因此不必用rref,MATLAB提供了一个求矩阵令空间的函数null来方便求解
Y=null(A,'r')
求非齐次线性方程组的通解

clear
A=[1,5,-1,-1;1,-2,1,3;3,8,-1,1;1,-9,3,7];
b=[-1;3;1;7];
B=[A,b];
RA=rank(A)
RB=rank(B)
Y=null(A,'r')
n=length(b)
if RA==RB
if RA==n
X=A\B %方程组满秩时,求出唯一解
else
p=pinv(A)*b %在方程组不满秩时,求出特解
Y=null(A,'r') %求出方程组的基础解系
n1=length(Y(1,:))
k=sym(['kI']) %这里是ki,是为了把数组k说明成字符型变量
for i=1:n1 %求出方程的全部解
k(i)=strcat('k',num2str(i))
p=p+k(i)*Y(:,i)
end
end
else
fprintf('No Solution for the Equations')
end
这一块结合实例来了解相关函数。
二维图像:

①——plot
x=-10:0.1:10;
y1=3*x.^4+x.^2-1;
plot(x,y1,'r')
%x是向量,所以计算一定要表示成点乘
②——fplot
%函数
function y2=draw2(x)
y2=sin(x)+x;
end
%在命令行输入
fplot(@draw2,[-5,5])
③——ezplot
y3='x.^2*exp(-x.^2)';
ezplot(y3)
④
syms x
y=log10(x+sqrt(1+x.^2));
dy=diff(y,x);%求导函数,但x不能先定义为向量,所以用subs让x1作为一符号代替表达式y中的默认变量
x1=-3:0.1:3;
y1=subs(y,x1);
dy1=subs(dy,x1);
plot(x1,y1,'r',x1,dy1,'b') 
三维图像:

①——plot3
t=0:0.1:6*pi;
x=cos(t);
y=sin(t);
z=t;
plot3(x,y,z)
②——参数方程
t=0:0.1:6*pi;
x=1/2*cos(t)+1/2;
y=1/2*sin(t);
z=sqrt(1-x.^2-y.^2);
plot3(x,y,z)
③——meshgrid和mesh
s=-10:0.1:10;
t=-10:0.1:10;
[x,y]=meshgrid(s,t);%由两向量生成网格点(x,y),与mesh()配合使用
z=x.^2-y.^2;
mesh(x,y,z);%绘制着色的三维网纹去年
④——cylinder
s=-pi/5:pi/50:pi/5;
[X,Y,Z]=cylinder(1./s,60);%绘制用向量表示的曲线围绕x轴旋转的曲面,与surf()配合使用,相当于mesh()
surf(X,Y,Z);%mesh(X,Y,Z);
设计一段程序,分别用for循环和while循环求1+2+3+…+100的和,写出完成实验的程序。
clear;
sum=0;
for k=1:100
sum=sum+k;%s=s+k
end
sum注意:i和j是系统的虚单位,原则上不能作为变量,建议换成k(sum属于系统函数名,同理,所以还是建议写成s)