主要内容gydF4y2Ba

编程建模基础gydF4y2Ba

你可以执行大多数Simulink金宝appgydF4y2Ba®gydF4y2BaMATLAB中的编程建模基础gydF4y2Ba®gydF4y2Ba命令窗口,例如创建模型、向模型添加块和设置参数。这些示例展示了其中一些命令以及如何使用它们。gydF4y2Ba

负荷模型gydF4y2Ba

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

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

load_system (vdp)gydF4y2Ba

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

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

函数new_model(modelname)%new_model创建一个新的空Simulink模型%new_model('m金宝appodelname')创建一个名为%modelname'的新模型。如果没有'MODELNAME!'参数,新模型的名称为'my_untitled'。如果nargin==0 modelname='my_untitled';end%创建并打开模型open_系统(新建_系统(modelname));%设置默认屏幕颜色设置参数(modelname、'ScreenColor'、'green');%设置默认解算器set_参数(modelname、'solver'、'ode3');%保存模型保存系统(modelname);gydF4y2Ba

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

如果将变量赋值为块参数值,则必须在模型中定义变量的值。看到gydF4y2Ba创建一个模型gydF4y2Ba.属性以编程方式定义变量gydF4y2Ba预处理gydF4y2Ba回调的gydF4y2Baset_paramgydF4y2Ba函数。以这种形式使用函数:gydF4y2Ba

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

表达式gydF4y2Ba是MATLAB搜索路径上的MATLAB命令或MATLAB脚本。此命令用于设置模型gydF4y2Ba预处理gydF4y2Ba回调到指定的值。保存模型以保存设置。gydF4y2Ba

例如,当你在MATLAB脚本中定义变量时gydF4y2Baloadvar.mgydF4y2Ba为模型gydF4y2Bamodelname.slxgydF4y2Ba,使用下面的命令:gydF4y2Ba

set_param(“modelname”、“PreloadFcn”、“loadvar”)gydF4y2Ba
给变量赋值gydF4y2BaKgydF4y2Ba的值gydF4y2Ba15gydF4y2Ba,使用下面的命令:gydF4y2Ba

set_param (' modelname ', ' PreloadFcn ', ' K = 15 ')gydF4y2Ba

在保存模型之后,gydF4y2Ba预处理gydF4y2BaCallback在您下次打开模型时执行。gydF4y2Ba

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

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

创建并打开一个名为'gydF4y2BamymodelgydF4y2Ba”。gydF4y2Ba

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

add_block(模金宝app型/资源/正弦波,mymodel / Sine1);set_param(“mymodel / Sine1”、“位置”,(140、80180120));add_block(模金宝app型/资源/脉冲发生器,mymodel / Pulse1);set_param(“mymodel / Pulse1”、“位置”,[140200180240]);add_block(模金宝app型/港口和子系统/子系统,mymodel / Subsystem1);set_param(“mymodel / Subsystem1”、“位置”,[315120395200]);add_block(模金宝app型/水槽/范围,“mymodel / Scope1”);set_param(“mymodel / Scope1”、“位置”,[535140575180]);gydF4y2Ba

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

delete_line(‘mymodel / Subsystem1’、‘In1/1’,‘Out1/1’);add_block(模金宝app型/资源/ In1, mymodel / Subsystem1 In2);gydF4y2Ba

重新定位内部的输入和输出端口模块gydF4y2BaSubsystem1gydF4y2Ba.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块内gydF4y2BaSubsystem1gydF4y2Ba.gydF4y2Ba

