文档GydF4y2Ba

编程建模基础GydF4y2Ba

您可以执行大多数Simulink万博1manbetxGydF4y2Ba®GydF4y2Ba在MATLAB中以编程方式建模基础知识GydF4y2Ba®GydF4y2Ba命令提示符。的函数部分列出了与基本建模操作相对应的命令,例如创建模型、向模型添加块和设置参数GydF4y2Ba模型编辑基础GydF4y2Ba. 这些示例显示了其中一些命令以及如何使用它们。GydF4y2Ba

负荷模型GydF4y2Ba

加载模型会将其带入内存,但不会在Simulink编辑器中打开它进行编辑。万博1manbetx在加载模型之后,您可以以编程方式对其进行操作。只有在打开模型时,才能使用Sim万博1manbetxulink Editor编辑模型。GydF4y2Ba

要加载系统,请使用GydF4y2Baload_systemGydF4y2Ba命令。例如,加载GydF4y2BavdpGydF4y2Ba模型,在MATLAB命令提示符下,输入:GydF4y2Ba

load_system (vdp)GydF4y2Ba

创建模型并指定参数设置GydF4y2Ba

您可以编写一个函数来创建模型并使用您喜欢的设置。例如,此函数创建具有绿色背景的模型,并使用ode3解算器:GydF4y2Ba

创建一个新的空的Simulink模型% new_model(' modelname ')创建一个新模型,其中%的名称为' m万博1manbetxodelname '。如果没有'MODELNAME' %参数,新模型将被命名为'my_untitled'。If nargin == 0 modelname = 'my_untitled';创建并打开模型open_system(new_system(modelname));%设置默认屏幕颜色set_param(modelname,'ScreenColor','green');% set default solver set_param(modelname,' solver ','ode3');%保存模型save_system(modelname);GydF4y2Ba

在打开模型时以编程方式加载变量GydF4y2Ba

如果将变量赋值为块参数值,则必须在模型中定义变量的值。看到GydF4y2Ba打开模型时加载变量GydF4y2Ba.属性以编程方式定义变量GydF4y2BaPreloadFcnGydF4y2Ba回调的GydF4y2Baset_paramGydF4y2Ba函数。以这种形式使用函数:GydF4y2Ba

set_param(“mymodel”、“PreloadFcn”、“表达”)GydF4y2Ba

表示GydF4y2Ba是一个MATLAB命令或MATLAB脚本在您的MATLAB搜索路径。该命令设置模型GydF4y2BaPreloadFcnGydF4y2Ba回调到指定的值。保存模型以保存设置。GydF4y2Ba

例如,在MATLAB脚本中定义变量时GydF4y2Ba负荷变量mGydF4y2Ba为模型GydF4y2Bamodelname.slxGydF4y2Ba,请使用以下命令:GydF4y2Ba

set_param(“modelname”、“PreloadFcn”、“loadvar”)GydF4y2Ba
给变量赋值GydF4y2BaKGydF4y2Ba的值GydF4y2Ba15GydF4y2Ba,请使用以下命令:GydF4y2Ba

set_param('modelname','prelofcn','K=15')GydF4y2Ba

在保存模型之后,GydF4y2BaPreloadFcnGydF4y2BaCallback在您下次打开模型时执行。GydF4y2Ba

以编程方式添加和连接块GydF4y2Ba

这个示例展示了如何使用函数添加块并以编程方式连接块。一旦向模型添加了块,就可以使用三种不同的方法来连接它们:路由行、端口句柄和端口id。路由线允许您指定所有连接线段端点的精确(x,y)坐标。端口句柄和端口id允许连接线在不知道端口位置坐标的情况下阻塞端口。GydF4y2Ba

创建并打开一个名为'GydF4y2Ba我的模型GydF4y2Ba”。GydF4y2Ba

添加块,包括一个子系统块。使用GydF4y2Ba位置GydF4y2Ba数组的GydF4y2Baset_paramGydF4y2Ba函数设置块的大小和位置。使用(x,y)坐标设置左上角和右下角块。GydF4y2Ba

添加_块('simul万博1manbetxink/源/正弦波','mymodel/Sine1');设置参数('mymodel/Sine1','position',[140,80180120]);添加_块(“simulink/源/脉冲发生器”、“mymodel/Pulse1”);设置参数('mymodel/Pulse1','position',[140200180240]);添加_块('simulink/端口和子系统/子系统','mymodel/子系统1');set_param('mymodel/Subsystem1','position',[315120395200]);添加_块('simulink/Sinks/Scope','mymodel/Scope1');set_param('mymodel/Scope1','position',[535140575180]);GydF4y2Ba

