Skip to main content
  1. Docs/

Matlab笔记

·8 mins· ·
Owl Dawn
Author
Owl Dawn
Table of Contents

注意
#

  • matlab中所有命令和函数都用小写字母表示

变量
#

  • 变量的存取

    //**********格式1
    S = load('文件名''格式''变量名')      //从内存到硬盘的存储
    save('文件名''格式''变量名')          //从硬盘到内存的存储
    //***********格式2
    load 文件名 变量名
    save 文件名 变量名
    
  • 变量的清除

    clear 变量名;
    clear 变量1 变量2 ;
    clear all           //从内存删除
    ///*******
    delete         //从硬盘删除
    
  • 变量的检查

    who              //显示前面用过的变量
    whos             //显示前面用过的变量及其详细特征
    

数组
#

  • 一维数组(向量)

    a = [1;2;3;4] //生成列向量
    b = [1,2,3,4]  //行向量
    c = [1 2 3 4]  //行向量
    
    • 冒号生成法

      产生递增或递减的等差数列

      格式:初值:步长:终值

      a = 1:2:6    //
      b = 1:6      //步长是1时可以省略
      
    • 定数线性采样法

      用于产生于两点之间的n个数据点

      格式 x = linespace(a,b,n) n的默认值是100

    • 拼接法

      行向量拼接a3 = [a1,a2]用方括号和逗号

      列向量拼接b3 = [b1;b2]用方括号和分号

      向量抽取 a3 = a3(1:2:end)抽取a3中奇数位置的数组成新的数组

    元素的提取用圆括号和索引号a3 = A(3)

  • 二维数组(矩阵)

    • 直接输入法
    • 利用函数创建矩阵
      1. 全一矩阵ones()
      2. 全零矩阵zero()
      3. (0,1)区间均匀分布的随机矩阵rand()
      4. 单位矩阵eye()
      5. 均值为0,方差为一的标准正态随机分布矩阵randn()

    a(i,j)提取i行j列元素

    • 一维数组和子矩阵的获得
      1. 提取第j列的所有元素A(:,j)
      2. 提取第i行的所有元素A(i,:)
      3. 提取第k~k+m列的所有元素A(:,k:k+m)

绘图
#

二维曲线
#

plot(x,y)
#
  1. 当y省略,以x的下标(1,2,3,4..)为行向量,x的值为列向量绘制

  2. 当x为复数向量,以实部和虚部为横纵坐标绘制

  3. x为向量,y为矩阵,

    若y的列数等于x的长度,以x为横坐标,y的每个行向量为纵坐标绘制,曲线条数为y的行数

    若y的行数等于x的长度,则以y的列向量为纵坐标

  4. x,y同型矩阵,以x,y对应列元素为横纵坐标绘制,曲线条数为矩阵列数

  5. plot(x1,y1,x2,y2,...,xn,yn)每个向量对构成一组数据点的横纵坐标

plot(x,y,选项)
#

线型 -实线 :虚线 -.点划线 --双划线

颜色 r g b w k

数据点标记 * 星号 o圆圈 s方块 p五角星 ^朝上三角符

fpolt(f,lims,选项)
#

f为函数,lims为x轴的取值范围,二元行向量,默认[5,5]

辅助操作
#

