matlab 订阅
MATLAB是美国MathWorks公司出品的商业数学软件,用于数据分析、无线通信、深度学习、图像处理与计算机视觉、信号处理、量化金融与风险管理、机器人,控制系统等领域。 [1]  MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室),软件主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式。 [1]  MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等。MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。 展开全文
MATLAB是美国MathWorks公司出品的商业数学软件,用于数据分析、无线通信、深度学习、图像处理与计算机视觉、信号处理、量化金融与风险管理、机器人,控制系统等领域。 [1]  MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室),软件主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式。 [1]  MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等。MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。
信息
开发商
MathWorks.Inc [2]
软件授权
MathWorks.Inc
软件名称
MATLAB
更新时间
2020-06-11
软件版本
R2020a [3]
软件平台
Windows/MacOS/Linux等
软件语言
C
软件大小
216.77M
MATLAB功能特性
·MATLAB®: MATLAB 语言的单元测试框架   ·Trading Toolbox™: 一款用于访问价格并将订单发送到交易系统的新产品  ·Financial Instruments Toolbox™: 赫尔-怀特、线性高斯和 LIBOR 市场模型的校准和 Monte Carlo 仿真  ·Image Processing Toolbox™: 使用有效轮廓进行图像分割、对 10 个函数实现 C 代码生成,对 11 个函数使用 GPU 加速  ·Image Acquisition Toolbox™: 提供了用于采集图像、深度图和框架数据的 Kinect® for Windows®传感器支持  ·Statistics Toolbox™: 用于二进制分类的支持向量机 (SVM)、用于缺失数据的 PCA 算法和 Anderson-Darling 拟合优度检验  ·Data Acquisition Toolbox™: 为 Digilent Analog Discovery Design Kit 提供了支持包  ·Vehicle Network Toolbox™: 为访问 CAN 总线上的 ECU 提供 XCPSimulink 产品系列重要功能  ·Simulink®: Simulation Performance Advisor,链接库模块的封装,以及通过逻辑表达式控制有效变量  ·Simulink: 除 LEGO® MINDSTORMS® NXT、Arduino®、Pandaboard 和 Beagleboard 外,还为 Raspberry Pi™ 和 Gumstix® Overo® 硬件提供了内置支持  ·SimRF™: 针对快速仿真和模型加载时间的电路包络求解器  ·SimMechanics™: 发布了用于从 CAD 和其他系统导入模型的 XML 架构  ·Simulink Design Verifier™: 数组超出边界检查  MATLAB 和 Simulink 的系统工具箱  ·Communications System Toolbo Sphere 解码器和 Constellation 框图系统对象  ·Computer Vision System Toolbox™: 相机标定,立体视觉,Viola-Jones 对象检测培训,FREAK 特征提取和其他新函数  ·DSPSystem Toolbox™: 频谱分析仪和逻辑分析示波器,以及时域示波器的触发·Phased Array System Toolbox™: 极化支持、数组锥化以及针对传感器数组分析、波形分析和雷达方程计算的应用程序代码生成和实现  ·Simulink Coder™: 减少了从 Stateflow® 调用的 Simulink 函数的数据副本  ·Fixed-Point Designer™: 一款结合了 Fixed-Point Toolbox™ 和 Simulink Fixed Point™ 功能的新产品  ·HDL Verifier™: 从 MATLAB 生成 HDL 测试工作台
收起全文
精华内容
参与话题
问答
  • MATLAB(一)——软件及基本操作介绍

    万次阅读 多人点赞 2018-04-30 19:00:30
    一、MATLAB软件介绍 1.matlab的界面 左上角,home标签下,找到layout进行设置/复位,可以设置各板块的显示与隐藏。其中有几个部分,请务必要显示①Current Folder:中文一般翻译成工作路径,一般设置成一个自己...

    一、MATLAB软件介绍

    1.matlab的界面

     左上角,home标签下,找到layout进行设置/复位,可以设置各板块的显示与隐藏。其中有几个部分,请务必要显示
    ①Current Folder:中文一般翻译成工作路径,一般设置成一个自己建立的、有读写权限的文件夹,例如我的文档下建立一个matlab文件夹
    ②Command Window:字面意思是命令窗口,用来运行代码,所有的代码都是在这里输入

    ③Workspace:字面意思是工作空间,其实就是暂存所有运行结果的地方,“暂”的具体含义是:关闭matlab后丢失

    2.软件中的基本概念

    2.1 函数

     

        matlab之所以强大,就是因为提供大量的函数,你也可以建立自定义函数,方法是:Home->New->function。自定义函数一般保存在工作路径下。函数文件的特征是:扩展名m,内容的第一行以function开头,后续内容是“输出变量=函数名(输入变量)”。且函数名和文件名相同。
        每个函数在Command Window中运行,用来完成特定的计算任务,运行方式是输入“输出变量=函数名(输入变量)”,然后按回车。例如有个系统自带的函数是用来求绝对值的,函数名abs,所以在Command Window里输入“a=abs(-1)”,就会显示运算结果为“a=1”。且运算结果会在Workspace里出现一个变量a,双击后可看到a的值是1。

     

    2.2 脚本

        可以理解为特殊的函数,这种函数内容的开头没有function那行,因此没有输入、输出变量,也没有函数名。文件扩展名和函数一样是m,也需要在Command Window里运行。脚本都是用户建立的,方法是:Home->New Script。一般保存在工作路径下。脚本的功能就是完成用户需要的、复杂的计算任务,通常脚本里会调用很多函数。

    2.3 GUI

     

        一般翻译为界面,就是人机交互界面的意思。写脚本处理问题的方法有点麻烦,让人看起来更像是码农,所以现在很多问题可以通过界面点点鼠标解决。这时候就需要打开界面,打开方法是:在APPS标签里可以找到所有已安装的GUI工具,单击即可。注意右边有个小三角可以点开。和函数一样,用户也可以自己建立自定义GUI,这部分较为复杂,对新手而言有点遥远。

     

    2.4 toolbox

     

        一般翻译成工具箱,matlab将功能相近或者应用上自成体系的一组函数和GUI打包成一个toolbox。正版的matlab在购买时,几乎每一个toolbox都是要单独收费的,所以toolbox也可以理解为matlab产品的模块,一个工具箱就是一个产品/商品。

     

    2.5 simulink

     

        一般用matlab解决问题的过程是:用户自定义脚本,在Command Window里运行脚本。而脚本的运行逻辑是顺序执行,和一般的编程一样。simulink则提供另一种思路,图形化编程,有点像labview,这种方法很适合于物理模型的仿真,因此有时用“matlab编程”和“simulink仿真”强调。使用方法是在home标签下点击simulink。

     

    3.获得帮助

     

        常用的获得帮助有四种方法

     

    右上角home标签里,有个Help标志,点开后可以获得各工具箱/产品的完整帮助文档。新版本中默认使用在线,改用本地帮助的办法是在home标签里,Preferences下的matlab/Help里选择installed locally

     

    cn.mathworks.com官网上找到支持,然后可以获得教程。这种方法获得的帮助文档和第一种方法一样。
    在Command Window里输入 doc+函数名 来获得帮助。比如输入"doc fft"可以获得离散傅里叶变换函数fft的帮助和范例。这种方法获得的文档是前两种方法文档中的部分。当然,前提是你要知道函数名,才能找到帮助。这种方法适合于获得系统自带函数的使用说明。
    使用GUI时,通常界面的角落里有Help,点开可以获得帮助。这种方法获得的文档是第一和第二种方法文档中的部分。这种方法适合于获得系统自带GUI的使用说明。
        这几种方法中,最常用的是第三种,只要知道自己需要的函数名,就可以用这种方式获得说明和范例。而实际使用中,一般常用的系统自带函数,也并不是非常多,大概几十个?真正需要牢记使用方法的可能就几个,通常都是知道函数名,要用的时候doc一下。

     

    二、命令窗口的基本配置

    1、format命令

    进行数据类型转换,行间距调节等功能时,用

            format + 关键词 回车

    eg:format long 回车   //将数据变为长整型

            format compat/loose 回车  //调节行间距紧密/松散

    2、clc命令  

        清屏。即清理当前屏幕上的内容,屏幕上没有了,但保留在内存中了

    3、clear命令 

        删除某一变量,或清空工作区

        clear + 变量名 回车

        eg:clear a 回车  //删除工作区中的a变量

                clear或者clear all //清空工作区。建议在刚打开matlab窗口时先清空一下工作区。

    4、whos命令  

        查看某变量详细信息

       4.1  whos 回车  //查看所有变量信息

       4.2 whos + 变量名 回车 // 查看该变量详细信息

        eg:whos a 回车

    5、x/ylable命令  //给xy轴加横纵坐标说明

        eg:xlable (‘x轴’) 回车

    6、disp()  //屏幕输出函数,类似于c语言中的printf()函数

     

        disp函数直接将内容输出在Matlab命令窗口中,关键是看disp函数怎么把字符和数字在一起进行显示。

        disp(X)函数只有一个输入,当你有多个字符串作为输入时就会报错。

    例如:

        disp('Alice is ' , num2str(12) , ' years old!' );

    就会报错--输入参数过多。

        但是将里边的内容用中括号一括就成了一个字符串,

    例如:

        str=['Alice is ' num2str(12) ' years old!'];

        disp(str);

    上边这句话也就等价于:

        disp=(['Alice is ' num2str(12) ' years old!']);

    这就是加中括号的原因,而不是因为num2str(),

        因为disp(num2str(12));也是正确的,因为里边就只有一个字符串。

    7、zeros函数 //创建一个全为零元素的数组

    1、B = zeros(n)  返回一个n x n的零矩阵.如果n不是一个标量,将抛出错误。
    2、B = zeros(m,n) or B = zeros([m n])  返回一个m x n的零矩阵。
    3、B = zeros(d1,d2,d3...) or B = zeros([d1 d2 d3...]) 返回一个d1-by-d2-by-d3-by-... .的零元素数组。
    4、B = zeros(size(A))  返回一个和A一样大小的零数组。
    5、zeros(m, n,...,classname) or zeros([m,n,...]  返回一个类型为classname的m x n x...零数组。classname可以是下面一些值:double', 'single', 'int8', 'uint8', 'int16', 'uint16', 'int32', or 'uint32'
    示例
        x = zeros(2,3,'int8');
    备注
        MATLAB语言 没有一个 维度 声明 ; MATLAB 自动为矩阵分配存储空间。 然而,对于大型矩阵 , MATLAB程序可能会执行得更快 ,如果零函数用于设置一个矩阵,其元素将产生一次 , 或行或列的时间预留存储空间。例如
    
    2、B = zeros(m,n) or B = zeros([m n])  返回一个m x n的零矩阵。
    3、B = zeros(d1,d2,d3...) or B = zeros([d1 d2 d3...]) 返回一个d1-by-d2-by-d3-by-... .的零元素数组。
    4、B = zeros(size(A))  返回一个和A一样大小的零数组。
    5、zeros(m, n,...,classname) or zeros([m,n,...]  返回一个类型为classname的m x n x...零数组。classname可以是下面一些值:double', 'single', 'int8', 'uint8', 'int16', 'uint16', 'int32', or 'uint32'
    示例
        x = zeros(2,3,'int8');
    备注
        MATLAB语言 没有一个 维度 声明 ; MATLAB 自动为矩阵分配存储空间。 然而,对于大型矩阵 , MATLAB程序可能会执行得更快 ,如果零函数用于设置一个矩阵,其元素将产生一次 , 或行或列的时间预留存储空间。例如
    
        x = zeros(1,n); 
        for i = 1:n
        x(i) = i; 
        end

     

     

     

     

     

     

     

    展开全文
  • MATLAB零基础入门教程

    万人学习 2019-05-12 18:47:12
    MATLAB零基础入门教程,主要介绍数组和矩阵、数据类型和M文件设计等。很详细地介绍了MATLAB语言的基础知识。 本课程的特点是内容系统全面,条理清晰,并且内容比较新,讲了表、时间表等新的数据类型。
  • MATLAB基础入门课程

    万人学习 2017-09-13 09:30:14
    MATLAB基础入门课程,系统介绍MATLAB的基础知识。 主要从数组、运算、结构和绘图等几方面进行讲解 简单易懂,轻松入门MATLAB
  • Matlab小白入门必备教程

    千人学习 2019-12-30 15:27:30
    MATLAB 是一种用于算法开发、数据可视化、数据分析以及数值计算的高级计算语言和交互式环境,本课程将深入浅出讲解 MATLAB 的基本操作、MATLAB 编程和绘图等。          
  • MATLAB R2018a 于16日正式发布,其中包含一系列 MATLAB/Simulink 的新功能和新产品,还包括 94 个其他产品的更新和修补程序。 解压密码:CSDN 其他说明见:https://www.52pojie.cn/thread-713048-1-1.html
  • matlab经典题目

    2018-07-23 17:47:46
    matlab经典题目,老师上课的时候给的,后续再发具体程序。matlab经典题目,老师上课的时候给的,后续再发具体程序。matlab经典题目,老师上课的时候给的,后续再发具体程序。
  • 入坑MATLAB必会的吐血总结

    千次阅读 多人点赞 2019-04-23 09:39:00
    本渣想回过头来整理一下MATLAB的一些基本的知识(很多东西比较琐碎,应该系统的梳理梳理),下文中没有提到的,自己用help查即可。  此文用来存个档,便于回顾。  由于matlab各版本部分语法存在差异,可能会出现...

      本渣想回过头来整理一下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(空格)文件名

    一、线性代数

      矩阵

      基本命令:

    • A的转置——A'
    • A的行列式——det(A)
    • 矩阵A的秩——rank(A)
    • A的逆矩阵——inv(A)
    • A的n次幂——A^n
    • 矩阵A和B里的元素相乘——A .* B
    • 选择A的第i行生成一个行向量——ai=A(i,:)
    • 选择A的第j列生成一个列向量——aj=A(:,j)
    • 生成n阶零矩阵——zeros(n)
    • 生成n阶单位矩阵——eye(n)
    • 两个向量的内积——a1 * a2'

     

    其他命令:

    • 存储工作空间变量——save  文件名  变量名
    • 查询函数的用法——help  函数名
    • 列出所有变量的详细资料——whos
    • 演示程序demo——demo

     

    特殊矩阵:

    • 全一矩阵——y = ones(n)      y = ones(m,n)
    • 均匀分布随机矩阵——y = rand(n)      y = rand(m,n)
    • 正态分布随机矩阵——y = randn(n)    y = randn(m,n)
    • 线性等分向量——y = linspace(a,b)    默认100等分    %n等分: y = linspace(a,b,n)
    • 对数等分向量——y = logspace(a,b)   默认50等分      %n等分:y = logspace(a,b,n)
    • 矩阵A中元素的个数——n = numel(A)
    • 以输入元素为对角线元素的矩阵——out = blkdiag(a,b,c...)
    • n阶Hadamard矩阵——H = hadamard(n)
    • Hankel矩阵——H = hankel(c)   第一列元素为c,反三角以下元素为0
    • n阶Hilbert矩阵——H = hilb(n)         H(i,j) = 1/(i+j-1)
    • n阶逆Hilbert矩阵——H = invhilb(n)
    • n阶魔方矩阵——M = magic(n)

     

    向量的范数——n = norm(X)  具体help查询     

    矩阵的范数——n = norm(A)  具体help查询

     

    其他运算:

    • 矩阵A的特征值——D = eig(A)
    • 特征向量矩阵X和特征值组成的对角阵D——[X,D] = eig(A)
    • 将非奇异矩阵A正交化为Q——Q = orth(A)      (Q' * Q = 单位矩阵)
    • 由已定义的矩阵A,E,O,A作为矩阵的子块,生成矩阵B——B = [A,E;O,A]
    • 矩阵A的列向量组的极大线性无关组——rref(A)
    • 条件数——c = cond(A)   默认为2条件数             p条件数:c = cond(A,p)

    数学定义为矩阵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);

     

      MATLAB的程序结构

      设计一段程序,分别用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)

    %while循环
    clear;
    s=0;
    k=1;
    while k<101
        s=s+k;
        k=k+1;
    end
    s

    %编写函数
    function y=fsy42(x)
    if x>0
        y=x*x
    else
        y=x*x*x
    end
    %以文件名fsy42.m保存在磁盘上,接着编写程序:
    fplot(@fsy42,[-4,4])

      switch以及一些像break、return、continue之类的程序流程控制语句,过于easy,请自行查询。

    补充实例:

    %算N9
    clear;
    s=0;
    k=1;
    while(s<=9)
        s=s+1/k;
        k=k+1;
    end
    N9=k-1
    %算N20
    clear;
    s=0;
    k=1;
    while(s<=20)
        s=s+1/k;
        k=k+1;
    end
    N20=k-1

    clear;
    k=0;
    s=0;
    while(k<10)
       n=input('请输入数字:');
       if(n>10)
           s=s+n;
       end
       k=k+1;
    end
    s
    num=sqrt(s)

     

     

    二、微积分

      1.极限和微分

    函数类别 MATLAB函数
    幂函数 x^a || sqrt(x)
    指数函数 a^x || exp(x)
    对数函数 log(x)【即lnx】 || log2(x) || log10(x)
    三角函数 sin(x) || cos(x) || tan(x) || cot(x) || sec(x) || csc(x)
    反三角函数 asin(x) || acos(x) || atan(x) || acot(x) || asec(x) || acsc(x)
    绝对值函数 abs(x)

     

     

      

     

     

     

     

     

        求极限(摘自MATLAB2018说明文档):

    >> help limit
    --- sym/limit 的帮助 ---
    
     limit    Limit of an expression.
        limit(F,x,a) takes the limit of the symbolic expression F as x -> a.
        limit(F,a) uses symvar(F) as the independent variable.
        limit(F) uses a = 0 as the limit point.
        limit(F,x,a,'right') or limit(F,x,a,'left') specify the direction
        of a one-sided limit.
     
        Examples:
          syms x a t h;
     
          limit(sin(x)/x)                 returns   1
          limit((x-2)/(x^2-4),2)          returns   1/4
          limit((1+2*t/x)^(3*x),x,inf)    returns   exp(6*t)
          limit(1/x,x,0,'right')          returns   inf
          limit(1/x,x,0,'left')           returns   -inf
          limit((sin(x+h)-sin(x))/h,h,0)  returns   cos(x)
          v = [(1 + a/x)^x, exp(-x)];
          limit(v,x,inf,'left')           returns   [exp(a),  0]

        求导(摘自MATLAB2018说明文档):

    >> help diff
    diff - Differences and Approximate Derivatives
    
        This MATLAB function calculates differences between adjacent elements of X along
        the first array dimension whose size does not equal 1:
    
        Y = diff(X)
        Y = diff(X,n)
        Y = diff(X,n,dim)

     补充:pretty函数可以使它作用的表达式更符合数学上的书写习惯。

    >> help pretty
    --- sym/pretty 的帮助 ---
    
     pretty Pretty print a symbolic expression.
        pretty is not recommended. Use live scripts instead. 
        Live scripts provide full math rendering while pretty uses plain-text formatting.
     
        pretty(S) prints the symbolic expression S in a format that 
        resembles type-set mathematics.

     

      2.不定积分与定积分

      计算函数fun关于默认变量的不定积分:int(fun)

      计算函数fun关于变量x的不定积分:int(fun,x)

      计算函数fun关于变量x从a到b的定积分:int(fun,x,a,b)

    如果因为版本更新等原因导致语法错误,请参照说明文档。

     例子:

    clear
    syms x a b c
    I1=int(sin(a*x)*sin(b*x)*sin(c*x),x)
    I2=int(x*exp(x)/(1+x)^2,x,0,1)

    clear
    syms t
    y=exp(-t^2)
    F=int(y,t,0,x^2)
    int(x^2*diff(F,x),x,-2,3)

    clear
    syms x I1
    =int(1+x^2,x,-1,0)+int(exp(-x),x,0,1) eval(I1) %用于评估由表达式表示的matlab代码 I2=quad(@sy3_9f,-1,1) 其中sy3_9f.m如下: function y=sy3_9f(x) if x<=0 y=1+x.^2; %系统自动把变量换成向量,故用 .* ./ .^ 这些。而且,凡是维数不匹配,就有可能是把变量作为向量了 else y=exp(-x); end
    %如果被积函数是一个分段函数,则需要以分段点为界分开积分

      为什么要用quad?

      并非所有的积分都可以用 int() 来完成运算,函数 int() 完成的是符号运算,而不是数值运算,因此,当积分不存在初等形式的原函数时,函数 int() 便不能完成积分运算。

      而 quad() 函数用于计算函数的数值积分

     

      3.二次曲面

    • 椭球面

      直角坐标方程:

      参数方程:x=asinθcosφy=bsinθsinφz=ccosθ   (0≤θ≤π, 0≤φ<2π)

      程序:

    clear
    k=5;
    n=2^k-1;
    [x,y,z]=ellipsoid(0,0,0,5,4,3,n)   %ellipsoid——椭圆
    mesh(x,y,z);
    colormap(gray);
    axis equal
    
    %或者用参数方程(推荐)
    clear
    ezmesh('5*sin(a)*cos(b)','4*sin(a)*sin(b)','3*cos(a)',[0,pi],[0,2*pi])
    axis equal

      图形:

      

    • 球面

      直角坐标方程:

      参数方程:x=Rsinθcosφy=Rsinθsinφz=Rcosθ   (0≤θ≤π, 0≤φ<2π)

      程序:

    clear
    k=5;
    n=2^k-1;
    [x,y,z]=sphere(n)  
    mesh(x,y,z);
    colormap(gray);
    axis equal
    
    %或者用参数方程(推荐)
    clear
    ezmesh('5*sin(a)*cos(b)','5*sin(a)*sin(b)','5*cos(a)',[0,pi],[0,2*pi])
    axis equal

      图形:

      

    • 抛物面

      椭圆抛物面

      直角坐标方程:

      参数方程:x=avcosφy=bvsinφz=v²   (0≤v≤+, 0≤φ<2π)

      程序:

    ezmesh('2*u*cos(v)','3*u*sin(v)','4*u*u',[0,1],[0,2*pi])
    axis equal

      图形:

       

      双曲抛物面

      直角坐标方程:

      参数方程:x=a(u+v)y=b(u-v)z=4uv   

            或者:x=auy=bvz=u²-v²         (-≤u≤+, -≤v≤+)

      程序:

    clear
    x=-2:0.01:2;
    y=-3:0.1:3;
    [X,Y]=meshgrid(x,y);
    Z=X.*X/2-Y.*Y/3;
    mesh(X,Y,Z)

      图形:

      

    • 双曲面

      单叶双曲面

      直角坐标方程:

      参数方程:x=a*secu*cosvy=b*secu*sinvz=c*tanu     (-≤u≤+∞, 0≤v≤2π)

      程序:

    ezmesh('2*sec(u)*cos(v)','3*sec(u)*sin(v)','2*tan(u)',[-4,4],[0,2*pi])
    axis equal
    title('ezmesh作的单叶双曲面')

      图形:

       

      双叶双曲面

      直角坐标方程:

      参数方程:x=a*tanu*cosvy=b*tanu*sinvz=c*secu    (-≤u≤+, 0≤v≤2π)

      程序:

    ezmesh('2*tan(u)*cos(v)','3*tan(u)*sin(v)','2*sec(u)',[-4,4],[0,2*pi])
    axis equal
    title('ezmesh作的双叶双曲面')

      图形:

      

    • 椭圆锥面

      直角坐标方程:

      参数方程:x=avcosφy=bvsinφz=cv   ( 0≤φ<2π,-≤v≤+)

      程序:

    ezmesh('2*u*cos(v)','3*u*sin(v)','2*u',[-4,4],[0,2*pi])
    axis equal
    title('ezmesh作的椭圆锥面')

      图形:

       

    • 椭圆柱面

      直角坐标方程:

      参数方程:x=acosuy=bsinuz=v   ( 0≤φ<2π,-≤v≤+)

      程序:

    x1='3*cos(u)';
    y1='2*sin(u)';
    z1='v';
    ezmesh(x1,y1,z1,[0,2*pi,0,4]);
    axis square

      图形:

       

     

      4.二重积分

      直角坐标

     

    %第一问
    syms x y
    f=x/(1+x*y);
    int(int(f,y,0,1),x,0,1)  
    %第二问
    %求交点
    clear
    syms x y
    [x,y]=solve(y==x*x+1,y==2*x,x,y) %在2018里这样,有些版本是加引号和单等号
    %积分
    clear
    syms x y
    f=x/(y+1);
    int(int(f,y,2*x,x*x+1),x,0,1)
    %第三问
    clear
    syms x y
    f=1-x-y;
    int(int(f,y,0,1-x),x,0,1)

      极坐标

      

    %第一问
    clear
    syms r f
    int(int(r*r*r,r,0,sqrt(2)),f,0,pi/2)
    %第二问
    clear
    syms r f
    int(int(1,r,0,sec(f)*tan(f)),f,0,pi/4)

    %三叶玫瑰线的一叶
    clear
    syms r f
    int(int(r,r,0,cos(3*f)),f,-pi/6,pi/6)
    %心脏线
    clear
    syms r f
    int(int(r,r,0,1-sin(f)),f,0,2*pi)

     

      5.三重积分

       直角坐标

      

      

    clear
    syms z r s
    A=int(int(int(z*r,z,r*r,2),r,0,sqrt(2)),s,0,2*pi)-int(int(int(z*r,z,r*r,1),r,0,sqrt(1)),s,0,2*pi)

       柱面坐标

      

      

    clear
    syms z r s
    int(int(int(z*r,z,r*r,sqrt(2-r*r)),r,0,1),s,0,2*pi)

       球坐标

      

      

    clear
    syms r f g
    int(int(int(r*r*r*r*sin(g),r,0,1),g,0,pi),f,0,2*pi)

     

      6.对弧长的曲线积分

       

    %第一问
    clear
    syms x y t
    x=t;
    y=2/3*sqrt(2*t*t*t);
    z=1/2*t*t;
    dx=diff(x,t);
    dy=diff(y,t);
    dz=diff(z,t);
    ds=sqrt(dx^2+dy^2+dz^2);
    f=x*y*exp(x*y);
    int(f*ds,t,0,1)
    %第二问
    clear
    syms x y t a
    x=a*(t-sin(t));
    y=a*(1-cos(t));
    dx=diff(x,t);
    dy=diff(y,t);
    ds=sqrt(dx^2+dy^2);
    f=y*y;
    int(f*ds,t,0,2)

     

      7.对坐标的曲线积分

       

    %第一问
    clear
    syms x y a t
    x=a*(t-sin(t));
    y=a*(1-cos(t));
    dx=diff(x);
    dy=diff(y);
    int((2*a-y)*dx+dy,t,0,2*pi)
    
    %第二问
    clear
    syms x y z t a
    x=exp(t);
    y=exp(-t);
    z=a*t;
    dx=diff(x);
    dy=diff(y);
    dz=diff(z);
    int(y*dx-x*dy+(x*x+y*y)*dz,t,0,1)

     

      8.对面积的曲面积分

      

    %1 
    clear
    syms x y z
    z=2-(x*x+y*y);
    dzx=diff(z,x);
    dzy=diff(z,y);
    f1=1;
    f2=x*x+y*y;
    ds=sqrt(1+dzx^2+dzy^2);
    I1=int(int(f1*ds,x,0,sqrt(2)),y,0,sqrt(2))
    I2=int(int(f2*ds,x,0,sqrt(2)),y,0,sqrt(2))
    
    %2
    clear
    syms x y z
    z=4-2*x-4*y/3;
    dzx=diff(z,x);
    dzy=diff(z,y);
    ds=sqrt(1+dzx^2+dzy^2);
    I=int(int(4*ds,y,0,(6-3*x)/2),x,0,2)

     

      9.对坐标的曲面积分

      

    %第一问
    clear
    syms x y z R r sita
    x=r*sin(sita);
    y=r*cos(sita);
    z=-sqrt(R*R-x*x-y*y);
    int(int(x*x*y*y*z*r,r,0,R),sita,0,2*pi) 
    %第二问
    clear
    syms x y z
    I1=int(int(sqrt(1-y*y),y,0,1),z,0,3);
    I2=int(int(sqrt(1-x*x),x,0,1),z,0,3);
    I=I1+I2

     

      10.级数

      常数项级数与审敛

    help symsum
    --- sym/symsum 的帮助 ---
    
     symsum Symbolic summation.
        symsum(f) evaluates the sum of a series, where expression f defines the
        terms of a series, with respect to the default symbolic variable 
        defaultVar determined by symvar. The value of the default variable 
        changes from 0 to defaultVar - 1. If f is a constant, the summation is
        with respect to 'x'.
     
        symsum(f,x) evaluates the sum of a series, where expression f defines 
        the terms of a series, with respect to the symbolic variable x. The 
        value of the variable x changes from 0 to x - 1.
     
        symsum(f,a,b) evaluates the sum of a series, where expression f defines
        the terms of a series, with respect to the default symbolic variable 
        defaultVar determined by symvar. The value of the default variable 
        changes from a to b. Specifying the range from a to b can also be done
        using a row or column vector with two elements, i.e., valid calls are
        also symsum(f,[a,b]) or symsum(f,[a b]) and symsum(f,[a;b]).
      
        symsum(f,x,a,b) evaluates the sum of a series, where expression f 
        defines the terms of a series, with respect to the symbolic variable x.
        The value of the variable x changes from a to b. Specifying the range
        from a to b can also be done using a row or column vector with two
        elements, i.e., valid calls are also symsum(f,x,[a,b]) or 
        symsum(f,x,[a b]) and symsum(f,x,[a;b]). 

    clear
    syms n
    f1=(n-1)/(n*2^n);
    f2=n*n*n/(3^n);
    I1=symsum(f1,n,1,inf)
    I2=symsum(f2,n,1,inf)

     

      Taylor展开

      taylor(function,x(变量),a(展开点,缺省时为麦克劳林级数),'Order',n(展开项数))    %详细资料help

      

    clear
    syms x n
    taylor(cos(x),x,pi/3,'Order',10)

     

      11.傅里叶级数

       

      

    %第1问
    clear
    syms x
    f=x*x*x+x*x;
    a0=int(f,x,-pi,pi)/pi;
    an=int(f*cos(5*x),x,-pi,pi)/pi
    bn=int(f*sin(5*x),x,-pi,pi)/pi
    
    %第2问   matlab2018死活不行 但是2016可以 这软件......
    function [a0,a,b]=myfly(f,n)
    a0=fourieran(f,0);
    for i=1:n
        a(i)=fourieran(f,i);
    end
    for i=1:n
        b(i)=fourierbn(f,i);
    end
    
    %fourieran.m
    function an=fourieran(f,n)
    syms x
    an=int(f*cos(n*x),x,-pi,pi)/pi;
    %fourierbn.m
    function bn=fourierbn(f,n)
    syms x
    bn=int(f*sin(n*x),x,-pi,pi)/pi;

     

     

      12.微分方程和微分方程组

       X=dsolve(‘eqn1’,'eqn2',...),如果没有初值条件,求出通解,如果有初值条件,求出特解。

      

    %第1问
    clear
    dsolve('Dy=8-3*y','y(0)=2')
    %第2问
    clear
    dsolve('(1+x*x)*D2y=2*x*Dy','y(0)=1','Dy(0)=3')
    %第3问
    clear
    dsolve('D4y-2*D3y+D2y=0','x')
    %第4问
    clear
    dsolve('2*Dx+4*x+Dy-y=exp(t),Dx+3*x+y=0','x(0)=3/2','y(0)=0')

     

     

    三、概率统计

      1.概率统计函数

      M件产品,K件次品,抽取N件,N件中x件次品。

      计算超几何分布的累计概率:            P=hygecdf(x,M,K,N)           %不多于x件次品          

      计算超几何分布的概率密度分布:     Px=hygepdf(x,M,K,N)         %恰好x件次品

      逆累积分布计算:                              X=hygeinv(p,M,K,N)           %逆累积

      产生超几何分布随机数:                   P=hygernd(M,K,N,m,n)     %产生m行n列的符合超几何分布的随机数

      例子:

     

     

      常用分布函数的字头:

    分布 函数字头   
    二项分布 bino
    几何分布 geo
    超几何分布 hyge
    泊松分布 poiss
    均匀分布 unif
    离散均匀分布 unid
    指数分布 exp
    正态分布 norm
    T分布 t
    F分布 f
    β分布 beta
    γ分布 gam

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

       函数字头与pdf、cdf、inv、rnd组合就能得到相应的函数,具体用法help。

     

      计算数学期望和方差

    分布名 计算命令  
    二项分布  [E,D]=binostat(N,P)
    超几何分布  [E,D]=hygestat(M,K,N) 
    泊松分布  [E,D]=poisstat(Lambda)
    均匀分布  [E,D]=unifstat(A,B)
    指数分布  [E,D]=expstat(P,Lambda)
    正态分布  [E,D]=normstat(μ,σ)

     

      计算协方差——cov(),具体用法自行help

      计算相关系数——corrcoef(),具体用法自行help

      参数估计(详细help)

    常用分布 参数估计命令
    泊松分布  [lambdahat,lambdaci]=poissfit(X,α)             返回水平α的λ参数估计和置信区间
    均匀分布  [ahat,bhat,aci,bci]=unifit(X,α)           返回水平α的参数估计和置信区间
    指数分布  [lambdahat,lambdaci]=expfit(X,α)            返回水平α的参数估计和置信区间
    二项分布  [phat,pci]=binofit(X,α)                                      [参数估计,置信区间]
    正态分布    [muhat,sigmahat,muci,sigmaci]=normfit(X,α)  返回水平α的期望、方差值和置信区间

     

      例子:

     

     

      2.统计量

      样本的几何均值:    m=geomean(X)

      样本的调和均值:    m=harmmean(X)

      样本的算数平均值:      m=mean(X)

      样本数据的中值:     m=median(X)

      样本的极差:       y=range(X)

      样本的方差:       y=var(X)  ||   y=var(X,1) 

      样本的标准差:      y=std(X)

      协方差矩阵:       C=cov(X)

      任意阶的中心矩:     m=moment(X,order)

      相关系数的计算:     R=corrcoef(X)

      缺失数据的处理:用NaN来标注缺失或不确定的数据,使用以nan开头的函数进行相关的计算。(求和:nansum();求均值:nanmean;最小值:nanmin;最大值:nanmax;中值:nanmedian;标准差:nanstd等等)

      例子:

    clear
    x=1:5
    X=x'*x
    geom = geomean(X)
    harm = harmmean(X)
    meanX = mean(X)
    medianm = median(X)
    rangem = range(X)
    varx = var(X)    
    %若X为向量,返回X中元素的方差;若X为矩阵,返回一个行向量,每一个元素,为对应列的方差(var(X)是经n-1进行了标准化,n为数据长度)
    %对于正态分布,var(X)就成为了σ²的最小方差无偏估计量
    var1x = var(X,1)  %经n进行了标准化,得到关于其均值(惯性矩)的样本数据的二阶矩
    stdX = std(X)
    covX = cov(X)
    moment1 = moment(X,1)
    moment2 = moment(X,2)
    moment3 = moment(X,3)
    moment4 = moment(X,4)
    R = corrcoef(X)

     

     

    四、数值分析

      有必要先提及一下数值分析的三大工具——插值、拟合、逼近。

      因为在生产和科学实验中,有时候自变量x和因变量y之间的函数关系 y=f(x) 不能写出表达式或者表达式过于复杂需要较大计算量而只能计算函数在若干点的函数值或导数值。如果你想知道其他点的函数值时,就需要估计函数在该点的值,为了估计函数在该点的值,就需要构造一个简单的函数 y=φ(x) ,使函数在观测点的值等于已知值,或者使函数在该点的导数值等于或者接近已知值。

      根据测量数据的类型寻找φ(x)有很多种方法,这里说一下插值和拟合。

      插值——测量数据的数据量小,而且数据值基本上是准确的时候。

      插值的定义:在离散数据的基础上补插连续函数,使得这条连续曲线通过全部给定的离散数据点(利用有限个离散点处的取值状况,估算出函数在其他点处的近似值)

      拟合——测量数据的数据量较大,或者测量值和真实值有误差时。

      拟合的定义:把平面上一系列的点,用一条光滑的曲线连接起来。因为这条曲线有无数种可能,从而有各种拟合方法。拟合的曲线一般可以用函数表示,根据这个函数的不同有不同的拟合名字。

      通俗意义上插值、拟合和逼近的区别在于:①拟合是已知点列,从整体上靠近它们;②插值是已知点列并且完全经过点列;③逼近是已知曲线,或者点列,通过逼近使得构造的函数无限靠近它们。

     

      1.数据插值

      一维插值

       

      函数 yi = interp1(X,Y,xi,method)

      

      method

         nearest(最近邻点插值)、spline(三次样条函数插值)

         linear(线性插值)、cubic(三次函数插值,新版的三次函数插值最好把cubic改成pchip)

       对于区间[min{xi},max{xi}]之外的数据,Matlab采用外推的方式来计算。

       例题:

      

      代码:

    year=1900:10:2010;
    product=[75.995,91.972,105.711,123.203,131.699,150.697,179.323,203.212,226.505,249.633,256.344,267.893];
    p1995=interp1(year,product,1995,'spline')
    x=1900:2010;
    y=interp1(year,product,x,'spline');
    plot(year,product,'o',x,y)

       

     

     

      二维插值

      

      函数Zi = interp2(X,Y,Z,Xi,Yi,method)

      

      method和一维插值的那四个一样。

      例题:

      

      代码:

    years=1950:10:1990;
    service=10:10:30;
    wage=[150.697 169.592 187.652
                179.323 195.072 250.287
                203.212 239.092 322.767
                226.505 273.706 426.730
                249.633 370.281 598.243];
    w=interp2(service,years,wage,15,1975)

      

      

      代码:

    x=1:6;
    y=1:4;
    t=[12,10,11,11,13,15
         16,22,28,35,27,20
         18,21,26,32,28,25
         20,25,30,33,32,20]
    subplot(1,2,1)
    mesh(x,y,t)
    x1=1:0.1:6;
    y1=1:0.1:4;
    [x2,y2]=meshgrid(x1,y1);
    t1=interp2(x,y,t,x2,y2,'cubic');
    subplot(1,2,2)
    mesh(x1,y1,t1)

      

     

      2.数据拟合

       提到拟合,想先简单点一下最小二乘法

      最小二乘法是勒让德( A. M. Legendre)于1805年在其著作《计算慧星轨道的新方法》中提出的一种数学优化技术,它通过最小化误差的平方和寻找数据的最佳函数匹配。它的主要思想就是求解未知参数,使得理论值与观测值之差(即误差,或者说残差)的平方和达到最小:$E{\rm{ = }}\sum\limits_{i = 1}^n {{{\rm{e}}_i}^2}  = {\sum\limits_{i = 1}^n {({y_i} - \mathop y\limits^\^ )} ^2}$

      其中,观测值${{y_i}}$就是我们的多组样本,理论值${\mathop y\limits^\^ }$就是我们的假设拟合函数。目标函数也就是在机器学习中常说的损失函数E,我们的目标是得到使目标函数最小化时候的参数。

      进行数据拟合,主要有两个函数: polyfit  和  lsqcurvefit 

       polyfit是多项式曲线拟合函数  p = polyfit(x,y,n)

     注:polyval 计算在x中任意元素处的多项式p的估值

       polyfit 求出已知数据x和y的n次拟合多项式f(x)的系数p,其中x、y、p都是向量,x的分量必须是单调的。

       c = lsqcurvefit(fun,c0,x,y)

       lsqcurvefit 用于各种类型曲线的拟合,c0是n维向量,与fun里的参数数目有关,用最小二乘法寻找符合经验公式的最优曲线。可用于非线性函数的数据拟合。

     

      

     

      例题:

      求如下给定数据的二次拟合曲线,并画出原始数据和拟合曲线的图形。x=[0.5,1.0,1.5,2.0,2.5,3.0],y=[1.75,2.45,3.81,4.80,7.00,8.60]

      代码:

    x=[0.5,1.0,1.5,2.0,2.5,3.0];
    y=[1.75,2.45,3.81,4.80,7.00,8.60];
    p=polyfit(x,y,2)
    x1=0.5:0.05:3.0;
    y1=polyval(p,x1);
    plot(x,y,'*r',x1,y1,'-b')

     

     

      

     

      例题:

     

     

     

       例题:

     

    clear
    t=0:1:24;
    T=[15,14,14,14,14,15,16,18,20,22,23,25,28,31,32,31,29,27,25,24,22,20,18,17,16];
    %二次函数
    [p2,s2]=polyfit(t,T,2);
    T2=polyval(p2,t);
    subplot(1,3,1)
    plot(t,T,'*-',t,T2);
    title('二次函数拟合');
    p2
    deltaT2=sum((T2-T).*(T2-T))
    
    %三次函数
    [p3,s3]=polyfit(t,T,3);
    T3=polyval(p3,t);
    subplot(1,3,2)
    plot(t,T,'*-',t,T3);
    title('三次函数拟合');
    p3
    deltaT3=sum((T3-T).*(T3-T))
    
    %函数C=a*exp(-b(t-c)²)
    Te0=log(T);
    [pe,se]=polyfit(t,Te0,2);
    b=pe(1);
    c=pe(2)/2/b;
    a=exp(pe(3)+c);
    Te1=polyval(pe,t);
    Te2=exp(Te1);
    subplot(1,3,3)
    plot(t,T,'*-',t,Te2);
    title('a*exp(-b(t-c)²)拟合');
    a
    b
    c
    deltaTe=sum((Te2-T).*(Te2-T))

     

     

     

      3.微分方程和微分方程组的数值解

      前面讨论的是微分方程的解析解,这里讨论常微分方程的数值解。(因为有很多的微分方程和方程组是无法求出解析解的)

      常微分方程ODE、偏微分方程PDE。

      

      

      以ode45为例:

    >> help ode45
    ode45 - Solve nonstiff differential equations — medium order method
    
        This MATLAB function, where tspan = [t0 tf], integrates the system of differential equations from t0 to tf with initial conditions y0.
    
        [t,y] = ode45(odefun,tspan,y0)
        [t,y] = ode45(odefun,tspan,y0,options)
        [t,y,te,ye,ie] = ode45(odefun,tspan,y0,options)
        sol = ode45(___)

      解初值问题:

      

    function f=fun(x,y)
    f=y+2*x/y;
    %命令行:
    ode45(@fun,[0,1],1)

      

    function f=fun(x,y)
    f=y+y*y;
    %命令行:
    ode15s(@fun,[0,0.6],1)

       

    function example
    ode15s(@fun,[0,100],[0,1])
    %----------%
    function f=fun(x,y)
    dy1dx = 0.04*(1-y(1))-(1-y(2)).*y(1)+0.0001*(1-y(2)).^2;
    dy2dx = -1e4*dy1dx+3000*(1-y(2)).^2;
    f=[dy1dx;dy2dx];

      

     

    % 1
    %函数first_ode,假设0≤x≤1
    function first_ode
    [T,Y]=ode45(@fun,[0,10],2)
    function f=fun(x,y)
    f=8-3*y;
    %命令行
    first_ode
    
    % 2
    %函数second_ode,假设0≤x≤1
    function second_ode
    [T,Y]=ode15s(@fun,[0,1],[1,3])
    function f=fun(x,y)
    f=[y(2);2*x/(1+x*x)*y(2)];
    %命令行输入:
    second_ode
    
    % 3
    %函数third_ode,假设0≤x≤1
    function third_ode
    [T,Y]=ode45(@fun,[0,1],[1,2,3,4])
    function f=fun(x,y)
    f=[y(2);y(3);y(4);2*y(4)-y(3)]
    %命令行输入:
    third_ode
    
    % 4
    %函数fourth_ode,假设0≤t≤1
    function fourth_ode
    [T,Y]=ode45(@fun,[0,1],[3/2,0])
    function f=fun(t,y)
    dy1dt=-3*y(1)-y(2);
    dy2dt=y(2)-4*y(1)-2*dy1dt+exp(t);
    f=[dy1dt;dy2dt];
    %命令行输入:
    fourth_ode

     

     

     

      4.非线性方程和方程组的求解

      在MATLAB中,解决线性方程(组)和非线性方程(组)可以用solve()、fsolve()、fzero()等函数。
      ①solve()
      用来解代数方程(组)的符号解,eqnN为方程组的第N个方程,varN为第N个变量。
      主要用法:X=solve('eqn1','eqn2',...,'eqnN','var1','var2',...,'varN')

    >> help solve
    solve - Equations and systems solver
    
    This MATLAB function solves the equation eqn for the variable var.
    
    S = solve(eqn,var)
    S = solve(eqn,var,Name,Value)
    Y = solve(eqns,vars)
    Y = solve(eqns,vars,Name,Value)
    [y1,...,yN] = solve(eqns,vars)
    [y1,...,yN] = solve(eqns,vars,Name,Value)
    [y1,...,yN,parameters,conditions] = solve(eqns,vars,'ReturnConditions',true)

      例子:

       

      ②fsolve()
      用来解非线性方程(组)的求解。
      主要用法:X=fsolve(fun,x0,options)

    >> help fsolve
    fsolve - Solve system of nonlinear equations
    
    This MATLAB function starts at x0 and tries to solve the equations fun(x) = 0, an array of zeros.
    
    x = fsolve(fun,x0)
    x = fsolve(fun,x0,options)
    x = fsolve(problem)
    [x,fval] = fsolve(___)
    [x,fval,exitflag,output] = fsolve(___)
    [x,fval,exitflag,output,jacobian] = fsolve(___)

      例子:

       

    %建立存放函数的m文件:
    function y=sy35(x)
    y(1)=x(1)-0.5*sin(x(1))-0.3*cos(x(2))
    y(2)=x(2)-0.5*cos(x(1))+0.3*sin(x(2))
    %命令行
    clear
    format short
    x0=[0.1,0.1]   %x0是变量x的初始值,其维数要与变量x的维数一致。
    fsolve(@sy35,x0,optimset('fsolve'))   %这里optimset部分是优化设置,可以不用

      ③fzero()
      用来解非线性方程(组)。
      主要用法:类似于fsolve()

    >> help fzero
    fzero - Root of nonlinear function
    
    This MATLAB function tries to find a point x where fun(x) = 0.
    
    x = fzero(fun,x0)
    x = fzero(fun,x0,options)
    x = fzero(problem)
    [x,fval,exitflag,output] = fzero(___)

     

    %2.1,初始值为0.1
    X=fsolve('x-exp(-x)',0.1,optimset('fsolve'))
    
    %2.2
    clear
    f='5*x.^2.*sin(x)-exp(-x)';
    x0=fsolve(f,0:10);
    j=2;
    num(1)=x0(1);
    for i=1:9
        if (abs(x0(i+1)-x0(i)>10^(-5)))
            num(j)=x0(i+1);
            j=j+1;
        end
    end
    num
    
    %2.3
    %定义函数sy23,可以把x记作x1,y记作x2
    function y=sy23(x)
    y(1)=x(1)-0.7*sin(x(1))-0.2*cos(x(2))
    y(2)=x(2)-0.7*cos(x(1))-0.2*sin(x(2))
    %命令行:
    clear
    format short
    x0=[0.1,0.1];
    fsolve(@sy23,x0,optimset('fsolve'))
    
    %2.4
    fzero(@(x)x.^2.*exp(-x.^2)-0.2,0)

     

     

     

    五、优化问题求解

      1.线性规划问题

      线性规划的一般形式:

      目标函数:

      

      约束条件:

      

      不等式约束矩阵:

      

      等式约束矩阵:

      

      列向量 和 为右端向量,满足约束条件的向量 被称为可行解,所有可行解的集合称为可行区域,最优解就是达到目标函数值最大的可行解。

      linprog函数——求解线性规划

      X=linprog(f,A,b)

      [X,fval,exitflag,ouyput,lamnda]=linprog(f,A,b,Aeq,Beq,LB,UB,X0,options)

      f——由目标函数的系数构成的向量
      A——(不等式约束条件)系数矩阵
      b——(不等式约束条件)右端向量
      Aeq——(等式约束条件)系数矩阵
      Beq——(等式约束条件)右端向量
      LB——约束变量的下界
      UB——约束变量的上界
      X0——给定的变量的初始值
      options——控制规划过程的参数系列
      fval——优化结束后得到的目标函数值
      exitflag——=0表示优化结果已经超过了函数的估计值或者已声明的最大迭代次数;>0表示优化过程中变量收敛于解X;<0表示不收敛。
      output——有3个分量,iterations表示优化过程的迭代次数,cgiterations表示PCG迭代次数,algorithm表示优化所采用的运算规则。
      lambda——有4个分量,ineqlin是先行不等式约束条件,eqlin是线性等式约束条件,upper是变量的上界约束条件,lower是变量的下界约束条件。

       

       

    clear
    f=-[7000,10000];
    A=[8,6;4,8;4,6];
    b=[380,300,220];
    [X,fval]=linprog(f,A,b)

      

    clear
    f=-[5,4,6];
    A=[1,-2,1;3,2,4;3,2,0];
    b=[20,42,30];
    LB=[0;0;0];
    [X,fval,exitflag,output,lambda]=linprog(f,A,b,[],[],LB)

      使用linprog()命令时,系统默认参数至少3个,如果要给定第5个参数,那么第4个参数也必须给出,否则系统无法认定是第五个参数,遇到无法给出时,则用空矩阵[]代替。

      2.非线性优化问题

      (1) 非线性一元函数的最小值——fminbnd()

      常用格式有:

      X=fminbnd(fun,x1,x2)

      [X,fval,exitflag,output]=fminbnd(fun,x1,x2)

      其中,fun为目标函数,变量x满足边界约束x1≤ x ≤x2,X为返回的满足fun取得最小值的x的值,fval为此时的目标函数值。

      exitflag>0表示计算收敛,exitflag=0表示超过了最大迭代次数,exitflag<0表示计算不收敛。

      output有3个分量,iterations表示优化过程的迭代次数,funcCount是代入函数值的次数,algorithm是优化算法。

    >> help fminbnd
    fminbnd - Find minimum of single-variable function on fixed interval
    
        This MATLAB function returns a value x that is a local minimizer of the scalar valued function that is described in fun in the interval x1 < x < x2.
    
        x = fminbnd(fun,x1,x2)
        x = fminbnd(fun,x1,x2,options)
        x = fminbnd(problem)
        [x,fval] = fminbnd(___)
        [x,fval,exitflag] = fminbnd(___)
        [x,fval,exitflag,output] = fminbnd(___)

      

    clear
    fun='(x^5+x^3+x^2-1)/(exp(x^2)+sin(-x))';
    ezplot(fun,[-2,2])
    [X,fval,exitflag,output]=fminbnd(fun,-2,2)

      

    X =    0.2176
    
    fval =   -1.1312
    
    exitflag =     1
    
    output = 
         iterations: 12
         funcCount: 13
         algorithm: 'golden section search, parabolic interpolation'


      (2) 无约束非线性多元变量的优化

      两个命令:

      fminsearch() 适合处理阶次低但是间断点多的函数

      fminunc() 适合处理高阶连续函数

      Ⅰ、fminsearch()的格式:

      X=fminsearch(fun,X0)

      [X,fval,exitflag,output]=fminsearch(fun,X0,options)

      该命令求解目标函数fun的最小值和相应的x值。

      X0为x的初始值,fval为返回的函数值,exitflag>0表示计算收敛,exitflag=0表示超过了最大迭代次数,exitflag<0表示计算不收敛。exitflag>0表示计算收敛,exitflag=0表示超过了最大迭代次数,exitflag<0表示计算不收敛。(好叭,说过好几遍了)

      options是一个结构,里面有控制优化过程的各种参数,参考optimset()命令来设置,一般情况不必改动(缺省即可)。

    >> help fminsearch
    fminsearch - Find minimum of unconstrained multivariable function using derivative-free method
    
        This MATLAB function starts at the point x0 and attempts to find a local minimum
        x of the function described in fun.
    
        x = fminsearch(fun,x0)
        x = fminsearch(fun,x0,options)
        x = fminsearch(problem)
        [x,fval] = fminsearch(___)
        [x,fval,exitflag] = fminsearch(___)
        [x,fval,exitflag,output] = fminsearch(___)

      

    clear
    fun1='sin(x)*sin(x)+cos(y)';
    fun2='sin(x(1))*sin(x(1))+cos(x(2))';
    ezmesh(fun1)
    [X,fval]=fminsearch(fun2,[0,0])

      

      Ⅱ、fminunc()的格式:

      X=fminunc(fun,X0)

      [X,fval,exitflag,output,grad,hessian]=fminunc(fun,X0,options)

      该命令通过计算寻找多变量目标函数fun的最小值,X0为优化的初始值,X为返回的变量的值,grad返回解点的梯度,hessian返回解点的汉森矩阵,其他参数同上。

    >> help fminunc
    fminunc - Find minimum of unconstrained multivariable function
    
        This MATLAB function starts at the point x0 and attempts to find a local minimum
        x of the function described in fun.
    
        x = fminunc(fun,x0)
        x = fminunc(fun,x0,options)
        x = fminunc(problem)
        [x,fval] = fminunc(___)
        [x,fval,exitflag,output] = fminunc(___)
        [x,fval,exitflag,output,grad,hessian] = fminunc(___)

      

    clear
    fun='exp(x(1))*(2*x(1)^2+3*x(2)^2+2*x(1)*x(2)+3*x(2)+1)';
    X0=[0,0];
    options=optimset('largescale','off','display','iter','tolx',1e-8,'tolfun',1e-8);
    [X,fval,exitflag,output,grad,hessian]=fminunc(fun,X0,options)

     

      3.有约束非线性多变量优化问题

      fmincon()——处理有约束的非线性多元函数的优化问题。

      有约束多变量优化问题的数学模型为:

      求一组变量,满足在给定的约束条件下,使目标函数最小。

      目标函数一般为非线性函数,约束条件有:

      

      fmincon()的格式如下:

      X = fmincon(fun,x0,A,b)
      X = fmincon(fun,x0,A,b,Aeq,beq,Lb,Ub)
      X = fmincon(fun,x0,A,b,Aeq,beq,Lb,Ub,nonlcon,options)
      [X,fval,exitflag,output] = fmincon(fun,x0,...)
      [X,fval,exitflag,output,lambda,grad,Hessian] = fmincon(fun,x0,...)

      fun是目标函数,x0是变量的初始值,X为返回的满足要求的变量的值,返回值fval为目标函数。

      A和b是线性不等式约束,Aeq和Beq表示线性等式约束,Lb和Ub分别为变量的上界和下界约束,nonlcon表示非线性约束条件。

      lambda为拉格朗日乘子,显示哪个约束条件有效,grad表示梯度,hessian为汉森矩阵,options为控制优化过程的优化参数向量。

    >> help fmincon
    fmincon - Find minimum of constrained nonlinear multivariable function
    
        This MATLAB function starts at x0 and attempts to find a minimizer x of the function described in fun subject to the linear inequalities A*x ≤ b.
    
        x = fmincon(fun,x0,A,b)
        x = fmincon(fun,x0,A,b,Aeq,beq)
        x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub)
        x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)
        x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
        x = fmincon(problem)
        [x,fval] = fmincon(___)
        [x,fval,exitflag,output] = fmincon(___)
        [x,fval,exitflag,output,lambda,grad,hessian] = fmincon(___)

     

     

     

     

    命令总结 (地址)适用于复习

    一、常用对象操作:除了一般windows窗口的常用功能键外。
    1、!dir 可以查看当前工作目录的文件。   !dir& 可以在dos状态下查看。
    2、who  可以查看当前工作空间变量名,    whos 可以查看变量名细节。
    3、功能键:
    功能键             快捷键           说明
    方向上键           Ctrl+P          返回前一行输入
    方向下键           Ctrl+N          返回下一行输入
    方向左键           Ctrl+B          光标向后移一个字符
    方向右键           Ctrl+F          光标向前移一个字符
    Ctrl+方向右键      Ctrl+R          光标向右移一个字符
    Ctrl+方向左键      Ctrl+L          光标向左移一个字符
    home              Ctrl+A          光标移到行首
    End               Ctrl+E          光标移到行尾
    Esc               Ctrl+U          清除一行
    Del               Ctrl+D          清除光标所在的字符
    Backspace         Ctrl+H          删除光标前一个字符                              Ctrl+K          删除到行尾          
                      Ctrl+C          中断正在执行的命令
    4、clc可以命令窗口显示的内容,但并不清除工作空间。
    二、函数及运算
    1、运算符:
    +:加,  -:减,  *:乘,  /: 除, \:左除  ^:  幂,‘:复数的共轭转置, ():制定运算顺序。
    2、常用函数表:
    sin( )    正弦(变量为弧度)   
    cot( )    余切(变量为弧度)
    sind( )     正弦(变量为度数)  
    cotd( )       余切(变量为度数)
    asin( )       反正弦(返回弧度)     
    acot( )       反余切(返回弧度)    
    asind( )     反正弦(返回度数)    
    acotd( )     反余切(返回度数)    
    cos( )        余弦(变量为弧度)     
    exp( )       指数     
    cosd( )     余弦(变量为度数)   
    log( )        对数   
    acos( )     余正弦(返回弧度)   
    log10( )    以10为底对数
    acosd( )   余正弦(返回度数)     
    sqrt( )      开方       
    tan( )       正切(变量为弧度)      
    realsqrt( ) 返回非负根
    tand( )      正切(变量为度数)        
    abs( )       取绝对值   
    atan( )      反正切(返回弧度)     
    angle( )    返回复数的相位角
    atand( )    反正切(返回度数)        
    mod(x,y)  返回x/y的余数   
    sum(  )     向量元素求和
    3、其余函数可以用 help elfun 和 help specfun 命令获得。
    4、常用常数的值:
    pi                    3.1415926…….         
    realmin           最小浮点数,2^-1022
    realmax          最大浮点数,(2-eps)2^1022
    i                      虚数单位              
    j                      虚数单位           
    Inf                  无限值
    eps                浮点相对经度=2^-52           
    NaN              空值
    三、数组和矩阵:
    1、构造数组的方法:增量法 linspace(first,last,num) first和last为起始和终止数,num为需要的数组元素个数。
    2、构造矩阵的方法:可以直接用[ ]来输入数组,也可以用以下提供的函数来生成矩阵。
    ones( )       创建一个所有元素都为1的矩阵,其中可以制定维数,1,2….个变量
    zeros()       创建一个所有元素都为0的矩阵
    eye()          创建对角元素为1,其他元素为0的矩阵
    diag()        根据向量创建对角矩阵,即以向量的元素为对角元素
    magic()     创建魔方矩阵
    rand()       创建随机矩阵,服从均匀分布
    randn()     创建随机矩阵,服从正态分布
    randperm()      创建随机行向量
    horcat              C=[A,B],水平聚合矩阵,还可以用cat(1,A,B)
    vercat              C=[A;B],垂直聚合矩阵, 还可以用cat(2,A,B)
    repmat(M,v,h)          将矩阵M在垂直方向上聚合v次,在水平方向上聚合h次
    blkdiag(A,B)     以A,和B为块创建块对角矩阵
    length              返回矩阵最长维的的长度
    ndims              返回维数
    numel              返回矩阵元素个数
    size                 返回每一维的长度,[rows,cols]=size(A)
    reshape          重塑矩阵,reshape(A,2,6),将A变为2×6的矩阵,按列排列。
    rot90               旋转矩阵90度,逆时针方向
    fliplr                沿垂轴翻转矩阵
    flipud              沿水平轴翻转矩阵
    transpose       沿主对角线翻转矩阵
    ctranspose     转置矩阵,也可用A’或A.’,这仅当矩阵为复数矩阵时才有区别
    inv                  矩阵的逆
    det                 矩阵的行列式值
    trace               矩阵对角元素的和
    norm               矩阵或矢量的范数,norm(a,1),norm(a,Inf)…….
    normest          估计矩阵的最大范数矢量
    chol                矩阵的cholesky分解
    cholinc           不完全cholesky分解
    lu                   LU分解
    luinc              不完全LU分解
    qr                  正交分解
    kron(A,B)        A为m×n,B为p×q,则生成mp×nq的矩阵,A的每一个元素都会乘上B,并占据p×q大小的空间
    rank              求出矩阵的刺
    pinv              求伪逆矩阵
    A^p               对A进行操作
    A.^P              对A中的每一个元素进行操作
    四、数值计算
    1、线性方程组求解
    (1)AX=B的解可以用X=A\B求。XA=B的解可以用X= A/B求。如果A是m×n的矩阵,当m=n时可以找到唯一解,m<n,不定解,解中至多有m个非零元素。如果m>n,超定系统,至少找到一组解。如果A是奇异的,且AX=B有解,可以用X=pinv(A)×B返回最小二乘解
    (2)AX=b,  A=L×U,[L,U]=lu(A),  X=U\(L\b),即用LU分解求解。
    (3)QR(正交)分解是将一矩阵表示为一正交矩阵和一上三角矩阵之积,A=Q×R[Q,R]=chol(A),  X=Q\(U\b)
    (4)cholesky分解类似。
    2、特征值
    D=eig(A)返回A的所有特征值组成的矩阵。[V,D]=eig(A),还返回特征向量矩阵。
    3、A=U×S×UT,[U,S]=schur(A).其中S的对角线元素为A的特征值。
    4、多项式Matlab里面的多项式是以向量来表示的,其具体操作函数如下:
    conv             多项式的乘法
    deconv         多项式的除法,【a,b】=deconv(s),返回商和余数
    poly              求多项式的系数(由已知根求多项式的系数)
    polyeig         求多项式的特征值
    Polyfit(x,y,n)        多项式的曲线拟合,x,y为被拟合的向量,n为拟合多项式阶数。
    polyder         求多项式的一阶导数,polyder(a,b)返回ab的导数
    [a,b]=polyder(a,b)   返回a/b的导数。
    polyint          多项式的积分
    polyval         求多项式的值
    polyvalm      以矩阵为变量求多项式的值
    residue        部分分式展开式
    roots           求多项式的根(返回所有根组成的向量)
    注:用ploy(A)求出矩阵的特征多项式,然后再求其根,即为矩阵的特征值。
    5、插值常用的插值函数如下:
    griddata         数据网格化合曲面拟合
    Griddata3      三维数据网格化合超曲面拟合
    interp1           一维插值(yi=interp1(x,y,xi,’method’)Method=nearest/linear/spline/pchip/cubic
    Interp2           二维插值zi=interp1(x,y,z,xi,yi’method’),bilinear
    Interp3           三维插值
    interpft          用快速傅立叶变换进行一维插值,help fft。
    mkpp            使用分段多项式
    spline            三次样条插值
    pchip            分段hermit插值
    6、函数最值的求解
    fminbnd(‘f’,x1,x2,optiset(,))求f在 x1和x2之间的最小值。Optiset选项可以有‘Display’+‘iter’/’off’/’final’,分别表示显示计算过程/不显示/只显示最后结果。fminsearch求多元函数的最小值。fzero(‘f’,x1)求一元函数的零点。X1为起始点。同样可以用上面的选项。
    五、图像绘制:

    1、基本绘图函数
    plot               绘制二维线性图形和两个坐标轴
    plot3            绘制三维线性图形和两个坐标轴
    fplot             在制定区间绘制某函数的图像。fplot(‘f’,区域,线型,颜色)
    loglog          绘制对数图形及两个坐标轴(两个坐标都为对数坐标)semilogx        绘制半对数坐标图形
    semilogy     绘制半对数坐标图形
    2、线型:   颜色           线型
            y   黄色             .     圆点线         v        向下箭头
            g   绿色             -.   组合           >        向右箭头
            b   蓝色            +    点为加号形        <        向左箭头
            m   红紫色        o    空心圆形           p         五角星形
            c   蓝紫色         *    星号              h         六角星形
            w   白色            .   实心小点        hold on   添加图形
            r   红色             x   叉号形状          grid on  添加网格
            k   黑色            s   方形              -           实线       
            d   菱形            --   虚线             ^         向上箭头     
    3、可以用subplot(3,3,1)表示将绘图区域分为三行三列,目前使用第一区域。此时如要画不同的图形在一个窗口里,需要hold on。
    附录1.1 管理用命令
    函数名             功能描述                 函数名           功能描述
    addpath    增加一条搜索路径         rmpath       删除一条搜索路径
    demo        运行Matlab演示程序       type           列出.M文件
    doc           装入超文本文档           version        显示Matlab的版本号
    help          启动联机帮助                what          列出当前目录下的有关文件
    lasterr     显示最后一条信息       whatsnew      显示Matlab的新特性
    lookfor    搜索关键词的帮助          which        造出函数与文件所在的目录
    path       设置或查询Matlab路径         

    附录1.2管理变量与工作空间用命令 
    函数名         功能描述                                  函数名       功能描述
    clear      删除内存中的变量与函数               pack          整理工作空间内存
    disp      显示矩阵与文本                               save          将工作空间中的变量存盘
    length   查询向量的维数                               size           查询矩阵的维数
    load      从文件中装入数据                          who,whos   列出工作空间中的变量名

    附录1.3文件与操作系统处理命令 
    函数名       功能描述                      函数名          功能描述
    cd           改变当前工作目录           edit               编辑.M文件
    delete     删除文件                         matlabroot    获得Matlab的安装根目录
    diary      将Matlab运行命令存盘    tempdir         获得系统的缓存目录
    dir          列出当前目录的内容       tempname    获得一个缓存(temp)文件
    !             执行操作系统命令         

    附录1.4窗口控制命令 
    函数名      功能描述                                    函数名    功能描述
    echo        显示文件中的Matlab中的命令    more    控制命令窗口的输出页面
    format      设置输出格式          

    附录1.5启动与退出命令 
    函数名         功能描述      函数名     功能描述
    matlabrc      启动主程序    quit        退出Matlab环境
    startup        Matlab自启动程序         

    附录2 运算符号与特殊字符附录
    2.1运算符号与特殊字符
    函数名    功能描述    函数名    功能描述
    +                 加              ...        续行标志
    -                  减              ,          分行符(该行结果不显示)
    *               矩阵乘          ;         分行符(该行结果显示)
    .*              向量乘         %        注释标志
    ^              矩阵乘方       !         操作系统命令提示符
    .^             向量乘方       '         矩阵转置
    kron         矩阵kron积   .         向量转置
    \               矩阵左除      =        赋值运算
    /               矩阵右除     ==      关系运算之相等
    .\              向量左除     ~=      关系运算之不等
    ./              向量右除      <       关系运算之小于
    :      向量生成或子阵提取   <=    关系运算之小于等于
    ()    下标运算或参数定义    >    关系运算之大于
    []             矩阵生成       >=    关系运算之大于等于
    &           逻辑运算之与
    .         结构字段获取符       |    逻辑运算之或
    .         点乘运算,常与其他运算符联合使用(如.\)   

    ~       逻辑运算之非
    xor    逻辑运算之异成         

    附录2.2逻辑函数 
    函数名    功能描述                                    函数名                              功能描述
    all          测试向量中所用元素是否为真     is*(一类函数)      检测向量状态.其中*表示一个确定的函数(isinf)
    any       测试向量中是否有真元素             *isa                     检测对象是否为某一个类的对象
    exist     检验变量或文件是否定义             logical                 将数字量转化为逻辑量
    find      查找非零元素的下标         

    附录3 语言结构与调试
    附录3.1编程语言 
    函数名          功能描述                             函数名       功能描述
    builtin    执行Matlab内建的函数               global         定义全局变量
    eval      执行Matlab语句构成的字符串     nargchk      函数输入输出参数个数检验
    feval     执行字符串指定的文件                script          Matlab语句及文件信息
    function    Matlab函数定义关键词          

    附录3.2控制流程 
    函数名        功能描述                                      函数名    功能描述
    break         中断循环执行的语句                       if    条件转移语句
    case          与switch结合实现多路转移         otherwise    多路转移中的缺省执行部分
    else           与if一起使用的转移语句              return    返回调用函数
    elseif         与if一起使用的转移语句              switch    与case结合实现多路转移
    end           结束控制语句块                           warning    显示警告信息
    error         显示错误信息                               while    循环语句
    for            循环语句         

    附录3.3交互输入 
    函数名        功能描述         函数名     功能描述
    input           请求输入          menu      菜单生成
    keyboard    启动键盘管理   pause     暂停执行

    附录3.4面向对象编程 
    函数名         功能描述                 函数名         功能描述
    class           生成对象                  isa                判断对象是否属于某一类
    double        转换成双精度型       superiorto     建立类的层次关系
    inferiorto    建立类的层次关系     unit8             转换成8字节的无符号整数
    inline         建立一个内嵌对象         

    附录3.5调试 
    函数名       功能描述                           函数名           功能描述
    dbclear    清除调试断点                     dbstatus        列出所有断点情况
    dbcont     调试继续执行                     dbstep           单步执行
    dbdown   改变局部工作空间内存       dbstop          设置调试断点
    dbmex    启动对Mex文件的调试        sbtype           列出带命令行标号的.M文件
    dbquit     退出调试模式                      dbup              改变局部工作空间内容
    dbstack   列出函数调用关系         

    附录4 基本矩阵与矩阵处理
    附录4.1基本矩阵 
    函数名        功能描述                              函数名       功能描述
    eye            产生单位阵                            rand          产生随机分布矩阵
    linspace     构造线性分布的向量             randn        产生正态分布矩阵
    logspace    构造等对数分布的向量         zeros         产生零矩阵
    ones           产生元素全部为1的矩阵          :              产生向量

    附录4.2特殊向量与常量 
    函数名              功能描述                         函数名     功能描述
    ans               缺省的计算结果变量            non         非数值常量常由0/0或Inf/Inf获得
    computer     运行Matlab的机器类型         nargin     函数中参数输入个数
    eps              精度容许误差(无穷小)          nargout    函数中输出变量个数
    flops            浮点运算计数                         pi            圆周率
    i                   复数单元                             realmax    最大浮点数值
    inf               无穷大                                  realmin     最小浮点数值
    inputname   输入参数名                         varargin     函数中输入的可选参数
    j                  复数单元                             varargout    函数中输出的可选参数

    附录4.3时间与日期 
    函数名             功能描述            函数名                功能描述
    calender          日历                   eomday              计算月末
    clock                时钟                  etime                   所用时间函数 
    cputime    所用的CPU时间        now                    当前日期与时间
    date                 日期                   tic                      启动秒表计时器
    datenum    日期(数字串格式)    toc                     读取秒表计时器
    datestr       日期(字符串格式)    weekday               星期函数
    datevoc     日期(年月日分立格式)         

    附录4.4矩阵处理 
    函数名        功能描述                                   函数名        功能描述
    cat             向量连接                                    reshape     改变矩阵行列个数
    diag          建立对角矩阵或获取对角向量    rot90          将矩阵旋转90度
    fliplr          按左右方向翻转矩阵元素           tril               取矩阵的下三角部分
    flipud        按上下方向翻转矩阵元素           triu              取矩阵的上三角部分
    repmat    复制并排列矩阵函数         

    附录5 特殊矩阵 
    函数名         功能描述                            函数名      功能描述
    compan       生成伴随矩阵                     invhilb      生成逆hilbert矩阵
    gallery         生成一些小的测试矩阵      magic       生成magic矩阵
    hadamard    生成hadamard矩阵           pascal      生成pascal矩阵
    hankel         生成hankel矩阵                 toeplitz     生成toeplitz矩阵
    hilb              生成hilbert矩阵                  wilkinson  生成wilkinson特征值测试矩阵 
    附录6 数学函数
    附录6.1三角函数 
    函数名               功能描述                                   函数名            功能描述
    sin/asin           正弦/反正弦函数                          sec/asec       正割/反正割函数
    sinh/asinh    双曲正弦/反双曲正弦函数               sech/asech    双曲正割/反双曲正割函数
    cos/acos      余弦/反余弦函数                             csc/acsc         余割/反余割函数
    cosh/acosh  双曲余弦/反双曲余弦函数               csch/acsch    双曲余割/反双曲余割函数
    tan/atan       正切/反正切函数                             cot/acot         余切/反余切函数
    tanh/atanh    双曲正切/反双曲正切函数              coth/acoth    双曲余切/反双曲余切函数
    atan2           四个象限内反正切函数         

    附录6.2指数函数 
    函数名    功能描述            函数名    功能描述
    exp        指数函数             log10     常用对数函数
    log         自然对数函数      sqrt       平方根函数

    附录6.3复数函数 
    函数名    功能描述          函数名    功能描述
    abs         绝对值函数      imag       求虚部函数
    angle     角相位函数       real        求实部函数
    conj       共轭复数函数         

    附录6.4数值处理 
    函数名         功能描述                  函数名     功能描述
    fix           沿零方向取整                round      舍入取整
    floor        沿-∞方向取整               rem         求除法的余数
    ceil         沿+∞方向取整               sign        符号函数

    附录6.5其他特殊数学函数 
    函数名            功能描述                            函数名    功能描述
    airy                 airy函数                              erfcx      比例互补误差函数
    besselh     bessel函数(hankel函数)          erfinv    逆误差函数
    bessili      改进的第一类bessel函数       expint    指数积分函数
    besselk    改进的第二类bessel函数         gamma    gamma函数
    besselj    第一类bessel函数                     gammainc    非完全gamma函数
    bessely   第二类bessel函数                     gammaln    gamma对数函数
    beta               beta函数                            gcd             最大公约数
    betainc    非完全的beta函数                    lcm             最小公倍数
    betaln            beta对数函数                     log2            分割浮点数
    elipj              Jacobi椭圆函数                   legendre     legendre伴随函数
    ellipke      完全椭圆积分                          pow2           基2标量浮点数
    erf                误差函数                             rat                有理逼近
    erfc            互补误差函数                        rats              有理输出

     

     

     

    转载于:https://www.cnblogs.com/fangxiaoqi/p/10739714.html

    展开全文
  • MATLAB核函数算法

    热门讨论 2010-08-27 09:57:12
    介绍几种常用核函数MATLAB的算法,附说明
  • 基于matlab的卷积积分

    2012-04-30 19:06:06
    一份关于卷积积分的资料,里面比较简单的介绍了如何用matlab实现积分的方法!
  • MATLAB 积分求解

    千次阅读 2017-04-03 18:13:06
    Matlab 之中的积分方法及相关函数总结: 有两类解的形式,一类解析解,适用于被积函数可以求出原函数的情况; 另一类为数值解,即被积函数不可求出原函数时,利用梯形法,矩阵法或辛普森法等等将积分区间分成若干块,...
    Matlab 之中的积分方法及相关函数总结:
    有两类解的形式,一类解析解,适用于被积函数可以求出原函数的情况; 另一类为数值解,即被积函数不可求出原函数时,利用梯形法,矩阵法或辛普森法等等将积分区间分成若干块,累计求出近似解。

    积分之前用syms 定义参数, vpa用来把解析解得形式变成具体数值,vpa(f,15),保留15位小数;

    subs(f,x,y)用y 来替代符号x;
    simple()对函数进行简化;
    解析解积分最常用函数为int,形式 int(f(x),'x',min,max), f(x)=ax^2+b,允许带符号积分,而且可以计算不定积分。多重积分形式 int(int(int(4*x*z*exp(-x^2),x,0,2),y,0,pi),z,p,pi),亦可一层层分开积。
    数值积分方法,只能求定积分,而且里面不可包含未知的符号:
    需要建立函数,内建函数方法 Fun=@(x,y) ax+b 或者Fun=inline(‘x.^2’,'x')
    trapz(x,y)梯形法,x1=[0:pi/30:pi]; y=sin(x1),自己可以控制步长
    quad(Fun,a,b,seta) 辛普森二次样条插值法,a,b 为上下限, seta 为制定误差限, 默认为10e(-6).
    quadl(Fun,a,b,seta),Lobbato算法, 调用方法和上着类似,但是精度和计算速度都优于quad.
    双重积分为dblquad(Fun,xm,xM,ym,yM,seta)
    工具箱NIT Numerical Integration Toolbox 可以求解范围带有参数的积分 quad2dggen,发现在新版matlab中已经自带函数quad2d了,用法 quad2d(@(x,y) x^2+y^2, 1,5,2, ymax), ymax=@(x) x^2可以带参数
    fsolve 可以用来解方程

    求数值解的效率高于解析解
    譬如
    Fun1=quadl(@(phi)2.*pi.*sp_R^2.*cos(phi).*sin(phi-angle_a3),angle_sp1,angle_a3);
    的效率明显优于下者
    Fun1=vpa(int(2*pi*sp_R^2.*cos(phi)*sin(phi-angle_a3),'phi',angle_sp1,angle_a3));

    相关例子
    一、Z = trapz(X,Y,dim)
    梯形数值积分,通过已知参数x,y按dim维使用梯形公式进行积分
    例1 计算int(sin(x),0,pi)
    %by dynamic
    %all rights reserved by www.matlabsky.com
    >>x=0:pi/100:2*pi;
    >>y=sin(x);
    >>z=trapz(x,y)%或者说使用z = pi/100*trapz(y)
    z =
       1.0300e-017
    >>z = pi/100*trapz(y)
    二、[q,fcnt]= quad(fun,a,b,tol,trace,p1,p2...)
    自适应simpson公式数值积分,适用于精度要求低,被积函数平滑性较差的数值积分
    注意事项:
    1.被积函数fun必须是函数句柄
    2.积分限[a,b]必须是有限的,因此不能为inf
    3.p1为其他需要传递的参数,一般是数值
    可能警告:
    1.'Minimum step size reached'
    意味着子区间的长度与计算机舍入误差相当,无法继续计算了。原因可能是有不可积的奇点
    2.'Maximum function count exceeded'
    意味着积分递归计算超过了10000次。原因可能是有不可积的奇点
    3.'Infinite or Not-a-Number function value encountered'
    意味着在积分计算时,区间内出现了浮点数溢出或者被零除。
    例2 计算积分1/(x^3-2*x-p),其中参数p=5,积分区间为[0,2]
    %by dynamic
    %all rights reserved by www.matlabsky.com
    >>F = @(x,n)1./(x.^3-2*x-n);
    >>Q = quad(@(x)F(x,5),0,2)%或者使用 quad(F,0,2,[],[],5)效果是一样的,只是前者使用的函数嵌套
    Q =
    -0.4605
    >>quad(F,0,2,[],[],5)
    ans =
    -0.4605
    三、[q,fcnt] = quadl(fun,a,b,tol,trace,p1,p2...)
    自适应Lobatto数值积分,适用于精度要求高,被积函数曲线比较平滑的数值积分

    注意事项:
    同quad

    可能警告:
    同quad

    例3 计算积分1/(x^3-2*x-p),其中参数p=5,积分区间为[0,2]
    %by dynamic
    %all rights reserved by www.matlabsky.com
    >>F=@(x,p)1./(x.^3-2*x-p);
    >>Q = quadl(F,0,2,[],[],5)%或者Q = quadl(@(x)F(x,5),0,2)
    Q =
    -0.4605
    四、[q,errbnd] = quadgk(fun,a,b,param1,val1,param2,val2,...)
    自适应Gauss-Kronrod数值积分,适用于高精度和震荡数值积分,支持无穷区间,并且能够处理端点包含奇点的情况,同时还支持沿着不连续函数积分,复数域线性路径的围道积分法

    注意事项:
    1.积分限[a,b]可以是[-inf,inf],但必须快速衰减
    2.被积函数在端点可以有奇点,如果区间内部有奇点,将以奇点区间划分成多个,也就是说奇点只能出现在端点上
    3.被积函数可以剧烈震荡
    4.可以计算不连续积分,此时需要用到'Waypoints'参数,'Waypoints'中的点必须严格单调
    5.可以计算围道积分,此时需要用到'Waypoints'参数,并且为复数,各点之间使用直线连接
    6.param,val为函数的其它控制参数,比如上面的'waypoints'就是,具体看帮助

    出现错误:
    1.'Reached the limit on the maximum number of intervals in use'
    2.'Infinite or Not-a-Number function value encountered'

    计算有奇点积分int(exp(x)*log(x),0,1)
    %by dynamic
    %all rights reserved by www.matlabsky.com
    >>F=@(x)exp(x).*log(x);%奇点必须在端点上,否则请先进行区间划分
    >>Q = quadgk(F,0,1)
     
    Q =
     
        -1.3179
    五、[Q,fcnt] = quadv(fun,a,b,tol,trace)
    矢量化自适应simpson数值积分

    注意事项:
    1.该函将quad函数矢量化了,就是一次可以计算多个积分
    2.所有的要求完全与quad相同
    计算下面积分,分别计算n=1,2...,5时的5个积分值,被积函数1/(n+x),积分限为[0,1]
    %by dynamic
    %all rights reserved by www.matlabsky.com
    >>for k = 1:5,        Qs(k) = quadv(@(x)1/(k+x),0,1);end;Qs
    Qs =
        0.6931    0.4055    0.2877    0.2231    0.1823
    >>F=@(x,n)1./((1:n)+x);%定义被积函数
    >>quadv(@(x)F(x,5),0,1)%我们可以完全使用quadv函数替换上面循环语句的,建议使用后者
    ans =
        0.6931    0.4055    0.2877    0.2231    0.1823
     
    六、q = dblquad(fun,xmin,xmax,ymin,ymax,tol,method)
    矩形区域二重数值积分,一般区域二重积分参见NIT(数值积分工具箱)的quad2dggen函数
    七、q=triplequad(fun,xmin,xmax,ymin,ymax,zmin,zmax,tol,method)
    长方体区域三重数值积分,注意此时没有一般区域的三重积分
    下面总结下:
    (1)quad:采用自适应变步长simpson方法,速度和精度都是最差的,建议不要使用
    (2)quad8:使用8阶Newton-Cotes算法,精度和速度均优于quad,但在目前版本下已被取消
    (3)quadl:采用lobbato算法,精度和速度均较好,建议全部使用该函数
    (4)quadg:NIT(数值积分)工具箱函数,效率最高,但该工具箱需要另外下载
    (5)quadv:quad的矢量化函数,可以同时计算多个积分
    (6)quadgk:很有用的函数,功能在Matlab中最强大
    (7)quad2dggen:一般区域二重积分,效率很好,需要NIT支持
    (8)dblquad:长方形区域二重积分
    (9)triplequadL:长方体区域三重积分
    展开全文
  • 图像积分求解matlab

    2012-11-15 20:41:23
    简单易行,可以直接运行,无需做额外修改,此代码能运用在人脸检测求特征值
  • MATLAB安装

    万次阅读 多人点赞 2018-07-27 18:09:11
    Matlab 2016a 安装包及破解教程百度云分享链接: 链接:https://pan.baidu.com/s/1i6BgD8p 密码:17gg   Matlab安装教程: 1、下载文件,得到R2016a_win64.part1.rar、R2016a_win64.part2.rar两部分安装文件和...

     

    • Matlab安装教程
    • 1、下载文件,得到R2016a_win64.part1.rar、R2016a_win64.part2.rar两部分安装文件和Matlab 2016a Win64 Crack破解文件。
    • 2、解压安装文件(解压R2016a_win64.part1.rar即可)得到“R2016a_win64”文件夹,安装文件为iso格式,打开iso虚拟光驱并运   行“setup.exe”开始安装。
    • 3、安装程序启动后选择”使用文件安装密钥 不需要Internet连接“

              

    • 4、是否接受许可协议的条款,选择“是”
    • 5、选择”我已有我的许可证的文件安装密钥“,在下面输入秘钥:”09806-07443-53955-64350-21751-41297

              

    • 6、选择安装路径,一般情况下不推荐安装在C盘,该软件占用空间比较大,需选择一个非系统盘进行安装,我安装在”D:\Soft\MATLAB\R2016a“

              

    • 7、选择需要安装的产品,建议全选,也可根据自己需要选择要安装的产品,我是全选的,选择之后点击“下一步”

              

    • 8、进入安装选项,快捷方式全选,点击”下一步“,进入安装确认界面进行安装

              

    • 9、进入安装界面,有进度条显示安装进度,安装过程需要较长时间,安装完成后会进入”产品配置说明“界面,点击下一步,完成安装。

     

    • Matlab破解教程:
    • 1、将下载的Matlab 2016a Win64 Crack.rar破解文件解压,解压后文件如图所示,文件夹中的”license_standalone.lic“就是许可文件
    • 2、打开Matlab的安装目录”D:\Soft\MATLAB\R2016a\bin\win64“,点击”activate_matlab.exe“进行激活,选择”在不使用 Internet 的情况下手动激活“

              

    • 3、选择“输入许可证文件的完成路径(包括文件名)”,点击”浏览“,选择刚解压的 Matlab 2016a Win64 Crack 文件夹中的”license_standalone.lic“许可文件。

              

    • 4、之后提示”激活完成“,此时不要打开软件,打开解压的 Matlab 2016a Win64 Crack 文件夹中的MATLAB Production Server\R2016a\bin\win64,复制其中的3个dll文件
    • 5、打开”D:\Soft\MATLAB\R2016a\bin\win64“文件,将复制的dll文件粘贴在这个文件夹中,系统会提示“复制文件”选项,所有文件都选择“复制和替换”即可完成 Matlab 软件破解。

              

    • 6、之后打开软件,就拥有一个完全免费的 Matlab 2016a 中文破解版本了。
    • 上一步安装完成后在执行下一步便能全部安装完成。

    MATLAB2016b,装完了后出现了没有快捷方式,并在菜单栏中没有相应的文件夹,而且打开MATLAB时感觉有点不正常,先是闪现dos那种界面,然后才慢慢打开(MATLAB打开都很慢),而且之前的m文件都不能相关联。

    解决方案如下:

    方案一:

    找到MATLAB的安装目录文件一般是D:\Program Files\Matlab\bin(根据你自己的安装路径,不一定是D盘),然后找到MATLAB.exe,右键,选择“发送”、“到桌面快捷方式”,这样就可以从桌面打开MATLAB了。但缺点是开始菜单没有快捷方式。.m文件也没有关联。

    方案二:

    第一遍安装完后,不会出现勾选创建快捷方式及文件关联的页面,安装完后,关闭;
    再打开安装程序,进行安装,但选择安装组件时,会显示都已安装,随便选择一个需要的组件(选择一个较小的,这样安装过程会快),若提示已安装过,则选择覆盖安装,

    之后就会出现创建快捷方式及文件关联的页面了。勾选“桌面”和“开始菜的那种的所有app”就ok了


    安装完成后,随便打开一个.m文件,然后所有的.m文件都可以和MATLAB关联起来了。这样*.m文件也能关联上了。

    推荐使用第二种方法,从根本上解决了问题

     

    展开全文
  • WIN10系统Matlab R2017a 中文版安装教程

    万次阅读 多人点赞 2017-08-06 20:55:28
    下面带来win10 64-bit Matlab 2017a的安装过程,亲测,可用。 (一)所需文件及下载地址 1.Matlab-R2017a-ISO镜像文件 链接:https://pan.baidu.com/s/1pNhyKGF 密码:cgt2 2.破解文件 链接:...
  • MATLAB R2019b超详细安装教程(附完整安装文件)

    万次阅读 多人点赞 2020-03-03 13:13:46
    摘要:本文详细介绍MATLAB R2019b的安装步骤,为方便安装这里提供了完整安装文件的百度网盘下载链接供大家使用。从文件下载到证书安装本文都给出了每个步骤的截图,按照图示进行即可轻松完成安装使用。本文目录包括...
  • matlab中@的用法

    万次阅读 多人点赞 2018-07-12 15:41:39
    举例:sin是matlab中的一个函数,但sin只是函数名,还不是函数句柄,不可以用于传参。f = @sin;这行代码定义了一个函数句柄,变量名是f。这样就可以当做参数传递了(这就是上面代码中的意义所在),而且还可以跟sin...
  • 基于MATLAB的二值化图像常用的三种方法

    万次阅读 多人点赞 2016-11-24 21:44:14
    图像分割是模式识别和计算机视觉中很重要的一个部分,基于阈值的图像分割具有简单、计算量小、效率高等特点,在实际图像处理中具有广泛的应用。经过国内外学者的广泛努力,已经提出了数以百计的阈值分割的算法,依据...
  • ubuntu16.04安装MATLAB R2017b步骤详解(附完整文件包)

    万次阅读 多人点赞 2018-03-23 22:34:29
    本文给出MATLAB R2017b(Linux系统)的完整安装包百度云盘下载地址,逐步介绍一种简单易行的安装方法,在桌面创建快捷方式,最终完整运行。 1. 前言 最近由于项目原因,需要在ubuntu上安装MATLAB,在网上找了很久...
  • Matlab subs函数的用法

    万次阅读 多人点赞 2017-01-03 20:16:17
    Matlab subs函数的用法 matlab中subs()是符号计算函数,详细用法可以在Matlab的Command Windows输入:help subs。subs()函数表示将符号表达式中的某些符号变量替换为指定的新的变量,常用调用方式为: R = subs(S,...
  • matlab中的if语句

    万次阅读 2014-04-13 02:12:14
    随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)、博主微信(guyun...MATLAB计算表达式,如果产生一个逻辑真或者非零结果,然后就执行一条或者多条MATLAB命令语句。 当有...
  • 安装 | MATLAB2018a (64位) 安装教程及安装包下载链接

    万次阅读 多人点赞 2019-04-04 11:39:01
    博主github:https://github.com/MichaelBeechan ... 安装包下载链接:内附MATLAB从入门到精通视频教程 全17讲 链接:https://pan.baidu.com/s/12NM-hWPhXg8mFhdoGbpv7A 提取码:1i4x 链接:https://pan.baidu...

空空如也

1 2 3 4 5 ... 20
收藏数 356,789
精华内容 142,715
关键字:

matlab