内部GydF4y2Ba子系统1GydF4y2Ba,删除默认连接之间GydF4y2Ba三机一体GydF4y2Ba和GydF4y2Ba着干活GydF4y2Ba. 另外,通过复制和重命名添加第二个输入端口GydF4y2Ba三机一体GydF4y2Ba从块库中。GydF4y2Ba

删除_行('mymodel/Subsystem1'、'In1/1'、'Out1/1');添加_块('simulink/Sour万博1manbetxces/In1','mymodel/Subsystem1/In2');GydF4y2Ba

重新定位内部的输入和输出端口模块GydF4y2Ba子系统1GydF4y2Ba.GydF4y2Ba

set_param(“mymodel / Subsystem1 In1”,“位置”,[50 50、90、70]);set_param(“mymodel / Subsystem1 In2”,“位置”,(50130、90150));set_param(“mymodel / Subsystem1 /着干活”、“位置”,(500、80540100));GydF4y2Ba

插入和定位GydF4y2Ba添加GydF4y2Ba块内GydF4y2Ba子系统1GydF4y2Ba.GydF4y2Ba

add_block(“万博1manbetx数学仿真软件/操作/添加”,“mymodel / Subsystem1 / Add1”);set_param(“mymodel / Subsystem1 Add1”,“位置”,(250、80290120));GydF4y2Ba

接下来,添加线来连接模型中的所有块。从连接GydF4y2BaSine1GydF4y2Ba和GydF4y2BaPulse1GydF4y2Ba使用路由行的块。GydF4y2Ba

求(x,y)的坐标GydF4y2BaSine1GydF4y2Ba输出端口。GydF4y2Ba

Sine1_Port = get_param(“mymodel / Sine1”、“PortConnectivity”)GydF4y2Ba

Sine1_Port = struct with fields: Type: '1' Position: [185 100] SrcBlock: [] SrcPort: [] DstBlock: [1×0 double] DstPort: [1×0 double]GydF4y2Ba

获取参数GydF4y2Ba表示端口Position为[185100]。GydF4y2Ba

求(x,y)的坐标GydF4y2BaPulse1GydF4y2Ba输出端口。GydF4y2Ba

Pulse1_Port = get_param(“mymodel / Pulse1”、“PortConnectivity”)GydF4y2Ba

Pulse1_Port=struct,带字段:Type:'1'位置:[185 220]SrcBlock:[]SrcPort:[]DstBlock:[1×0 double]DstPort:[1×0 double]GydF4y2Ba

获取参数GydF4y2Ba显示端口位置为[185 220]。GydF4y2Ba

连接的输出GydF4y2BaSine1GydF4y2Ba到的第一个输入GydF4y2Ba子系统1GydF4y2Ba使用路由线的三段。GydF4y2Ba

add_line(“mymodel”,[185 100;275 100]);add_line(“mymodel”,[275 100;275 140]);add_line(“mymodel”,[275 140;310 140]);GydF4y2Ba

连接的输出GydF4y2BaPulse1GydF4y2Ba到的第二个输入GydF4y2Ba子系统1GydF4y2Ba使用路由线的三段。GydF4y2Ba

add_line(“mymodel”,[185 220;275 220]);add_line(“mymodel”,[275 220;275 180]);add_line(“mymodel”,[275 180;310 180]);GydF4y2Ba

使用GydF4y2Ba获取参数GydF4y2Ba获取正在连接的块的端口句柄。然后使用块端口句柄连接的输出GydF4y2Ba子系统1GydF4y2Ba输入GydF4y2BaScope1GydF4y2Ba.GydF4y2Ba

SubsysPortHandles = get_param (mymodel / Subsystem1 ', ' PortHandles ');ScopePortHandles = get_param (mymodel / Scope1 ', ' PortHandles ');add_line (mymodel, SubsysPortHandles.Outport(1)……ScopePortHandles.Inport (1));GydF4y2Ba

使用端口名和ID连接GydF4y2BaAdd1GydF4y2Ba块内GydF4y2Ba子系统1GydF4y2Ba连接到子系统输入和输出。Simulink使用最直接的路径连接端口。万博1manbetxGydF4y2Ba

添加行('mymodel/Subsystem1'、'In1/1'、'Add1/1');添加行('mymodel/Subsystem1','In2/1','Add1/2');添加行('mymodel/Subsystem1'、'Add1/1'、'Out1/1');GydF4y2Ba