title(图形标题) 图形标题 如果两行,title({'第一行','第二行'})
xlabel(x轴说明) x轴说明
ylabel(y轴说明) y轴说明
text(x,y,图形说明) 在坐标(x,y)处添加图形说明
legend(图例1,图例2,..) 图例
axis([xmin,xmax,ymin,ymax,zmin,zmax]) 设置坐标轴范围 axis equal横纵坐标采用等长刻度
axis square产生正方形坐标系(默认矩形)
axis auto使用默认设置
axis off取消坐标轴
axis on显示坐标轴
grid 网格边框 grid on
grid off
grid切换
hold 图形保持 hold on
hold off刷新
hold切换两种模式
subplot(m,n,p) 图形窗口分割为m行n列,p指定当前活动区
  • 对数坐标图
    #
    semilogx(x1,y1,选项1,x2,y2,选项2,...)  //x轴为常用对数刻度,y轴保持线性刻度
    semilogy(x1,y1,选项1,x2,y2,选项2,...)
    loglog(x1,y1,选项1,x2,y2,选项2,...)
    
  • 极坐标图
    #
    polar(theta,rho,选项)   //theta极角rho极径,选项同plot
    
  • 统计类
    #
    • 条形图
      #

      bar函数 垂直条形图

      barh函数 水平条形图

      bar(y,style),y为数据,style指定分组排列模式:‘grouped’簇状分组(默认),‘stacked’堆积分组

      bar(x,y,style)x横坐标,y数据

    • 直方图
      #

      hist函数 直角坐标系

      rose函数 极坐标系

      hist(y,x)y为统计数据,x指定区间划分形式,缺省默认按10等分区间

      rose(theta,x)theta向量确定每一区间与圆点角度,x缺省默认按20个等分区间

    • 面积类
      #

      扇形 pie函数 pie(x,explode)x数据,explode控制图块显示模式(缺省时饼图为一个整体)

      面积 area函数

    • 散点类
      #

      scatter函数 散点图

      stairs函数 阶梯图

      stem函数 杆图

    • 矢量类
      #

      compass函数 罗盘图

      feather函数 羽毛图

      quiver函数 箭头图

三维曲线
#

  • plot3函数
    #

    plot3(x,y,z)

  • fplot3函数
    #

    fplot3(funx,funy,funz,tlims)

三维曲面
#

  • 平面网格数据生成
    #
    • 利用矩阵运算生成

      x=2:6;
      y=(3:8)';
      X=ones(size(y))*x;
      Y=y*ones(size(x));
      
    • 利用meshgrid函数生成

      [X,Y]=meshgrid(x,y);
      #x,y为向量X,Y矩阵存储网格点坐标
      
  • 绘制三维曲面的函数
    #
    mesh(x,y,z,c);
    surf(x,y,z,c);
    #x,y为网格坐标矩阵z为网格点上的高度矩阵c指定不同高度的曲面颜色
    

    meshc surfc带等高线

    meshz带底座

    surfl有光照效果

    fsurf(funx,funy,funz,uvlims)

    fmesh(funx,funy,funz,uvlims) uvlims默认为[-5,5,-5,5]

  • 标准三维曲面
    #
    • sphere函数:三维球面[x,y,z]=sphere(n),n决定球面圆滑程度,默认20
    • cylinder函数:三维柱面[x,y,z]=cylinder(R,n)R存放柱面各登剑阁高度上的半径,n个间隔点
    • peaks函数:生成绘图数据矩阵

数据统计分析
#

相关函数
#

prod() 求积
sum() 求和
cumsum() 累加和
cumprod() 累加积
std() 标准差函数 可计算样本标准差或总体标准差
corrcoef() 相关系数函数
sort() 排序 默认升序

多项式计算
#

多项式系数向量次数由高到低

conv(P1,P2) 多项式乘法
[Q,e]=deconv(P1,P2) 多项式除法 Q商式,r余式
polyder() 多项式求导函数
polyval(p,x) 代数多项式求值 点运算
polyvalm(p,x) 矩阵多项式求值 矩阵运算
roots(p) 多项式求根
poly() 已知多项式全部根,建立多项式

数据插值
#

Y1=interp1(X,Y,X1,method)一维插值函数,根据X和Y的值计算X1处的值并储存在Y1中

method
linear 线性插值,默认
nearest 最近点插值 选择最近样本点的值,中点取后一点的值
pchip 分段3次埃尔米特插值
spline 3次样条插值

Z1=interp2(X,Y,Z,X1,Y1,method)二维插值函数,不支持pchip

曲线拟合
#

poltfit()建立多项式函数去逼近样本数据(求得最小二乘拟合多项式的系数)

微积分与方程求解
#

数值微分与数值积分
#

向前差分函数 diff()

数值积分[l,n]=quad(filename,a,b,tol,trace)quadl

filename被积函数名,[a,b]积分限必须有限,不能无穷大,tol控制积分精度,默认10^-6^,trace控制是否展现积分过程,默认0不展现,l定积分的值,n为被积函数调用次数

l=integral(filename,a,b)基于全局自适应积分方法

[l,err]=quadgk(filename,a,b)基于高斯-克朗罗德方法