add_块('simu金宝applink/Math Operations/add','mymodel/Subsystem1/Add1');set_param('mymodel/Subsystem1/Add1','position',[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

get_paramgydF4y2Ba表示端口Position为[185100]。gydF4y2Ba

求(x,y)的坐标gydF4y2BaPulse1gydF4y2Ba输出端口。gydF4y2Ba

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

Pulse1_Port = struct with fields: Type: '1' Position: [185 220] SrcBlock: [] SrcPort: [] DstBlock: [1×0 double] DstPort: [1×0 double]gydF4y2Ba

get_paramgydF4y2Ba表示端口位置为[185220]。gydF4y2Ba

连接的输出gydF4y2BaSine1gydF4y2Ba对第一个输入gydF4y2BaSubsystem1gydF4y2Ba使用路由线的三段。gydF4y2Ba

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

连接的输出gydF4y2BaPulse1gydF4y2Ba第二个输入gydF4y2BaSubsystem1gydF4y2Ba使用路由线的三段。gydF4y2Ba

添加_行('mymodel',[185 220;275 220]);添加_行('mymodel',[275 220;275 180]);添加_行('mymodel',[275 180;310 180]);gydF4y2Ba

使用gydF4y2Baget_paramgydF4y2Ba获取连接的块的端口手柄。然后使用块端口句柄连接的输出gydF4y2BaSubsystem1gydF4y2Ba输入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块内gydF4y2BaSubsystem1gydF4y2Ba到子系统的输入和输出。金宝appSimulink使用最直接的路径来连接端口。gydF4y2Ba

add_line(‘mymodel / Subsystem1’、‘In1/1’,‘Add1/1’);add_line(‘mymodel / Subsystem1’、‘In2/1’,‘Add1/2’);add_line(‘mymodel / Subsystem1’、‘Add1/1’,‘Out1/1’);gydF4y2Ba

以编程方式命名一个信号gydF4y2Ba

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

  2. 使用gydF4y2Baget_paramgydF4y2Ba将当前选定块的端口句柄赋给该变量gydF4y2BapgydF4y2Ba.使用gydF4y2Baget_paramgydF4y2Ba将该端口的信号线名称赋给该变量gydF4y2BalgydF4y2Ba.然后设置信号线的名称为gydF4y2Ba“s9”gydF4y2Ba.gydF4y2Ba

p = get_param(gcb,'PortHandles') l = get_param(p.t outport,'Line') set_param(l,'Name','s9')gydF4y2Ba

自动排列模型布局gydF4y2Ba

你可以使用gydF4y2Ba金宝appSimulink.BlockDiagram.arrangeSystemgydF4y2Ba命令来布局您的模型。该命令将左侧的输入块、右侧的输出块以及输入和输出之间列中的模型元素对齐。该命令一次只影响一个层。gydF4y2Ba

你可以使用gydF4y2Ba金宝appSimulink.BlockDiagram.routeLinegydF4y2Ba命令路由模型的现有行。对现有线路进行布线,可以提高线路的路线质量,避免与模型中其他线路和障碍物的重叠。gydF4y2Ba

虽然您可以在任何开放模型中使用这些命令,但它们对于以编程方式构建的模型尤其有用。例如,请参见gydF4y2Ba安排编程填充模型gydF4y2Ba.gydF4y2Ba

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

当您打开一个模型时,模型将出现在Simulink Editor窗口中。金宝app例如,如果您打开了一个模型,然后又打开了第二个模型,那么第二个模型将出现在第二个窗口中。gydF4y2Ba

要在两个Simulink编辑器窗口中打开相同的模型,在MAT金宝appLAB命令提示符处,输入gydF4y2Baopen_systemgydF4y2Ba命令并使用gydF4y2Ba窗口gydF4y2Ba论点。例如,如果你有gydF4y2BavdpgydF4y2Ba的另一个实例gydF4y2BavdpgydF4y2Ba模型,输入:gydF4y2Ba

open_system (vdp,“窗口”)gydF4y2Ba

使用高亮显示定位图元素gydF4y2Ba

要突出显示开放模型中的块、行、端口或注释,请使用gydF4y2Bahilite_systemgydF4y2Ba.gydF4y2Ba

以编程方式指定颜色gydF4y2Ba

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

参数gydF4y2Ba 决定了gydF4y2Ba

ScreenColorgydF4y2Ba

方框图背景gydF4y2Ba

背景颜色gydF4y2Ba

块和注释背景gydF4y2Ba

ForegroundColorgydF4y2Ba

块与注释前景gydF4y2Ba

将color参数设置为已命名颜色或RGB值。gydF4y2Ba

  • 命名的颜色:gydF4y2Ba“自动”gydF4y2Ba,gydF4y2Ba“黑”gydF4y2Ba,gydF4y2Ba“白色”gydF4y2Ba,gydF4y2Ba“红色”gydF4y2Ba,gydF4y2Ba“绿色”gydF4y2Ba,gydF4y2Ba“蓝”gydF4y2Ba,gydF4y2Ba“青色”gydF4y2Ba,gydF4y2Ba“红色”gydF4y2Ba,gydF4y2Ba“黄色”gydF4y2Ba,gydF4y2Ba“灰色”gydF4y2Ba,gydF4y2Ba“lightBlue”gydF4y2Ba,gydF4y2Ba“橙”gydF4y2Ba,gydF4y2Ba暗绿色的gydF4y2Ba

  • RGB值:gydF4y2Ba“[r,g,b]”gydF4y2Ba

    在哪里gydF4y2BargydF4y2Ba,gydF4y2BaggydF4y2Ba,gydF4y2BabgydF4y2Ba颜色的红色、绿色和蓝色分量是否归一化到范围内gydF4y2Ba0gydF4y2Ba来gydF4y2Ba1.0gydF4y2Ba.gydF4y2Ba

例如,下面的命令将当前选择的系统或子系统的背景颜色设置为浅绿色:gydF4y2Ba

set_param (gcs、“ScreenColor”,“(0.3,0.9,0.5)”)gydF4y2Ba

另请参阅gydF4y2Ba

|gydF4y2Ba|gydF4y2Ba|gydF4y2Ba|gydF4y2Ba|gydF4y2Ba|gydF4y2Ba|gydF4y2Ba|gydF4y2Ba|gydF4y2Ba|gydF4y2Ba|gydF4y2Ba|gydF4y2Ba

相关话题gydF4y2Ba