以编程方式命名信号GydF4y2Ba

  1. 选择信号线的源块。GydF4y2Ba

  2. 使用GydF4y2Ba获取参数GydF4y2Ba将当前选定块的端口句柄赋给该变量GydF4y2BaPGydF4y2Ba.使用GydF4y2Ba获取参数GydF4y2Ba将该端口的信号线名称赋给该变量GydF4y2BaLGydF4y2Ba.然后设置信号线的名称为GydF4y2Ba“s9”GydF4y2Ba.GydF4y2Ba

p=get_-param(gcb,'PortHandles')l=get_-param(p.Outport,'Line')set_-param(l,'Name','s9'))GydF4y2Ba

自动安排模型布局GydF4y2Ba

你可以使用GydF4y2Ba万博1manbetxSimulink.BlockDiagram.arrangeSystemGydF4y2Ba命令来布局您的模型。该命令将左侧的输入块、右侧的输出块以及输入和输出之间列中的模型元素对齐。该命令一次只能影响一个系统。GydF4y2Ba

此命令对于以编程方式构建的模型非常有用,可以帮助您在不定位每个块的情况下使模型更具可读性。但是,您可以将其用于任何模型。语法是:GydF4y2Ba

万博1manbetxSimulink.BlockDiagram.arrangeSystem(系统)GydF4y2Ba
对于GydF4y2Ba系统GydF4y2Ba,输入模型名称或句柄或子系统路径。首先在Simulink编辑器中打开模型。万博1manbetxGydF4y2Ba

例如,布置子系统GydF4y2Ba飞机动力学模型GydF4y2Ba在模型中GydF4y2Baf14GydF4y2Ba.GydF4y2Ba

open_system (GydF4y2Ba“f14”GydF4y2Ba) 万博1manbetxSimulink.BlockDiagram.arrangeSystem (GydF4y2Ba“f14 /飞机动力学模型”GydF4y2Ba)GydF4y2Ba

在多个窗口中打开相同的模型GydF4y2Ba

当您打开一个模型时,模型将出现在Simulink Editor窗口中。万博1manbetx例如,如果您打开了一个模型,然后又打开了第二个模型,那么第二个模型将出现在第二个窗口中。GydF4y2Ba

要在两个Simulink编辑器窗口中打开相同的模型,在MAT万博1manbetxLAB命令提示符处,输入GydF4y2Ba开放式系统GydF4y2Ba命令并使用GydF4y2Ba窗口GydF4y2Ba论点例如,如果您有GydF4y2BavdpGydF4y2Ba模型打开,以打开模型的另一个实例GydF4y2BavdpGydF4y2Ba模型中,输入:GydF4y2Ba

开放式系统(“vdp”、“窗口”)GydF4y2Ba

得到一个GydF4y2Ba万博1manbetx标识符GydF4y2Ba

模型中的每个块都有一个Simulink标识符(SID),一个唯一万博1manbetx且不可修改的标识符。SID在对象的生存期内保持不变,并与模型一起保存。如果对象的名称更改,SID将保持不变。SID具有以下格式:GydF4y2Bamodel_name:数量GydF4y2Ba.有关详细信息,请参见GydF4y2Ba使用Simulink标识符定位图表组件万博1manbetxGydF4y2Ba.GydF4y2Ba

使用方法定位图组件GydF4y2Ba万博1manbetx标识符GydF4y2Ba

Si万博1manbetxmulink标识符(SID)是自动分配给Simulink块、模型注释或状态流的唯一标识GydF4y2Ba®GydF4y2Ba对象在状态流图中。SID有助于在关系图中识别这些组件的特定实例,特别是在团队成员之间共享模型时。GydF4y2Ba

要可视化地突出显示模型中的组件,请获取SID并将其与GydF4y2Ba万博1manbetxSimulink.ID.hiliteGydF4y2Ba函数。GydF4y2Ba

SID具有以下特征:GydF4y2Ba

  • 在Simulink块、模型注释或statflow对象的生命周期内持久存在万博1manbetxGydF4y2Ba

  • 保存在模型文件中GydF4y2Ba

  • 如果块或对象名称更改,则保持不变GydF4y2Ba

  • 不能修改GydF4y2Ba

SID格式为:GydF4y2Ba

model_name: sid_numberGydF4y2Ba

  • 型号名称GydF4y2Ba是块、注释或statflow对象所在模型的名称。GydF4y2Ba

  • sid_numberGydF4y2Ba是模型中唯一的数字,由Simulink分配。万博1manbetxGydF4y2Ba