err返回急死误差范围,积分上下限可以是无穷大,也可以是复数

l=trapz(x,y)基于梯形积分法,向量x,y定义函数关系,积分限x1到xn

integtal2 quad2d dblquad二重积分

integral3 triplequad三重积分

符号计算
#

符号对象
#

符号计算结果为精确的数学表达式,数值计算是一个数值

evls 将符号转化为数值

sym 建立单个符号变量

syms 建立多个符号变量

assume 对符号对象设置值域

  • assume(condition) 指定变量满足条件conditon

  • assume(expr,set) 指定表达式expr属于集合set

    syms x;
    assume(x,'positive');
    abs(x)==x         #x为正数,所以abs(x)的值为x
    

关系运算

< lt() <= le() > gt() >= ge() == eq() ~= ne()

逻辑运算

& | ~ and(a,b) or(a,b) not(a) xor(a,b)

因式分解与展开运算

  • factor(s) 对符号表达式x分解因式
  • expand(s) 对符号表达式s进行展开
  • collect(s) 对符号表达式s合并同类项
  • collect(s,v) 对符号表达式s按变量v合并同类项

其他运算

提取有理分式的分子分母 [n,d]=numden(s)

提取符号表达式的系数 c=coeffs(s,x)

符号表达式化简 simplify(s)

符号多项式转化为多项式系数向量 p=sym2poly(s)

相反 s=polu2sym(p)

查找符号表达式中的符号变量 symvar(s,n)返回表达式s中的n个符号变量,可用symvar(x,1)查找表达式s的主变量

符号微积分
#

limit(f,x,a)求函数f关于变量x在a点的极限

limit(f,x,a,‘right’)求单边极限

diff(f,x,n)求函数f关于变量x的n阶导数,n默认1

int(f,x)求函数f对变量x的不定积分

int(f,x,a,b)定积分,a,b表上下限,inf返回广义积分

级数
#

symsum(s,v,n,m)无穷级数求和,s表级数通项,v是求和变量,省略时使用系统默认变量,n,m为v的初值和末值

taylor(f,v,a,Name,Value)将函数f按变量v在a点展开泰勒级数,a默认为0,Name和Value为选项名和选项值,成对使用

Name
'ExpansionPoint' 指定展开点,对应值可为标量或向量 未设置为0
'Order' 指定截断参数,对应值为一个正整数 未设置,截断参数为6,即展开式最高阶为5
'OrderMode' 采用绝对阶或相对阶,对应值为'Absolute''Relative' 未设置取绝对阶

符号方程
#

solve(s,v)求解符号表达式s的代数方程,求解变量v,省略取默认

solve(s1,s2,...,sn,v1,v2,...,vn)

求解结果不一定准确

常微分方程符号求解

D表示导数,D2y表示y’’,Dy(0)=5表示y’(0)=5

dsolve(e,c,v)求解常微分方程e在初值条件c下的特解,若没有给出c则求通解

dsolve(e1,e2,...,en,c1,c2,...,cn,v)

Simulink #

s函数
#

模版文件sfuntmpl.m

  • 主函数
    #

    function [sys,x0,str,ts] = fname(t,x,u,flag)

    • fname是s函数的函数名
    • t,x,u,flag为仿真时间,状态向量,输入向量和子函数调用标志
    • 输出形参sys代表一种返回参数;x0是初始状态值;对于M文件S函数,str将被置成一个空阵;ts是一个两列矩阵(一列是个状态变量的采样周期,另一列为相应的采样时间的偏移量)(对连续系统,采样周期和偏移量都应为0,采样周期为-1,则继承输入信号的采样周期)
  • 子函数

    共6个,前缀mdl,由flag值控制仿真各阶段调用哪一个

    flag
    0 调用子函数mdlInitializeSizes 初始化子函数
    1 调用子函数mdlSerivatives 实现连续状态的更新
    2 调用mdlUpdate 实现离散状态的更新
    3 mdlOutputs 输出子函数

Related

C/CPP 笔记
·30 mins
MySQL 笔记
·25 mins
Redis 笔记
·9 mins
操作系统笔记
·45 mins
算法笔记
·5 mins
计算机网络笔记
·37 mins