#跟着网上课程学习了matlab的基础用法,在这里给大家整合出来,形成知识点的形式,以便大家查阅或者学习,知识点全,有注解~
Matlab
%%
a=[1,2,3;4,5,6;7,8,9];%矩阵写法
b=1:1:10;%开始:步长:结束
c=1:10;%遇上一个等价(1可以省略)
d=linspace(0,10,5);%起始元素,末尾元素,元素个数。生成等间距的元素个数
e=eye(4);%单位阵
z=zeros(1,4);%全零矩阵1*4
o=ones(4,1);%一矩阵4*1阶
r=rand(4);%0-1随机矩阵
rn=randn(4);%高斯随机分布矩阵
diag_a=diag(a,1);%diag(a矩阵行向量,主对角线上方第k条斜线)用行向量生成对角阵
tril_a=tril(a,1);%tril(矩阵,主对角线上方第k条斜线)生成矩阵的下三角阵,triu上三角阵
a*a;%矩阵乘法
%加减乘一样
%点运算
%a.*b,a./b,a.^b对应元素的*,*/^运算
a.*a;
%逆矩阵
pinv(a);%伪逆矩阵,当a不是方阵求他的广义逆矩阵;a是可逆方阵,结果与逆矩阵相同
%特征向量 特征值
[v,d]=eig(a);%v为特征向量,d为特征值对角阵
%行列式
det(a);
%秩
rank(a);
% * 伴随
compan(b);
%%
%矩阵的修改
cha_a=a;
cha_a(2,3)=4;%(行,列)元素的替换
cha_a(1,:)=[2,2,2];%(行,:)替换行,为[]即为删除行
cha_a(1,:)=[];%删除行
%转置
T_a=a';
%指定维数的拼接
cl_a1=cat(1,a,a);%垂直拼接
cl_a2=cat(2,a,a);%水平拼接
%%
%信息获取
%矩阵的行列
[row_a,col_a]=size(a);
%行列中最大值
len_a=length(a);
%%
%多维数组
%创建
%直接法
%拓展法
%cat法
mul_31=[1,2,3;2,3,4];
mul_32=[3,4,5;4,5,6];
mul_3=cat(3,mul_31,mul_32);
%%
%转换
%___2___---->如num2str,将数字转化为字符串:dec2hex,将十进制转化为十六进制
str_b=num2str(b);
%%
a=5;
x=[1,2];y=[3,4];
%选择结构
%if_elseif_else_end
if a>0
disp(x);
elseif a==0
disp(a);
else
disp(a-1);
end
%switch-case-otherwise-end
switch a
case 0
disp(a);
case 1
disp(a+1);
otherwise
disp('aaa');
end
%try-catch
try
z=x*y;
catch
z=x.*y;
end
disp(z);
%%
%循环结构
%for 循环变量=初值:步长:终值---end
for i=0:1:10
disp(i);
end
%while-end
while a>2
disp(a);
a=a-1;
end
%%函数调用
[a,b]=circ(5);
%%
% 绘图
x=0:0.1:2*pi;
y1=sin(x);
y2=cos(x);
plot(y1);
y=[y1',y2'];
plot(y);
plot(x,y1);
plot(x,y1,'b:o');%画蓝色的圆圈
%r红,g绿,b蓝,c青,m紫,k黑,w白,y黄
%-实线,:电线,--虚线,-.点画线
%.实点 o圆圈 x叉号 *星号 s方块 d钻石 v下三角 ^上三角 <左三角 >右三角 p五角星 h六角星
%坐标轴
plot(x,y1);
axis([-1*pi,3*pi,-1.5,1.5]);%规定横纵坐标的范围
%图形修饰
%标签修饰
title=('just soso');
xlabel(title);%x轴标记
%图例设置
legend=('hahaha','location','best');%str顺序与绘图顺序一致,best指图例位置最佳化
%图例保留
plot(x,y1);
hold on;
plot(x,y2);
hold off;
%分割绘制
subplot(2,2,1);%分割为2*2区域,在第一块区域绘图
plot(x,y1);
hold on;
subplot(2,2,2);%分割为2*2区域在,第二块绘制图像
plot(x,y2);
hold off;
%%三维曲线曲面绘制
%三维曲线
x=0:0.1:2*pi;
y=sin(x);z=cos(x);
plot3(x,y,z,'b-*');
%三维曲面
x=-5:0.1:5;%确定x轴的范围
y=-4:0.1:4;%确定y轴的范围
[X,Y]=meshgrid(x,y);%得到x0y的网络面点
z=X.^2+Y.^2;
mesh(X,Y,z);%xy是meshgrid的网络点,z是网络顶点
%三维表面图
x=-5:0.1:5;%确定x轴的范围
y=-4:0.1:4;%确定y轴的范围
[X,Y]=meshgrid(x,y);
z=X.^2+Y.^2;
surf(X,Y,z);%与上面一个类似
%%
%matlab内置函数的内容
%多项式
%创建
p=[1,2,3,4];%系数向量,按x降幂排列,最右边是常数
f1=poly2str(p,'x');%生成好看的字符串f1=x^3+2x^2+3x+4,不被认可的运算式
f2=poly2sym(p);%生成可用的符号函数f1=x^3+2x^2+3x+4
%求值
x=4;
y1=polyval(p,x);%直接将p转化为多项式进行带入求值
%求根
r=roots(p);%可以直接求复数根
p0=poly(r);%由根求系数,转化为系数矩阵
%%
%数据插值0.0
%一维插值
%y1=interp1(x,y,xi,'method')
X=[-3,-1,0,1,3];
Y=[9,1,0,1,9];%x,y已知点横纵坐标向量
y2=interp1(X,Y,2);
y2m=interp1(X,Y,2,'spline');%用spline方法(三次样条)误差预估在x=2的y的值
%二位插值
%zi=interp1(x,y,xi,yi,'method');
%%
%
X=[2,3,9,15,6,7,4];
A=[1,7,2;9,5,3;8,4,6];
B=[1,7,3;9,5,3;8,4,6];
%数据统计
%矩阵最大最小值
y=max(X);%求矩阵的最大值,min为最小值
[y,k]=max(X);%求最大值,k为该值的坐标
[y,k]=max(A,[],2);%A为矩阵,'2'时返回y每一行最大元素构成的列向量
%均值和中值
y=mean(X);%均值
y=median(X);%中值
y=mean(A,2);%'2'时返回y每一行均值构成的列向量;'1'时与上述相同
y=median(A,2);%'2'时返回y每一行均值构成的列向量;'1'时与上述相同
%排序
Y=sort(A,1,'ascend');%sort(矩阵,dim,'method')dim为1按列排序,为2按行排序;ascend为升序排序,descent为降序
[Y,I]=sort(A,1,'ascend');%I保留了元素之前在A的位置
%求和求累加累乘
y=sum(X);%求和
y=prod(X);%求积
y=cumsum(X);%累加
y=cumprod(X);%累乘
%%
%数据计算
%最(极)值
%多元函数在给定初值附近找最小值点
x=fminsearch(fun,x0);
%函数零点
x=fzero(fun,x0);%给定初值x0附近寻找零点
%%
%符号对象创建
%sym函数
P=sin(pi/3);
p=sym(p,'r');%用数值p创建符号变量P;
%syms函数
syms x;
f=x^2+2*x+1;
digits;%显示当前用于计算的精度
digits(16);%改变精度,降低精度可以加快程序运算速度,减少空间占用
a16=vpa(sqrt(2));%用vpa函数可以使用我们保存的精度
a8=vpa(sqrt(2),8);%在vpa这一步控制精度,离开vpa后恢复精度
%%
%符号多项式函数运算
%*符号表达形式与相互转化
%多项式展开整理
g=expand(f);%展开
h=collect(g);%整理
h1=collect(f,x);%按照x整理(降幂)
%因式分解展开质因数
fac=factor(h);
factor(12);%对12分解质因数
%符号多项式向量形式与计算
syms a b c;
n=[a,b,c];
roots(n);%求符号多项式的根
n=[1,2,3];
roots(n);
%反函数
fi=finverse(f,x);
%%
% 符号微积分
limit(f,x,4);%x趋近于4
limit(f,4);%默认变量趋近于4
limit(f);%趋近于零
limit(f,x,4,'left');%左极限
%单变量求导
n=1;
fn=diff(f,x,n);%函数f对x变量的n阶导数
%多元偏导
fxy=diff(f,x,y);%先对x偏导,再对y偏导;
fxyz=diff(f,x,y,z);
%符号积分
int(f,x,1,2);%对函数f从1-2积分
int(f,x);%对x不定积分
%%
%符号方程求解
%一元方程
eqn1=a*x==b;
S=solve(eqn1);
%多元方程
eqn2 =x-y==a;
eqn3=2*x+y==b;
[sx,sy]=solve(eqn2,eqn3,x,y);
[sxn,syn]=solve(eqn2,eqn3,x,y,'ReturnCondition',true);
%非线性fsolve
X=fsolve(fun,x0,optimset(option));%fun函数m文件名,x0求根初值,option选项