强调块GydF4y2Ba

  1. 打开模型GydF4y2BavdpGydF4y2Ba进来GydF4y2BavdpGydF4y2Ba在MATLAB命令提示符处。GydF4y2Ba

  2. 得到SID的GydF4y2BaμGydF4y2Ba块GydF4y2Ba

    万博1manbetxSimulink.ID.getSID (GydF4y2Ba的vdp /亩GydF4y2Ba)GydF4y2Ba
    ans = vdp: 4GydF4y2Ba
  3. 使用SID突出显示块。GydF4y2Ba

    万博1manbetxSimulink.ID.hilite(GydF4y2Ba“vdp:4”GydF4y2Ba)GydF4y2Ba

    该块在模型中高亮显示:GydF4y2Ba

突出显示注释GydF4y2Ba

  1. 打开模型GydF4y2BavdpGydF4y2Ba.GydF4y2Ba

  2. 选择图顶部的注释。GydF4y2Ba

  3. 获取选定注释的注释对象。GydF4y2Ba

    安= getSelectedAnnotations (GydF4y2Ba“vdp”GydF4y2Ba)GydF4y2Ba
    安=仿真软件万博1manbetx。注释GydF4y2Ba
  4. 获取注释的SID。GydF4y2Ba

    安·西德弗林GydF4y2Ba
    ans = vdp: 13GydF4y2Ba
  5. 使用SID突出显示注释。GydF4y2Ba

    万博1manbetxSimulink.ID.hilite(GydF4y2Ba“vdp:13”GydF4y2Ba)GydF4y2Ba

    注释在模型中高亮显示:GydF4y2Ba

突出GydF4y2Ba状态流GydF4y2Ba对象GydF4y2Ba

  1. 打开模型GydF4y2Basf_resolve_signal_objectGydF4y2Ba.GydF4y2Ba

  2. 获取信号对象图状态流对象的SID:GydF4y2Ba

    万博1manbetxSimulink.ID.getSID (GydF4y2Ba“sf_resolve_signal_object /信号对象图”GydF4y2Ba)GydF4y2Ba
    ans=sf\u解析信号\u对象:1GydF4y2Ba

  3. 使用SID突出显示对象。GydF4y2Ba

    万博1manbetxSimulink.ID.hilite(GydF4y2Ba'sf_解析_信号_对象:1'GydF4y2Ba)GydF4y2Ba

    对象将在模型中亮显。GydF4y2Ba

以编程方式指定颜色GydF4y2Ba

你可以使用GydF4y2Baset_paramGydF4y2Ba在MATLAB命令行或MATLAB程序中设置参数,以确定图表的背景色以及图表元素的背景色和前景色。下表总结了控制方框图颜色的参数。GydF4y2Ba

参数GydF4y2Ba 决定了GydF4y2Ba

ScreenColorGydF4y2Ba

框图背景GydF4y2Ba

写成BackgroundColorGydF4y2Ba

块和注释背景GydF4y2Ba

ForegroundColorGydF4y2Ba

块和注释前景GydF4y2Ba

将颜色参数设置为命名颜色或RGB值。GydF4y2Ba

  • 命名的颜色:GydF4y2Ba“黑色”GydF4y2Ba,GydF4y2Ba“白色”GydF4y2Ba,GydF4y2Ba“红色”GydF4y2Ba,GydF4y2Ba“绿色”GydF4y2Ba,GydF4y2Ba“蓝”GydF4y2Ba,GydF4y2Ba“青色”GydF4y2Ba,GydF4y2Ba“红色”GydF4y2Ba,GydF4y2Ba“黄色”GydF4y2Ba,GydF4y2Ba“灰色”GydF4y2Ba,GydF4y2Ba“浅蓝色”GydF4y2Ba,GydF4y2Ba“橙色”GydF4y2Ba,GydF4y2Ba暗绿色的GydF4y2Ba

  • RGB值:GydF4y2Ba“(r, g, b)”GydF4y2Ba

    哪里GydF4y2BaRGydF4y2Ba,GydF4y2BaGGydF4y2Ba,GydF4y2BaBGydF4y2Ba颜色的红色、绿色和蓝色分量是否归一化到范围内GydF4y2Ba0.0GydF4y2Ba到GydF4y2Ba1.0GydF4y2Ba.GydF4y2Ba

例如,以下命令将当前选定系统或子系统的背景色设置为浅绿色:GydF4y2Ba

设置参数(gcs,'ScreenColor','0.3,0.9,0.5]')GydF4y2Ba

另见GydF4y2Ba

|GydF4y2Ba|GydF4y2Ba|GydF4y2Ba|GydF4y2Ba|GydF4y2Ba|GydF4y2Ba|GydF4y2Ba|GydF4y2Ba|GydF4y2Ba|GydF4y2Ba

相关的话题GydF4y2Ba

这个话题有用吗?GydF4y2Ba