精华内容
下载资源
问答
  • 第8章 SIMULINK动态仿真集成环境 8.1 Simulink操作基础 8.2 系统仿真模型 8.3 系统仿真 8.4 使用命令操作对系统进行仿真 8.5 子系统及其封装技术 8.6 S函数设计与应用; 8.3 系统仿真 8.3.1 设置仿真参数 打开...
  • 第 12 章 SIMULINK 动态仿真集成环境 12.1 Simulink 操作基础 12.2 系统仿真模型 12.3 系统仿真 12.4 使用命令操作对系统进行仿真 12.5 子系统及其封装技术 12.6 S 函数设计与应用 1 12.1 Simulink 操作基础 ...
  • 第8章 SIMULINK动态仿真集成环境 8.1 Simulink操作基础 8.2 系统仿真模型 8.3 系统仿真 8.4 使用命令操作对系统进行仿真 8.5 子系统及其封装技术 8.6 S函数设计与应用; 8.3 系统仿真 8.3.1 设置仿真参数 打开...
  • Matlab基础 由浅入深 深入浅出 不错教程 从最初的MATLAB简介到较高级交互式仿真集成环境 有细致目录
  • Matlab 美国 MathWorks公司开发 概念设计,算法开发,建模仿真,实时实现的理想的集成环境 它将高性能的数值计算数据可视化程序设计和系统仿真融合到了一个简单易用的交互式工作环境中是目前最好的科学计算类软件之一....
  • Matlab基础及应用教程

    2018-09-03 19:54:43
    第 1 章 MATLAB简介........................................1 1.1 MATLAB 发展沿革...........................1 1.2 MATLAB 特点及应用领域...............2 1.3 MATLAB 系统及工具箱..........................
  • 目录 绪论 2 第一章 MATLAB简介 3 1.1 MATLAB 电力工具箱简介 3 1.2 MATLAB 集成环境 3 1.3 SIMLINK 仿真基础 4 第二章 基于 MATLAB的晶闸管单相交流调压电路仿真 4 2.1 电压电流分析 4 2.2 谐波分析 6 第三章 单相...
  • Matlab实践应用学习

    2009-12-24 13:35:21
    本书第一章系统讲述 MATLAB6.5 的集成工作平台,引导读者初会MATLAB 基本用法。 第二、三章系统叙述MATLAB6.1 的四大基本数据类型(数值数组、字符串数组、元胞数组、 构架数组),至于其它扩展数据类型(函数句柄、...
  • MATLAB是美国MathWorks公司推出一款数学计算软件世界三大数学软件之一在数值计算方面首屈一指 MATLAB也称为矩阵实验室将数值计算矩阵计算以及非线性动态系统建模和仿真集成在一个易于使用视窗环境中 * ppt课件 ...
  • 摘 要MATLAB仿真技术引入到计算机控制技术的课程教学中可以在课程教学中充分展示计算机控制的效果利用MATLAB可视化仿真工具Simulink提供的集成环境综合分析实际课程学习以及生活中应用的程序的特性和变化所以对于...
  • 本文提出的 Matlab下的 DSP集成设计方法确实可行,实验证明:在此环境下可以完成对 DSP目标板的操作,包括访问 DSP存储器和寄存器等,又可利用 Matlab的强大工具对 DSP存储器中的数据进行分析和可视化处理,因此系统...
  • 第12章 SIMULINK动态仿真集成环境12.1 Simulink操作基础12.2 系统仿真模型12.3 系统仿真12.4 使用命令操作对系统进行仿真12.5 子系统及其封装技术12.6 S函数设计与应用 12.1 Simulink操作基础12.1.1 ...

     

    12  SIMULINK动态仿真集成环境

    12.1  Simulink操作基础

    12.2  系统仿真模型

    12.3  系统的仿真

    12.4  使用命令操作对系统进行仿真

    12.5  子系统及其封装技术

    12.6  S函数的设计与应用

     

    12.1  Simulink操作基础

    12.1.1  Simulink简介

    SimulinkMATLAB的重要组成部分,提供建立系统模型、选择仿真参数和数值算法、启动仿真程序对该系统进行仿真、设置不同的输出方式来观察仿真结果等功能。

     

    12.1.2  Simulink的启动与退出

    1Simulink的启动

    MATLAB的命令窗口输入simulink或单击MATLAB主窗口工具栏上的Simulink命令按钮即可启动SimulinkSimulink启动后会显示Simulink模块库浏览器(Simulink Library Browser)窗口。

    MATLAB主窗口File菜单中选择New菜单项下的Model命令,在出现Simulink模块库浏览器的同时,还会出现一个名字为untitled的模型编辑窗口。在启动Simulink模块库浏览器后再单击其工具栏中的Create a new model命令按钮,也会弹出模型编辑窗口。利用模型编辑窗口,可以通过鼠标的拖放操作创建一个模型。

    模型创建完成后,从模型编辑窗口的File菜单项中选择SaveSave As命令,可以将模型以模型文件的格式(扩展名为.mdl)存入磁盘。

    如果要对一个已经存在的模型文件进行编辑修改,需要打开该模型文件,其方法是,在MATLAB命令窗口直接输入模型文件名(不要加扩展名.mdl)。在模块库浏览器窗口或模型编辑窗口的File菜单中选择Open命令,然后选择或输入欲编辑模型的名字,也能打开已经存在的模型文件。另外,单击模块库浏览器窗口工具栏上的Open a model命令按钮或模型编辑窗口工具栏上的Open model命令按钮,也能打开已经存在的模型文件。

    2Simulink的退出

    为了退出Simulink,只要关闭所有模型编辑窗口和Simulink模块库浏览器窗口即可。

     

    12.2  系统仿真模型

    12.2.1  Simulink的基本模块

    Simulink的模块库提供了大量模块。单击模块库浏览器中Simulink前面的“+”号,将看到Simulink模块库中包含的子模块库,单击所需要的子模块库,在右边的窗口中将看到相应的基本模块,选择所需基本模块,可用鼠标将其拖到模型编辑窗口。同样,在模块库浏览器左侧的Simulink栏上单击鼠标右键,在弹出的快捷菜单中单击Open the ‘Simulink’ Libray 命令,将打开Simulink基本模块库窗口。单击其中的子模块库图标,打开子模块库,找到仿真所需要的基本模块。

    12.2.2  模块的编辑

    1.添加模块

    2.选取模块

    3.复制与删除模块

    4.模块外形的调整 

    5.模块名的处理

    12.2.3  模块的连接

    1.连接两个模块

    2.模块间连线的调整

    3.连线的分支

    4.标注连线

    5.删除连线

    12.2.4  模块的参数和属性设置

    1.模块的参数设置

    Simulink中几乎所有模块的参数都允许用户进行设置,只要双击要设置的模块或在模块上按鼠标右键并在弹出的快捷菜单中选择相应模块的参数设置命令就会弹出模块参数对话框。该对话框分为两部分,上面一部分是模块功能说明,下面一部分用来进行模块参数设置。

    同样,先选择要设置的模块,再在模型编辑窗口Edit菜单下选择相应模块的参数设置命令也可以打开模块参数对话框。

    2.模块的属性设置

    选定要设置属性的模块,然后在模块上按鼠标右键并在弹出的快捷菜单中选择Block properties,或先选择要设置的模块,再在模型编辑窗口的Edit菜单下选择Block properties命令,将打开模块属性对话框。该对话框包括GeneralBlock annotationCallbacks 3个可以相互切换的选项卡。其中选项卡中可以设置3个基本属性:Description(说明)Priority(优先级) Tag(标记)

    12-1  有系统的微分方程,试建立系统仿真模型。

    操作过程如下:

    (1) MATLAB主菜单中,选择File菜单中New菜单项的Model命令,打开一个模型编辑窗口。

    (2) 将所需模块添加到模型中。

    (3) 设置模块参数并连接各个模块组成仿真模型。

    设置模块参数后,用连线将各个模块连接起来组成系统仿真模型。模型建好后,从模型编辑窗口的File菜单中选择SaveSave as命令将它存盘。


    12.3  系统的仿真

    12.3.1 设置仿真参数

    打开系统仿真模型,从模型编辑窗口的Simulation菜单中选择Simulation parameters命令,打开一个仿真参数对话框,在其中可以设置仿真参数。仿真参数对话框包含5个可以相互切换的选项卡:

    (1) Solver选项卡:用于设置仿真起始和停止时间,选择微分方程求解算法并为其规定参数,以及选择某些输出选项。

    (2) Workspace I/O选项卡:用于管理对MATLAB工作空间的输入和输出。

    (3) Diagnostics选项卡:用于设置在仿真过程中出现各类错误时发出警告的等级。

    (4) Advanced选项卡:用于设置一些高级仿真属性,更好地控制仿真过程。

    (5) Real-time Workshop选项卡:用于设置若干实时工具中的参数。如果没有安装实时工具箱,则将不出现该选项卡。

    12.3.2  启动系统仿真与仿真结果分析

    设置完仿真参数之后,从Simulation中选择Start菜单项或单击模型编辑窗口中的Start Simulation命令按钮,便可启动对当前模型的仿真。此时,Start菜单项变成不可选, Stop菜单项变成可选, 以供中途停止仿真使用。从Simulation菜单中选择Stop项停止仿真后,Start项又变成可选。

    为了观察仿真结果的变化轨迹可以采用3种方法:

    (1) 把输出结果送给Scope模块或者XY Graph模块。

    (2) 把仿真结果送到输出端口并作为返回变量,然后使用MATLAB命令画出该变量的变化曲线。

     (3) 把输出结果送到To Workspace模块,从而将结果直接存入工作空间,然后用MATLAB命令画出该变量的变化曲线。

    12-2  利用Simulink仿真曲线。

    仿真过程如下:

    (1) 启动Simulink并打开模型编辑窗口。

    (2) 将所需模块添加到模型中。

    (3) 设置模块参数并连接各个模块组成仿真模型。

     设置模块参数后,用连线将各个模块连接起来组成仿真模型。

    (4) 设置系统仿真参数。

    (5) 开始系统仿真。

    (6) 观察仿真结果。

    12-3  利用Simulink仿真求定积分。

    仿真过程如下:

    (1) 打开一个模型编辑窗口。

    (2) 将所需模块添加到模型中。

    (3) 设置模块参数并连接各个模块组成仿真模型。

    (4) 设置系统仿真参数。

    (5) 开始系统仿真。

    (6) 观察仿真结果。

    12.3.3  系统仿真实例

    至此,可以总结出利用Simulink进行系统仿真的步骤如下:

    (1) 建立系统仿真模型,这包括添加模块、设置模块参数以及进行模块连接等操作。

    (2) 设置仿真参数。

    (3) 启动仿真并分析仿真结果。

    12-4  有初始状态为0的二阶微分方程x"+0.2x'+0.4x=0.2u (t), 其中u(t)是单位阶跃函数,试建立系统模型并仿真。

    方法1:用积分器直接构造求解微分方程的模型。

    方法2:利用传递函数模块建模。

    方法3:利用状态方程模块建模。


    12.4  使用命令操作对系统进行仿真

    从命令窗口运行仿真的函数有4个,即simsimsetsimgetset_param

    1sim函数

    sim函数的作用是运行一个由Simulink建立的模型,其调用格式为:

    [t, x, y ] =sim(modname,timespan,options,data);

    2simset函数

    simset 函数用来为sim函数建立或编辑仿真参数或规定算法,并把设置结果保存在一个结构变量中。它有如下4种用法:

    (1) options=simset(property,value,…):把property代表的参数赋值为value,结果保存在结构options中。

    (2) options=simset(old_opstruct,property,value,…):把已有的结构old_opstruct(simset产生)中的参数property重新赋值为value,结果保存在新结构options中。

    (3) options=simset(old_opstruct,new_opstruct):用结构new_opstruct的值替代已经存在的结构old_opstruct的值。

    (4) simset:显示所有的参数名和它们可能的值。

    3simget函数

    simget函数用来获得模型的参数设置值。如果参数值是用一个变量名定义的,simget返回的也是该变量的值而不是变量名。如果该变量在工作空间中不存在(即变量未被赋值),则Simulink给出一个出错信息。该函数有如下3种用法:

    (1) struct=simget(modname):返回指定模型model的参数设置的options结构。

    (2) value=simget(modname,property):返回指定模型model的参数property的值。

    (3) value=simget(options,property):获取options结构中的参数property的值。如果在该结构中未指定该参数,则返回一个空阵。

    用户只需输入能够唯一识别它的那个参数名称的前几个字符即可,对参数名称中字母的大小写不作区别。

    4set_param函数

    set_param函数的功能很多,这里只介绍如何用set_param函数设置Simulink仿真参数以及如何开始、暂停、终止仿真进程或者更新显示一个仿真模型。

    (1) 设置仿真参数

    调用格式为:

    set_param(modname,property,value,…)

    其中modname为设置的模型名,property为要设置的参数,value是设置值。这里设置的参数可以有很多种,而且和用simset设置的内容不尽相同,相关参数的设置可以参考有关资料。

    (2) 控制仿真进程

    调用格式为:

    set_param(modname,'SimulationCommand','cmd')

    其中mode为仿真模型名称,而cmd是控制仿真进程的各个命令,包括startstoppausecomtinueupdate

    在使用这两个函数的时候,需要注意必须先把模型打开。

     

    12.5  子系统及其封装技术

    12.5.1 子系统的建立

    建立子系统有两种方法:通过Subsystem模块建立子系统和通过已有的模块建立子系统。两者的区别是:前者先建立子系统,再为其添加功能模块;后者先选择模块,再建立子系统。

    1.通过Subsystem模块建立子系统

    操作步骤为:

    (1) 先打开Simulink模块库浏览器,新建一个仿真模型。

    (2) 打开Simulink模块库中的Ports & Subsystems模块库,将Subsystem模块添加到模型编辑窗口中。

    (3) 双击Subsystem模块打开一个空白的Subsystem窗口,将要组合的模块添加到该窗口中,另外还要根据需要添加输入模块和输出模块,表示子系统的输入端口和输出端口。这样,一个子系统就建好了。

    2.通过已有的模块建立子系统

    操作步骤为:

    (1) 先选择要建立子系统的模块,不包括输入端口和输出端口。

    (2) 选择模型编辑窗口Edit菜单中的Create Subsystem 命令,这样,子系统就建好了。在这种情况下,系统会自动把输入模块和输出模块添加到子系统中,并把原来的模块变为子系统的图标。

    12-5  PID控制器是在自动控制中经常使用的模块,试建立PID控制器的模型并建立子系统。

    步骤如下:

    (1) 先建立PID控制器的模型。

    (2) 建立子系统。

    12.5.2  子系统的条件执行

    1.使能子系统

    建立使能子系统的方法是:打开Simulink模块库中的Ports & Subsystems模块库,将Enable模块复制到子系统模型中,则系统的图标发生了变化。

    12-6  利用使能子系统构成一个正弦半波整流器。

    操作步骤如下:

    (1) 打开Simulink模块库浏览器并新建一个仿真模型。

    (2) Sine WaveEnabled SubsystemScope 3个模块拖至新打开的模型编辑窗口,连接各模块并存盘。其中使能信号端接Sine Wave模块。

    为了便于比较,除显示半波整流波形外,还显示正弦波,故在示波器属性窗口将Number of axes设置为2

    使能子系统建立好后,可对Enable模块进行参数设置。

    (3) 选择Simulink菜单中的Start命令,就可看到半波整流波形和正弦波形。

    2.触发子系统

    触发子系统是指当触发事件发生时开始执行子系统。与使能子系统相类似,触发子系统的建立要把Ports & Subsystems模块库中的Trigger模块添加到子系统中或直接选择Triggered Subsystem模块来建立触发子系统。

    12-7  利用触发子系统将一锯齿波转换成方波。

    操作步骤如下:

    (1) Signal GeneratorTriggered SubsystemScope模块构成子系统。

    (2) 选择Simulink菜单中的Start命令,就可看到波形。

    3.使能加触发子系统

    所谓使能加触发子系统就是把EnableTirgger模块都加到子系统中,使能控制信号和触发控制信号共同作用子系统的执行,也就是前两种子系统的综合。该系统的行为方式与触发子系统相似,但只有当使能信号为正时,触发事件才起作用。

     12.5.3  子系统的封装

    所谓子系统的封装(Masking),就是为子系统定制对话框和图标,使子系统本身有一个独立的操作界面,把子系统中的各模块的参数对话框合成一个参数设置对话框,在使用时不必打开每个模块进行参数设置,这样使子系统的使用更加方便。

    子系统的封装过程很简单,先选中所要封装的子系统,再选择模型编辑窗口Edit菜单中的Mask subsystem命令,这时将出现封装编辑器(Mask Editor)对话框。

    Mask Editor对话框中共包括4个选项卡:IconParametersInitializationDocumentation。子系统的封装主要就是对这4页参数进行设置。


    12.6  S函数的设计与应用

    S函数称为系统函数(System Function),它有固定的程序格式。用MATLAB语言可以编写S函数,此外还可以采用CC++FORTRANAda等语言编写。

    12.6.1  MATLAB语言编写S函数

    编写S函数有一套固定的规则,为此,Simulink提供了一个用M文件编写S函数的模板。该模板程序存放在toolbox/simulink/blocks目录下,文件名为sfuntmpl.m。用户可以从这个模板出发构建自己的S函数。

    1.主程序

    S函数主程序的引导语句为:

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

    2.子程序

    S函数M文件共有6个子程序,供Simulink在仿真的不同阶段调用。

    12.6.2  S函数的应用

    12-8  采用S函数实现模块y=nx,即模块的功能是把一个输入信号n倍以后再输出。

    (1) 利用MATLAB语言M文件。

    (2) 模块的封装与测试。

    展开全文
  • 1.1.1 MATLAB集成开发环境 2 1.1.2 MATLAB编程语言 6 1.2 通信仿真 8 1.2.1 通信仿真概念 8 1.2.2 通信仿真一般步骤 9 第2章 Simulink入门 12 2.1 Simulink简介 12 2.2 Simulink工作环境 13 ...
  • 1.1.1 MATLAB集成开发环境 2 1.1.2 MATLAB编程语言 6 1.2 通信仿真 8 1.2.1 通信仿真概念 8 1.2.2 通信仿真一般步骤 9 第2章 Simulink入门 12 2.1 Simulink简介 12 2.2 Simulink工作环境 13 ...
  • 1.1.1 MATLAB集成开发环境 2 1.1.2 MATLAB编程语言 6 1.2 通信仿真 8 1.2.1 通信仿真概念 8 1.2.2 通信仿真一般步骤 9 第2章 Simulink入门 12 2.1 Simulink简介 12 2.2 Simulink工作环境 13 ...
  • 1.1.1 MATLAB集成开发环境 2 1.1.2 MATLAB编程语言 6 1.2 通信仿真 8 1.2.1 通信仿真概念 8 1.2.2 通信仿真一般步骤 9 第2章 Simulink入门 12 2.1 Simulink简介 12 2.2 Simulink工作环境 13 ...
  • 1.1.1 MATLAB集成开发环境 2 1.1.2 MATLAB编程语言 6 1.2 通信仿真 8 1.2.1 通信仿真概念 8 1.2.2 通信仿真一般步骤 9 第2章 Simulink入门 12 2.1 Simulink简介 12 2.2 Simulink工作环境 13 ...
  • 1.1.1 MATLAB集成开发环境 2 1.1.2 MATLAB编程语言 6 1.2 通信仿真 8 1.2.1 通信仿真概念 8 1.2.2 通信仿真一般步骤 9 第2章 Simulink入门 12 2.1 Simulink简介 12 2.2 Simulink工作环境 13 ...
  • 1.1.1 MATLAB集成开发环境 2 1.1.2 MATLAB编程语言 6 1.2 通信仿真 8 1.2.1 通信仿真概念 8 1.2.2 通信仿真一般步骤 9 第2章 Simulink入门 12 2.1 Simulink简介 12 2.2 Simulink工作环境 13 ...
  • MATLAB在化学工程与工艺实验数据处理中的应用探讨 1 MATLAB软件 MATLAB软件最早由美国Mathworks公司提出其主要面对科学计算可视化以及交互式程序设计高科技计算环境它将数值分析矩阵计算科学数据可视化以及非...
  • PAGE / NUMPAGES 目录 绪论2 MATLAB简介3 1.1 MATLAB电力工具箱简介3 1.2 MATLAB集成环境3 1.3 SIMLINK 仿真基础4 第二章 基于MATLAB的晶闸管单相交流调压电路仿真4 2.1 电压电流分析4 2.2 谐波分析6 单相交流调压...
  • MATLAB初步学习笔记 1、MATLAB简介 1.1简介 MATLAB是美国MathWorks公司出品商业数学软件,用于...它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统建模和仿真等诸多强大功能集成在一个易于使用视窗环

    MATLAB初步学习笔记

    1、MATLAB简介

    1.1简介

    在这里插入图片描述

    MATLAB是美国MathWorks公司出品的商业数学软件,用于数据分析无线通信深度学习图像处理计算机视觉信号处理、量化金融与风险管理、机器人,控制系统等领域。 [1]

    MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室),软件主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式。 [1]

    MATLAB和MathematicaMaple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等。MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对CFORTRANC++JAVA的支持。

    1.2 软件操作界面

    1、启动MATLAB界面:

    在这里插入图片描述

    2、进入主界面:

    在这里插入图片描述

    3、界面功能窗口简单介绍

    在这里插入图片描述

    4、编写代码并执行指定代码

    在这里插入图片描述

    5、执行代码,console命令行窗口查看结果:

    在这里插入图片描述

    2、MATLAB变量使用技巧

    matlab格式命令 format

    format long`长(long ) 命令格式显示小数点后16位。

    默认情况下,MATLAB 四个小数位值显示数字。这就是所谓的 short format.

    在这里插入图片描述

    空格格式命令回合到小数点后两位数字。例如:

    format bank
    daily_wage = 177.45;
    weekly_wage = daily_wage * 6
    

    MATLAB将执行上面的语句,并返回以下结果:

    weekly_wage =
           1064.70
    

    MATLAB 显示大量使用指数表示法。

    短格式e命令允许以指数的形式显示小数点后四位,加上指数。

    例如:

    format short e
    4.678 * 4.9
    

    MATLAB将执行上面的语句,并返回以下结果:

    ans =
       2.2922e+01 
    

    format long e命令允许以指数的形式显示小数点后十六位,加上指数。例如:

    format long e
    x = pi
    

    MATLAB将执行上面的语句,并返回以下结果:

    x =
         3.141592653589793e+00
    

    format rat 格式大鼠命令给出最接近的有理表达式,从计算所得。例如:

    format rat
    4.678 * 4.9
    

    MATLAB将执行上面的语句,并返回以下结果:

    ans =
       2063/90  
    

    长任务

    长任务可以通过使用省略号(…)延伸到另一条线路。例如,

    initial_velocity = 0;
    acceleration = 9.8;
    time = 20;
    final_velocity = initial_velocity ...
        + acceleration * time
    

    MATLAB常用的运算符和特殊字符

    MATLAB常用的运算符和特殊字符如下表所示:

    运算符 目的
    + 加;加法运算符
    - 减;减法运算符
    ***** 标量和矩阵乘法运算符
    .* 数组乘法运算符
    ^ 标量和矩阵求幂运算符
    .^ 数组求幂运算符
    ** 矩阵左除
    / 矩阵右除
    *.* 阵列左除
    ./ 阵列右除
    : 向量生成;子阵提取
    ( ) 下标运算;参数定义
    [ ] 矩阵生成
    . 点乘运算,常与其他运算符联合使用
    续行标志;行连续运算符
    , 分行符(该行结果不显示)
    ; 语句结束;分行符(该行结果显示)
    % 注释标志
    _ 引用符号和转置运算符
    ._ 非共轭转置运算符
    = 赋值运算符

    创建向量

    向量是一维数组中的数字。 MATLAB允许创建两种类型的矢量:

    • 行向量
    • 列向量

    创建行向量括在方括号中的元素的集合,用空格或逗号分隔的元素。

    r = [7 8 9 10 11]
    

    创建列向量通过内附组方括号中的元素,使用分号(;)分隔的元素。

    c = [7;  8;  9;  10; 11]
    

    矩阵用法

    创建矩阵

    普通创建方式如下:

    矩阵是一个二维数字阵列。

    在MATLAB中,创建一个矩阵每行输入空格或逗号分隔的元素序列,最后一排被划定一个分号。

    例如,下面创建了一个3×3的矩阵:

    m = [1 2 3; 4 5 6; 7 8 9]
    

    创建矩阵的另一种方法是使用 oneszerosrand 等函数。

    z = zeros(5,1)//创建5行,1列的矩阵,值全为0
    o = ones(5,2)//创建5行,2列的矩阵,值全为1
    r = rand(5,3)//创建5行,3列的矩阵,值为0到1的随机数
    

    转置矩阵

    r = rand(5,3)//创建5行,3列的矩阵,值为0到1的随机数
    a = r'//矩阵转置,列变为行,行变为列
    

    矩阵元素级操作

    执行元素级乘法(而非矩阵乘法),请使用 .* 运算符:

    a = [1 2 3;4 5 6;7 8 9]
    p = a.*a
    
    结果:
    a =
         1     2     3
         4     5     6
         7     8     9
    p =
         1     4     9
        16    25    36
        49    64    81
    

    执行元素级求幂

    a = [1 2 3;4 5 6;7 8 9]
    a.^3
    结果:
    a =
         1     2     3
         4     5     6
         7     8     9
    ans =
         1     8    27
        64   125   216
       343   512   729
    

    3、MATLAB常用命令

    MATLAB管理会话的命令

    MATLAB提供管理会话的各种命令。如下表所示:

    命令 目的/作用
    clc 清除命令窗口。
    clear 从内存中删除变量。
    exist 检查存在的文件或变量。
    global 声明变量为全局。
    help 搜索帮助主题。
    lookfor 搜索帮助关键字条目。
    quit 停止MATLAB。
    who 列出当前变量。
    whos 列出当前变量(长显示)。

    MATLAB的系统命令

    使用MATLAB的时候有一些系统命令可以方便我们的操作,如在当前的工作区中可以使用系统命令保存为一个文件、加载文件、显示日期、列出目录中的文件和显示当前目录等。

    下表列举了一些MATLAB常用的系统相关的命令:

    命令 目的/作用
    cd 改变当前目录。
    date 显示当前日期。
    delete 删除一个文件。
    diary 日记文件记录开/关切换。
    dir 列出当前目录中的所有文件。
    load 负载工作区从一个文件中的变量。
    path 显示搜索路径。
    pwd 显示当前目录。
    save 保存在一个文件中的工作区变量。
    type 显示一个文件的内容。
    what 列出所有MATLAB文件在当前目录中。
    wklread 读取.wk1电子表格文件。

    MATLAB输入和输出命令

    MATLAB提供了以下输入和输出相关的命令:

    命令 作用/目的
    disp 显示一个数组或字符串的内容。
    fscanf 阅读从文件格式的数据。
    format 控制屏幕显示的格式。
    fprintf 执行格式化写入到屏幕或文件。
    input 显示提示并等待输入。
    ; 禁止显示网版印刷

    fscanf和fprintf命令的行为像C scanf和printf函数。他们支持格式如下代码:

    格式代码 目的/作用
    %s 输出字符串
    %d 输出整数
    %f 输出浮点数
    %e 显示科学计数法形式
    %g %f 和%e 的结合,根据数据选择适当的显示方式

    用于数字显示格式的函数有以下几种形式:

    Format函数 最多可显示
    format short 四位十进制数(默认)
    format long 15位定点表示
    format short e 五位浮点表示
    format long e 15位浮点表示
    format bank 两个十进制数字
    format + 正,负或零
    format rat 有理数近似
    format compact 变量之间没有空行
    format loose 变量之间有空行

    MATLAB向量,矩阵和阵列命令

    下表列出了MATLAB用于工作数组、矩阵和向量的各种命令:

    命令 作用/目的
    cat 连接数组
    find 查找非零元素的索引
    length 计算元素数量
    linspace 创建间隔向量
    logspace 创建对数间隔向量
    max 返回最大元素
    min 返回最小元素
    prod 计算数组元素的连乘积
    reshape 重新调整矩阵的行数、列数、维数
    size 计算数组大小
    sort 排序每个列
    sum 每列相加
    eye 创建一个单位矩阵
    ones 生成全1矩阵
    zeros 生成零矩阵
    cross 计算矩阵交叉乘积
    dot 计算矩阵点积
    det 计算数组的行列式
    inv 计算矩阵的逆
    pinv 计算矩阵的伪逆
    rank 计算矩阵的秩
    rref 将矩阵化成行最简形
    cell 创建单元数组
    celldisp 显示单元数组
    cellplot 显示单元数组的图形表示
    num2cell 将数值阵列转化为异质阵列
    deal 匹配输入和输出列表
    iscell 判断是否为元胞类型

    MATLAB绘图命令

    MATLAB提供了大量的命令绘制图表。下表列出了一些常用的命令绘制:

    命令 作用/目的
    axis 人功选择坐标轴尺寸
    fplot 智能绘图功能
    grid 显示网格线
    plot 生成XY图
    print 打印或绘图到文件
    title 把文字置于顶部
    xlabel 将文本标签添加到x轴
    ylabel 将文本标签添加到y轴
    axes 创建轴对象
    close 关闭当前的绘图
    close all 关闭所有绘图
    figure 打开一个新的图形窗口
    gtext 通过鼠标在指定位置放注文
    hold 保持当前图形
    legend 鼠标放置图例
    refresh 重新绘制当前图形窗口
    set 指定对象的属性,如轴
    subplot 在子窗口中创建图
    text 在图上做标记
    bar 创建条形图
    loglog 创建双对数图
    polar 创建极坐标图像
    semilogx 创建半对数图(对数横坐标)
    semilogy 创建半对数图(对数纵坐标)
    stairs 创建阶梯图
    stem 创建针状图

    4、运算

    逻辑运算

    MATLAB逻辑运算都是针对元素的操作,运算结果是特殊的逻辑数组;在逻辑分析时,逻辑(真)用1表示,逻辑假用0表示,逻辑运算中所有的非零元素作为1处理。

    注意:

    使用MATLAB逻辑运算时的语法不要与C语言、Java等编程语言混淆。

    MATLAB 有两种类型的逻辑运算符和函数:

    • Element-wise - 这些运算上的对应元素的逻辑阵列。
    • Short-circuit - 这些运算上的标量,逻辑表达式。

    MATLAB元素明智的逻辑运算符操作元素元素逻辑阵列:符号&,|和〜逻辑数组运算符AND,OR,NOT。

    MATLAB允许短路的短路逻辑运算符,逻辑运算:符号&&和| |是短路逻辑符AND和OR。

    详细例子


    在MATLAB中建立一个脚本文件,并输入下面的代码:

    a = 5;
    b = 20;
       if ( a && b )
            disp('Line 1 - Condition is true');
       end
       if ( a || b )
           disp('Line 2 - Condition is true');
       end
       % lets change the value of  a and b 
       a = 0;
       b = 10;
       if ( a && b )
           disp('Line 3 - Condition is true');
       else
           disp('Line 3 - Condition is not true');
       end
       if (~(a && b))
       
          disp('Line 4 - Condition is true');
       end
    

    运行该文件,产生如下结果:

    Line 1 - Condition is true
    Line 2 - Condition is true
    Line 3 - Condition is not true
    Line 4 - Condition is true
    

    MATLAB逻辑运算功能


    除了在上述的逻辑运算符,MATLAB 提供下面的命令或函数用于同样的目的:

    函数 描述
    and(A, B) 查找数组或标量输入的逻辑和;执行所有输入数组A,B等的逻辑AND,并返回包含设置为逻辑1(真)或逻辑0(假)的元素的数组。如果所有输入数组在同一个数组位置都包含一个非零元素,那么输出数组的一个元素将被设置为1;否则,该元素设置为0。
    not(A) 查找数组或标量输入的逻辑NOT;执行输入数组A的逻辑NOT,并返回包含设置为逻辑1(真)或逻辑0(假)的元素的数组。如果输入数组在同一个数组位置包含一个零值元素,那么输出数组的一个元素将被设置为1;否则,该元素设置为0。
    or(A, B) 查找数组或标量输入的逻辑或; 执行所有输入数组A,B等的逻辑或,并返回包含设置为逻辑1(真)或逻辑0(假)的元素的数组。如果任何输入数组在同一个数组位置包含一个非零元素,则输出数组的一个元素设置为1;否则,该元素设置为0。
    xor(A, B) 逻辑异或; 对数组A和B的相应元素执行异或运算。如果A(i,j,…)或B(i,j)…,则所得到的元素C(i,j,…) j,…),但不是两者都是非零的。
    all(A) 确定数组A的所有数组元素是否为非零或真。如果A是向量,则如果所有元素都为非零,则所有(A)返回逻辑1(真),如果一个或多个元素为零,则返回逻辑0(假)。如果A是非空矩阵,则所有(A)将A的列视为向量,返回逻辑1和0的行向量。如果A是空的0x0矩阵,则全部(A)返回逻辑1(真)。如果A是一个多维数组,则所有(A)都沿着第一个非指定维度行事,并返回一个逻辑值数组。 该尺寸的尺寸减小到1,而所有其他尺寸的尺寸保持不变。这个维度的大小减少到1,而其他所有维度的尺寸保持不变。
    all(A, dim) 通过标量dim沿着维数A的维度进行测试。
    any(A) 确定数组元素是否为非零;测试数组中不同维度的元素是否为非零数字,或是逻辑1(真)。 任何函数忽略NaN(不是数字)的条目。如果A是向量,任何(A)如果A的任何元素是非零数或逻辑1(真),则返回逻辑1(真),如果所有元素为零,则返回逻辑0(假)。如果A是非空矩阵,则任何(A)将A的列视为向量,返回逻辑1和0的行向量。如果A是一个空的0x0矩阵,任何(A)返回逻辑0(假)。如果A是一个多维数组,则任何(A)都沿着第一个非整数维进行操作,并返回一个逻辑值数组。该维度的尺寸减小到1,而所有其他维度的尺寸保持不变。
    any(A,dim) 通过标量dim沿着维数A的维度进行测试。
    false 逻辑0(假)
    false(n) 是逻辑0的n×n矩阵
    false(m, n) 是逻辑0的一个m×n矩阵。
    false(m, n, p, …) 是由逻辑0的逐列逐列数组。
    false(size(A)) 是与数组A大小相同的逻辑零数组。
    false(…,‘like’,p) 是与逻辑阵列p相同的数据类型和稀疏性的逻辑零数组。
    ind = find(X) 查找非零元素的索引和值;定位数组X的所有非零元素,并返回向量中这些元素的线性索引。 如果X是行向量,则返回的向量是行向量; 否则返回列向量。如果X不包含非零元素或是空数组,则返回一个空数组。
    ind = find(X, k)ind = find(X, k, ‘first’) 最多返回与X的非零条目相对应的前k个索引。k必须是正整数,但它可以是任何数字数据类型。
    ind = find(X, k, ‘last’) 最多返回与X的非零条目相对应的最后k个索引。
    [row,col] = find(X, …) 返回矩阵X中非零条目的行和列索引。使用稀疏矩阵时,此语法特别有用。 如果X是N>2的N维数组,col包含列的线性索引。
    [row,col,v] = find(X, …) 返回X中非零条目的列或行向量v,以及行和列索引。如果X是逻辑表达式,则v是逻辑数组。 输出v包含通过评估表达式X获得的逻辑数组的非零元素。
    islogical(A) 确定输入是否为逻辑数组;如果A是逻辑数组,返回true,否则返回false。 如果A是从逻辑类派生的类的实例,它也返回true。
    logical(A) 将数值转换为逻辑;返回一个可用于逻辑索引或逻辑测试的数组。
    true 逻辑1(真)
    true(n) 是一个n×n逻辑矩阵。
    true(m, n) 是一个mxn逻辑矩阵。
    true(m, n, p, …) 是由逻辑1的逐列逐列数组。
    true(size(A)) 是与数组A大小相同的逻辑数组。
    true(…,‘like’, p) 是与逻辑阵列p相同的数据类型和稀疏性的逻辑阵列。

    算术运算

    MATLAB的算术运算有两种不同类型:1)矩阵算术运算;2)阵列算术运算。

    MATLAB矩阵算术运算与线性代数中的定义相同:执行数组操作,无论是在一维和多维数组元素的元素。

    矩阵运算符和数组运营商是有区别的句点(.)符号。然而,由于加法和减法运算矩阵和阵列是相同的,操作者这两种情况下是相同的。

    下表给出了运算符的简要说明:

    操作符 描述
    + 加法或一元加号。A + B将A和B。 A和B必须具有相同的尺寸,除非一个人是一个标量。一个标量,可以被添加到任何大小的矩阵。
    - 减法或一元减号。A - B,减去B从A和B必须具有相同的大小,除非是一个标量。可以从任意大小的矩阵中减去一个标量。
    ***** 矩阵乘法;是一个更精确的矩阵A和B的线性代数积,矩阵乘法对于非纯量A和B,列一个数必须等于B.标量可以乘以一个任意大小的矩阵的行数。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yvbDmAV1-1616230062391)(http://www.yiibai.com/uploads/allimg/131001/1643251036-0.jpg)]
    .* 数组的乘法;A.*B是数组A和B的元素积,A和B必须具有相同的大小,除非A、B中有一个是标量。
    / 斜线或矩阵右除法;B/A与B * inv(A)大致相同。更确切地说: B/A = (A’B’)’
    ./ 矩阵右除法;矩阵A与矩阵B相应元素相除(A、B为同纬度的矩阵)
    *.* 反斜杠或矩阵左除;如果A是一个方阵,AB是大致相同的INV(A)* B,除非它是以不同的方式计算。如果A是一个n*n的矩阵,B是一个n组成的列向量,或是由若干这样的列的矩阵,则X = AB 是方程 AX = B ,如果A严重缩小或者几乎为单数,则显示警告消息。
    . 数组左除法;A. B是元素B(i,j)/A(i,j)的矩阵。A和B必须具有相同的大小,除非其中一个是标量。
    ^ 矩阵的幂。X^P是X到幂P,如果p是标量;如果p是一个整数,则通过重复平方计算功率。如果整数为负数,X首先反转。对P值的计算,涉及到特征值和特征向量,即如果[ D ] = V,EIG(x),那么X^P = V * D.^P / V。
    .^ A.^B:A的每个元素的B次幂(A、B为同纬度的矩阵)
    矩阵的转置;A’是复数矩阵A的线性代数转置,这是复共轭转置。
    .' 数组的转置;A’是数组A的转置,对于复数矩阵,这不涉及共轭。

    举例说明

    下面的例子显示使用标量数据的算术运算符。创建一个脚本文件,用下面的代码:

    a = 10;
    b = 20;
    c = a + b
    d = a - b
    e = a * b
    f = a / b
    g = a  b
    x = 7;
    y = 3;
    z = x ^ y
    

    运行该文件,产生结果如下:

    c =
        30
    d =
       -10
    e =
       200
    f =
        0.5000
    g =
         2
    z =
       343
    

    MATLAB算术运算功能

    除了上述列举的一些算术运算符,MATLAB 中还拥有以下的命令/功能:

    函数 描述
    uplus(a) 一元加号;增加量a
    plus (a,b) 相加;返回 a + b
    uminus(a) 一元减号;减少a
    minus(a, b) 相减;返回 a - b
    times(a, b) 数组相乘;返回 a.*b
    mtimes(a, b) 矩阵相乘;返回 a* b
    rdivide(a, b) 右阵划分;返回 a ./ b
    ldivide(a, b) 左阵划分;返回 a. b
    mrdivide(A, B) 求解线性方程组xA = B for x
    mldivide(A, B) 求解线性方程组xA = B for x
    power(a, b) 数组求幂;返回 a.^b
    mpower(a, b) 矩阵求幂;返回 a ^ b
    cumprod(A) 累积乘积;返回与包含累积乘积的数组A相同大小的数组。如果A是向量,则cumprod(A)返回一个包含A的元素的累积乘积的向量。如果A是矩阵,则cumprod(A)返回一个矩阵,其中包含A的每一列的累积乘积。如果A是一个多维数组,那么cumprod(A)将沿着第一个非正整数维。
    cumprod(A, dim) 沿维 dim 返回返回累积乘积。
    cumsum(A) 累加总和;返回包含累积和的数组A如果A是向量,则cumsum(A)返回一个包含A的元素的累积和的向量。如果A是矩阵,则cumsum(A)返回一个矩阵,其中包含A的每列的累积和。如果A是一个多维数组,那么cumsum(A)将沿着第一个非整数维度起作用。
    cumsum(A, dim) 返回沿着dim的元素的累积和。
    diff(X) 差分和近似导数;计算x相邻元素之间的差异。如果X是向量,则diff(X)返回相邻元素之间的差异的向量,比X短一个元素:[X(2)-X(1)X(3)-X(2)… X(N)-X(N-1)]如果X是一个矩阵,则diff(X)返回行差的矩阵:[X(2:m,…)-X(1:m-1,😃]
    diff(X,n) 递归应用n次,导致第n个差异。
    diff(X,n,dim) 它是沿标量dim指定的维数计算的第n个差分函数。 如果order n等于或超过Dim的长度,diff将返回一个空数组。
    prod(A) 数组元素的乘积;返回A数组元素的乘积。如果A是向量,则prod(A)返回元素的乘积。如果A是非空矩阵,则prod(A)将A的列作为向量,并返回每列乘积的行向量。如果A是一个空的0-by-0矩阵,则prod(A)返回1。如果A是一个多维数组,那么prod(A)将沿着第一个非子集维度行为并返回一个乘积数组。 该维数的尺寸减小到1,而所有其他维数的尺寸保持不变。如果输入A为单个,则prod函数计算并返回B为单个;对于所有其他数字和逻辑数据类型,prod函数计算并返回B为double。
    prod(A,dim) 沿dim维度返回乘积。 例如,如果A是矩阵,则prod(A,2)是包含每一行的乘积的列向量。
    prod(___,datatype) 在数据类型指定的类中乘以并返回一个数组。
    sum(A) 数组元素的总和;返回数组的不同维度的和。如果A是浮动的,那么是双倍或单个,B是本地累加的,它与A相同,B与A具有相同的类。如果A不是浮动的,则B被累加为双,B具有类double。如果A是向量,则sum(A)返回元素的总和。如果A是矩阵,则sum(A)将A的列作为向量,返回每列的和的行向量。如果A是一个多维数组,sum(A)将沿着第一个非单例维度的值作为向量来处理,返回一个行向量的数组。
    sum(A,dim) 沿标量A的维度求和。
    sum(…, ‘double’)sum(…, dim,‘double’) 执行双精度加法,并返回double类型的答案,即使A具有数据类型单一或整型数据类型。这是整型数据类型的默认值。
    sum(…, ‘native’)sum(…, dim,‘native’) 在本机数据类型A中执行添加,并返回相同数据类型的答案。 这是单和双的默认值。
    ceil(A) 向正无穷方向舍入;将a元素舍入为大于或等于A的最近整数。
    fix(A) 舍入为零
    floor(A) 向负无穷方向舍入;将a元素舍入为小于或等于a的最近整数。
    idivide(a, b)idivide(a, b,‘fix’) 整数除法的舍入选项;与A./B相同,只是分数的商向零舍入到最接近的整数。
    idivide(a, b, ‘round’) 分数的商舍入到最近的整数。
    idivide(A, B, ‘floor’) 分数商向负无穷大舍入到最接近的整数。
    idivide(A, B, ‘ceil’) 分数商向无穷大舍入到最接近的整数。
    mod (X,Y) 除法后的模数;返回X - n.* Y,其中 n = floor(X./Y)。 如果Y不是整数,并且商X / Y在整数的舍入误差内,则n是整数。 输入X和Y必须是相同大小的真实数组或实数标量(提供Y〜= 0)。请注意:mod(X,0) 是 Xmod(X,X) 是 0对于 X = Y 和 Y = 0的 mod(X,Y)具有与Y相同的符号。
    rem (X,Y) 除法之后的余数;返回X - n.* Y,其中n = fix(X./Y)。 如果Y不是整数,并且商X / Y在整数的舍入误差内,则n是整数。 输入X和Y必须是相同大小的真实数组或实数标量(提供Y〜= 0)。请记住:rem(X,0) 是 NaNX〜= 0的rem(X,X)为0对于 X~=Y 和 Y~=0 的rem(X,Y)与X具有相同的符号。
    round(X) 舍入到最接近的整数; 将X的元素舍入到最接近的整数。 正数元素的小数部分为0.5,最大到最接近的正整数。 负数元素的小数部分为-0.5,向下舍入到最接近的负整数。

    关系运算

    MATLAB关系运算

    2018-08-11 10:29 更新

    MATLAB关系运算符对数组的元素进行设置,将元素设置为逻辑1(真)的关系是真实的和逻辑0(假),它是两个阵列,可以返回一个相同大小的逻辑阵列间的比较。

    MATLAB关系运算符标和非标量数据上也能正常工作。

    MATLAB关系运算符如下表:

    操作符 描述
    < 小于
    <= 小于等于
    > 大于
    >= 大于等于
    == 等于
    ~= 不等于

    详细例子

    在MATLAB的命令提示符下建立一个脚本文件,并输入下述代码:

    a = 100;
    b = 200;
    if (a >= b)
    max = a
    else
    max = b
    end
    

    运行该文件,产生的结果如下:

    max =
       200
    

    除了在上述的关系运算符,MATLAB提供下列命令/函数用于同样的目的:

    函数 描述
    eq(a, b) 测试a是否等于b
    ge(a, b) 测试是否大于或等于B
    gt(a, b) 测试a是否大于b
    le(a, b) 测试a是否小于或等于b
    lt(a, b) 测试a是否小于b
    ne(a, b) 测试a是否不等于b
    isequal 测试数组以获得相等性
    isequaln 测试数组相等,将NaN值视为相等

    详细例子

    在MATLAB的命令提示符中建立一个脚本文件,并输入下述的代码:

    % comparing two values
    a = 100;
    b = 200;
    if (ge(a,b))
    max = a
    else
    max = b
    end
    % comparing two different values
    a = 340;
    b = 520;
    if (le(a, b))
    disp(' a is either less than or equal to b')
    else
    disp(' a is greater than b')
    end
    

    运行该文件,产生如下结果:

    max =
       200
     a is either less than or equal to b
    

    位运算

    MATLAB位运算

    2018-08-11 10:24 更新

    MATLAB提供位运算,如’位’,'位或’和’位不操作,移位操作等各种函数

    以下的表格显示了常用的按位运算:

    函数 目的/作用
    bitand(a, b) 整数a和b的逐位AND
    bitcmp(a) a的位补码
    bitget(a,pos) 在指定位置pos中获取位,在整数数组A中
    bitor(a, b) 整数a和b的逐位OR
    bitset(a, pos) 在某一位置上设置位
    bitshift(a, k) 返回向左移位k位,相当于乘以2k。k的负值对应于向右移位或除以2 | k | 并舍入到最接近的整数到负无穷大。任何溢出位都被截断。
    bitxor(a, b) 整数a和b的逐位异或
    swapbytes 交换字节顺序

    详细例子


    在MATLAB中建立一个脚本文件,并输入下面的代码:

    a = 60; % 60 = 0011 1100   
    b = 13; % 13 = 0000 1101 
    c = bitand(a, b)      % 12 = 0000 1100  
    c = bitor(a, b)       % 61 = 0011 1101 
    c = bitxor(a, b)      % 49 = 0011 0001 
    c = bitshift(a, 2)    % 240 = 1111 0000 */
    c = bitshift(a,-2)    % 15 = 0000 1111 */
    

    运行该文件,显示以下结果:

    c =
        12
    c =
        61
    c =
        49
    c =
       240
    c =
        15
    
    展开全文
  • Matlab 以矩阵运算为基础, 把计算可视化程序设计融合到了一个交互工作环境中, 可实现工程计算、算法研究、建模和仿真、数据分析及可视化、科学和工程绘图、应用程序开发等功能. Sim u link 是M at lab 所提供...
  • MATLAB混合编程与工程应用.pdf

    热门讨论 2010-05-19 10:32:48
    第5 章 MATLAB ActiveX 应用集成93 5.1 ActiveX 简介93 5.1.1 COM 简介93 5.1.2 什么是ActiveX 及ActiveX 组件94 5.1.3 ActiveX 组件服务内容94 5.2 MATLAB 作为ActiveX 客户端应用95 5.2.1 ActiveX 对象创建、...
  • Matlab 是由Math Works 公司于1984 年推出数值计算及图形处理软件,可以实现数值分析、优化、...但是,由于Matlab开发平台局限性,在其上面开发程序不能脱离Matlab运行环境,因而在处理一些实际应用问题时显得

    Matlab 是由Math Works 公司于1984 年推出的数值计算及图形处理软件,可以实现数值分析、优化、统计、偏微分方程数值解、自动控制、信号处理、图像处理等若干领域的计算和图形显示功能。其中,控制系统工具箱的集成为设计和分析各种复杂的控制系统提供了有效的方法和途径。

    但是,由于Matlab开发平台的局限性,在其上面开发的程序不能脱离Matlab运行环境,因而在处理一些实际应用问题时显得灵活性不足,而VC++则在一定程度上能够弥补这一漏洞,因此,现将二者结合共用,各献其长,可以为科研工作和工程开发提供了更为强大的技术支持。
     
    1、Matlab与VC混合编程的实现方法
     
    Matlab作为控制系统设计的一种通用工具,它可以和VC方便的进行连接。一般而言,Matlab与VC混合编程的实现方法主要有以下三种方法:
     
    (1)通过引擎(Engine),采用客户机服务器的计算模式,通过Window的ActiveX通道和Matlab进行连接。具体应用时,往往在VC中设计程序框架,以编译的程序作为前端客户机;通过调用Matlab引擎在后台实现与服务器的连接,实现动态通信。
     
    (2)应用Matlab数学函数库,Matlab中包含了内容丰富的函数库,而且还提供了与VC的数学函数接口,用户可以方便的在VC的IDE(集成开发环境)中调用。
     
    (3)通过DLL实现VC与Matlab的混合编程。DLL是一个可执行的二进制文件。把很多通用的功能放在DLL中,可以供多个应用程序调用,这样可以很好的减少外部存储空间的占有量,并实现代码的共享。
     
    在上述三种方法中,第一种方法对调用Matlab的工具箱很实用,所有在进行控制系统的设计和分析时,一般都是通过调用Matlab引擎(Engine)来实现的。本文主要介绍采用通过引擎(Engine)来实现VC与Matlab的混合编程。
     
    2、MATLAB引擎简介
     
    Matlab引擎是Matlab提供的一系列程序的结合,它允许用户在自己的应用程序中对Matlab进行调用,将Matlab作为一个操作引擎使用,使其在后台运行。一般Matlab 引擎采用客户机/ 服务器(Client/ Sever) 计算方式,就是一种把应用处理负载分布到客户机和服务器上的一种计算模式,客户机和服务器既可以是存在于同一台计算机,也可以通过网络来实现信息共享。
     
    一般情况下,客户机是运行前端软件的PC机,并且知道如何与服务器通信,服务器与此相对应,是接收请求信息,并采取相应行的机器。由于客户机和服务器共同承担处理负载,使系统总体性能大为提高。在实际应用过程中,把VC的C语言或C + + 语言的程序作为前端客户机程序,它从Matlab 引擎接收数据信息,并与引擎传递命令的数据信息。表1是几种常用的Matlab引擎调用函数。
     
     
    表1:Matlab引擎常用调用函数
     
     
    通过Matlab引擎用户可以完成以下任务:首先,可以将Matlab作为一个功能强大的和可编程的数学函数库,调用Matlab中的大量的数学计算函数,完成复杂的计算任务;其次,可以为一个特定的任务构建一个完整的系统,前台的用户界面用高级语言编写,后台的计算任务由Matlab引擎来完成;最后,用户不但可以在本地计算机上调用Matlab引擎,而且还可以通过网络调用其它计算机上的Matlab引擎,这样可以很好的实现资源的共享和作业的分工合作。
     
    3、Matlab引擎实现VC和Matlab混合编程的步骤
     
    要想在VC集成环境下利用Matlab引擎实现VC和Matlab的混合编程,一般需要经过以下几个必要的步骤:
       
    (1)Visual C++6.0 编译环境的设置:通过菜单 Tools/ Options,打开Visual C++6.0设置属性页,进入 Directorie页面,在 Show Directories for下拉列表中选择Include Files,添加路径:D:\Matlab6p5\extern\include(在Matlab的安装路径下);再选择下拉列表中的 Library Files,添加路径:D:\Matlab6p5\extern\ lib\win32\Microsoft\msvc60(在Matlab的安装路径下)。编译环境只需设置一次。
     
    (2)添加库文件: 通过菜单 Projects|settings,进入 Link 页面,在 Object/Library Modules 框中,添加库文件名:libmx.lib 、libmat.lib 、libeng.lib。每个新的工程文件都要单独添加库文件。
     
    (3)在使用 engine 函数的程序头文件中包含如下两个头文件:#include "engine.h";#include 。
     
    (4)在应用程序中添加调用Matlab引擎的程序代码:
     
    {
    Engine *ep;
    if(!(ep=engOpen(" \0")))          //打开Matlab引擎,建立与本地Matlab的连接
    {
    fprintf(stderr,"\n Can't start MATLAB engine\n");
    exit(-1);
    }
       
    以上步骤是对VC与Matlab混合编程的编译环境进行设置,在完成了以上基本步骤后就可以利用Matlab引擎库函数engEvalString来调用Matlab的内建函数了。
     
    4、VC与Matlab混合编程应用实例
     
    根据上面的方法,下面通过一个具体的实力来说明如何实现VC与Matlab混合编程、它们之间的数据通信以及VC环境下对Matlab命令的调用。
       
    首先,利用VC++6.0的MFC建立一个单文档结构的应用程序,加入一个菜单资源,为其映射相应的功能函数;
     
    其次,根据Matlab引擎实现VC和Matlab的混合编程步骤(见第三部分)为程序设置相应的编译环境并添加连接库函数;
       
    然后,调用Matlab的内建函数和命令,主要编写程序代码如下:
     
    static double Areal[6]={1,2,3,4,5,6};
    mxArray *T=NULL,*a=NULL,*d=NULL;
    double time[10]={0,1,2,3,4,5,6,7,8,9};
    /*利用mx函数库创建矩阵,传递参数。*/
    T=mxCreateDoubleMatrix(1,10,mxREAL);
    memcpy((char*)mxGetPr(T),(char*)time,10*sizeof(double));
    /*通过上面创建的Matlab Engine连接句柄将参数传递给Server端*/
    engPutVariable(ep,"T",T);
    /*调用Matlab内建的函数和指令*/
    engEvalString(ep,"D=.5.*(-9.8).*T.^5;");
    engEvalString(ep,"plot(T,D);");
     
    最后,添加头文件:#include "matlab.h"。编译运行,就可以得到如(图1)所示的结果:

     
    图1:调用Matlab引擎输出结果
       
    上面例子是VC和Matlab的混合编程的一个简单应用,在实际的数值计算,控制系统开发等工程应用中,可以很好的利用VC和Matlab的混合编程技术,从而简化应用程序的开发工作量。
     
    5、结论
     
    Matlab提供了强大的数学计算功能和丰富的工具箱, 使用VC和Matlab的混合编程, 可以发挥各自特长, 缩短工程应用软件的开发周期, 同时也提高了程序的运行效率。其中,基于客户机/服务器计算模式的Matlab引擎是实现VC与Matlab 混合编程的一种常用方法。
     
    通过对引擎调用与数据组织方式的面向对象的设计,将数据组织透明化,极大地简化了程序设计过程, 封装了对Matlab 引擎的访问和与Matlab 服务器进行数据交换的细节,为用户提供了一个友好的编程接口环境。
    展开全文
  • MATLAB 入门基础知识

    2018-11-13 10:26:13
    MATLAB是美国MathWorks公司出品一款商业数学软件,可用于算法开发、数据可视化、数据分析以及数值计算高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。它将数值分析、矩阵计算、科学数据可视...

    MATLAB是美国MathWorks公司出品的一款商业数学软件,可用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,代表了当今国际科学计算软件的先进水平。   

    它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连  matlab开发工作界面接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。普遍认为,MATLAB具有以下六个特点:

    1、编程效率高 :用MATLAB编写程序犹如在演算纸上排列出公式与求解问题,MATLAB语言也可通俗地称为演算纸式的科学算法语言。由于它编写简单,所以编程效率高,易学易懂。

    2、用户使用方便 :MATLAB语言把编辑、编译、连接和执行融为一体,其调试程序手段丰富,调试速度快 ,需要学习时间少。它能在同一画面上进行灵活操作快速排除输入程序中的书写错误、语法 错误以至语意错误,从而加快了用户编写、修改和调试程序的速度,可以说在编程和调试过程中它是一种比VB还要简单的语言。

    3、扩充能力强 :高版本的MATLAB语言有丰富的库函数,在进行复杂的数学运算时可以直接调用,而且MATLAB的库函数同用户文件在形成上一样,所以用户文件也可作为MATLAB的库函数来调用。因而,用户可以根据自己的需要方便地建立和扩充新的库函数,以便提高MATLAB使用效率和扩充它的功能。

    4、语句简单,内涵丰富  :MATLAB语言中最基本最重要的成分是函数,其一般形式为(a,6,c…)= fun(d,e ,f,…),即一个函数由函数名,输入变量d,e,f,…和输出变量a,b,c… .组成,同一函数名F,不同数目的输入变量(包括无输入变量)及不同数目的输出变量,代表着不同的含义。这不仅使MATLAB的库函数功能更丰富,而大大减少了需要的磁盘空间,使得MATLAB编写的M文件简单、短小而高效。

    5、高效方便的矩阵和数组运算 :MATLAB语言像Basic、Fortran和C语言一样规定了矩阵的一系列运算符,它不需定义数组的维数,并给出矩阵函数、特殊矩阵专门的库函数,使之在求解诸如信号处理、建模、系统识别、控制、优化等领域的问题时,显得大为简捷、高效、方便,这是其它高级语言所不 能比拟的。

    6、方便的绘图功能 :MATLAB的绘图是十分方便的,它有一系列绘图函数(命令),使用时只需调用不同的 绘图函数(命令),在图上标出图题、XY轴标注,格绘制也只需调用相应的命令,简单易行。另外,在调用绘图函数时调整自变量可绘出不变颜色的点、线、复线或多重线。

    至此,MATLAB的基础知识介绍完毕,喜欢的小伙伴请继续关注哈!!

    展开全文
  • 例如,使用COM技术,开发人员可以选择一个软件供应商数据库接口组件,而选用另外一个软件供应商提供商业图形组件,开发人员只要将这些组建集成起来,应用到另外一个软件供应商提供数学分析环境中完成自己...
  • MATLAB操作基础

    2012-11-08 12:30:10
    介绍matlab的界面,matlab的集成环境、运行环境和帮助系统,以便大学掌握matlab软件的应用
  • 将高性能数值计算和可视化集成在一起,并提供大量内置函数,广泛应用于科学计算、控制系统、信息处理等领域分析、仿真和设计工作中。 地位高——在欧美已作为大学工科学生必修计算机语言之一 (C, FORTRAN, ...
  • 它是一个多功能科学计算平台,将算法开发、数据分析、矩阵计算等诸多强大功能集成在一个易于操作视窗环境中。MATLABSimulink更是被认为可以“仿真任何系统”。正是由于MATLAB/Simulink强大功能,它在...

空空如也

空空如也

1 2 3 4 5 ... 13
收藏数 259
精华内容 103
关键字:

matlab的集成应用环境

matlab 订阅