您的位置:首页 > 房产 > 建筑 > 2023年中国进入一级战备状态了吗_浙江杭州最新消息_引擎优化搜索_品牌宣传策略

2023年中国进入一级战备状态了吗_浙江杭州最新消息_引擎优化搜索_品牌宣传策略

2025/5/17 10:43:01 来源:https://blog.csdn.net/BlueBachke/article/details/146210007  浏览:    关键词:2023年中国进入一级战备状态了吗_浙江杭州最新消息_引擎优化搜索_品牌宣传策略
2023年中国进入一级战备状态了吗_浙江杭州最新消息_引擎优化搜索_品牌宣传策略

自动创建模型

1.创建空白模型
function new_model(modelname) 
% NEW_MODEL Create a new, empty Simulink model
% NEW_MODEL('MODELNAME') creates a new model with
% the name 'MODELNAME'. Without the 'MODELNAME'
% argument, the new model is named 'my_untitled'.
if nargin == 0 modelname = 'my_untitled';
end
% create and open the model
open_system(new_system(modelname));
% set default screen color
set_param(modelname,'ScreenColor','green');
% set default solver
set_param(modelname,'Solver','ode3');
% save the model
save_system(modelname);
2.新增模块,设置模块位置
function new_model(modelname) 
% NEW_MODEL Create a new, empty Simulink model
% NEW_MODEL('MODELNAME') creates a new model with
% the name 'MODELNAME'. Without the 'MODELNAME'
% argument, the new model is named 'my_untitled'.
if nargin == 0 modelname = 'mymodel';
end
% create and open the model
open_system(new_system(modelname));
% set default screen color
set_param(modelname,'ScreenColor','white');
% set default solver
set_param(modelname,'Solver','ode3');
% save the model
save_system(modelname);
add_block('simulink/Sources/Sine Wave','mymodel/Sine1');
set_param('mymodel/Sine1','position',[140,80,180,120]);
add_block('simulink/Sources/Pulse Generator','mymodel/Pulse1');
set_param('mymodel/Pulse1','position',[140,200,180,240]);
add_block('simulink/Ports & Subsystems/Subsystem','mymodel/Subsystem1');
set_param('mymodel/Subsystem1','position',[315,120,395,200]);
add_block('simulink/Sinks/Scope','mymodel/Scope1');
set_param('mymodel/Scope1','position',[535,140,575,180]);

3.删除模块间信号线
delete_line('mymodel/Subsystem1','In1/1','Out1/1');
add_block('simulink/Sources/In1','mymodel/Subsystem1/In2');set_param('mymodel/Subsystem1/In1','position',[50,50,90,70]);
set_param('mymodel/Subsystem1/In2','position',[50,130,90,150]);
set_param('mymodel/Subsystem1/Out1','position',[500,80,540,100]);add_block('simulink/Math Operations/Add','mymodel/Subsystem1/Add1');
set_param('mymodel/Subsystem1/Add1','position',[250,80,290,120]);

set_param('mymodel/Subsystem1/Out1','position',[500,80,540,100]);

上式中坐标位置[500,80,540,100]其实是每个模块的左上角和右下角的坐标位置(x,y)

4.连接模块

要想把模块连接起来就需要知道每个模块的输出或输入的左边,然后用指令直接连接起来

比如我们以正弦曲线Sine1与脉冲模块Pulse1模块去链接子系统Subsystem1模块

首先需要通过如下指令找到Sine1与Pulse1模块的坐标,即红色方框的坐标

Sine1_Port = get_param('mymodel/Sine1','PortConnectivity')

同样的,子系统也需要查找位置(注意:找位置时模型必须是打开的状态)

是一个有3个元素的数组,是因为子系统正好有两个输入,和一个输出,找到第一个输入的坐标

打开工作区生成的结构体数据

找到位置

现在我们连接Sine1模块输出与Subsystem1模块的输入1

add_line('mymodel', [185 100; 310 140]);

运行整个代码看效果

整个代码如下:

function new_model(modelname) 
% NEW_MODEL Create a new, empty Simulink model
% NEW_MODEL('MODELNAME') creates a new model with
% the name 'MODELNAME'. Without the 'MODELNAME'
% argument, the new model is named 'my_untitled'.
if nargin == 0 modelname = 'mymodel';
end
% create and open the model
open_system(new_system(modelname));
% set default screen color
set_param(modelname,'ScreenColor','white');
% set default solver
set_param(modelname,'Solver','ode3');
% save the model
save_system(modelname);
add_block('simulink/Sources/Sine Wave','mymodel/Sine1');
set_param('mymodel/Sine1','position',[140,80,180,120]);
add_block('simulink/Sources/Pulse Generator','mymodel/Pulse1');
set_param('mymodel/Pulse1','position',[140,200,180,240]);
add_block('simulink/Ports & Subsystems/Subsystem','mymodel/Subsystem1');
set_param('mymodel/Subsystem1','position',[315,120,395,200]);
add_block('simulink/Sinks/Scope','mymodel/Scope1');
set_param('mymodel/Scope1','position',[535,140,575,180]);
delete_line('mymodel/Subsystem1','In1/1','Out1/1');
add_block('simulink/Sources/In1','mymodel/Subsystem1/In2');
add_block('simulink/Math Operations/Add','mymodel/Subsystem1/Add1');
set_param('mymodel/Subsystem1/Add1','position',[250,80,290,120]);
add_line('mymodel', [185 100; 310 140]);

可以看见,线条是直接相连的,也可以找一个中间的过渡坐标再连接,如下图所示

add_line('mymodel', [185 100; 275 100]);
add_line('mymodel', [275 100; 275 140]);
add_line('mymodel', [275 140; 310 140]);

 

同样的,把Pulse1与子系统相连

add_line('mymodel', [185 220; 275 220]);
add_line('mymodel', [275 220; 275 180]);
add_line('mymodel', [275 180; 310 180]);

 

当然如果觉得上面的方式比较麻烦,还有其他方法进行模块之间的连接,上面的麻烦之处是在于你需要知道具体的位置,不利于自动化脚本的生成。

通过端口手柄的方式:PortHandles

% add_line('mymodel', [185 100; 275 100]);
% add_line('mymodel', [275 100; 275 140]);
% add_line('mymodel', [275 140; 310 140]);
% add_line('mymodel', [185 220; 275 220]);
% add_line('mymodel', [275 220; 275 180]);
% add_line('mymodel', [275 180; 310 180]);
SubsysPortHandles = get_param('mymodel/Subsystem1','PortHandles');
SinePortHandles = get_param('mymodel/Sine1','PortHandles');
add_line('mymodel',SinePortHandles.Outport(1),...
SubsysPortHandles.Inport(2));

屏蔽刚才通过位置连接的信号,通过获取句柄的方式,在用add_line内的端口时,切记Outport在前面,Inport在后面,有多个端口使用序号

效果如下:

同样的方式,连接子系统和示波器

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

还有一种似乎看上去更快速的方法连接模块

使用模块的名字和ID

% add_line('mymodel', [185 100; 275 100]);
% add_line('mymodel', [275 100; 275 140]);
% add_line('mymodel', [275 140; 310 140]);
% add_line('mymodel', [185 220; 275 220]);
% add_line('mymodel', [275 220; 275 180]);
% add_line('mymodel', [275 180; 310 180]);
% SubsysPortHandles = get_param('mymodel/Subsystem1','PortHandles');
% ScopePortHandles = get_param('mymodel/Scope1','PortHandles');
% add_line('mymodel',SubsysPortHandles.Outport(1),...
% ScopePortHandles.Inport(1));
add_line('mymodel','Sine1/1','Subsystem1/1');
add_line('mymodel','Pulse1/1','Subsystem1/2');

使用该方法,把子系统内部的模块连接起来

add_line('mymodel/Subsystem1','In1/1','Add1/1');
add_line('mymodel/Subsystem1','In2/1','Add1/2');
add_line('mymodel/Subsystem1','Add1/1','Out1/1');

上面这两种方法较第一种虽然更方便,但是模块之间是直接相连的,没有过渡,信号交叉会比较严重

5.注释模块

注释一个模块:

set_param('mymodel/Pulse1','commented','on');

 取消注释一个模块:

set_param('mymodel/Pulse1','commented','off');

6.给信号线增加名字

比如给脉冲信号的线上增加一个名字

p = get_param('mymodel/Pulse1','PortHandles');
l = get_param(p.Outport,'Line');
set_param(l,'Name','pulse_test');

7.重新排布指令
Simulink.BlockDiagram.arrangeSystem('mymodel/Subsystem1')

 

8.在多个窗口打开同一个模型

打开了比如3个窗口,如果修改其中一个,那么另外两个窗口内的也会同步改变

这个功能我感觉可以用于多人协作

open_system('mymodel','window')
9.高亮一个模块
hilite_system('mymodel/Subsystem1')

 

10.背景颜色和模块颜色设置

设置模块的颜色:

'automatic', 'black', 'white', 'red', 'green', 'blue', 'cyan', 'magenta', 'yellow', 'gray', 'lightBlue', 'orange', 'darkGreen'

RGB值:r为red,g为green,b为blue,值范围为0-1,进行三色混合

背景颜色:

set_param(gcs,'ScreenColor','[0.3, 0.9, 0.5]')

模块颜色设置:

set_param('mymodel/Pulse1', 'BackgroundColor', 'red');

本节完整代码如下:

function new_model(modelname) 
% NEW_MODEL Create a new, empty Simulink model
% NEW_MODEL('MODELNAME') creates a new model with
% the name 'MODELNAME'. Without the 'MODELNAME'
% argument, the new model is named 'my_untitled'.
if nargin == 0 modelname = 'mymodel';
end
% create and open the model
open_system(new_system(modelname));
% set default screen color
set_param(modelname,'ScreenColor','white');
% set default solver
set_param(modelname,'Solver','ode3');
% save the model
save_system(modelname);
add_block('simulink/Sources/Sine Wave','mymodel/Sine1');
set_param('mymodel/Sine1','position',[140,80,180,120]);
add_block('simulink/Sources/Pulse Generator','mymodel/Pulse1');
set_param('mymodel/Pulse1','position',[140,200,180,240]);
add_block('simulink/Ports & Subsystems/Subsystem','mymodel/Subsystem1');
set_param('mymodel/Subsystem1','position',[315,120,395,200]);
add_block('simulink/Sinks/Scope','mymodel/Scope1');
set_param('mymodel/Scope1','position',[535,140,575,180]);
delete_line('mymodel/Subsystem1','In1/1','Out1/1');
add_block('simulink/Sources/In1','mymodel/Subsystem1/In2');
add_block('simulink/Math Operations/Add','mymodel/Subsystem1/Add1');
set_param('mymodel/Subsystem1/Add1','position',[250,80,290,120]);
add_line('mymodel', [185 100; 275 100]);
add_line('mymodel', [275 100; 275 140]);
add_line('mymodel', [275 140; 310 140]);
add_line('mymodel', [185 220; 275 220]);
add_line('mymodel', [275 220; 275 180]);
add_line('mymodel', [275 180; 310 180]);
SubsysPortHandles = get_param('mymodel/Subsystem1','PortHandles');
ScopePortHandles = get_param('mymodel/Scope1','PortHandles');
add_line('mymodel',SubsysPortHandles.Outport(1),...
ScopePortHandles.Inport(1));
add_line('mymodel/Subsystem1','In1/1','Add1/1');
add_line('mymodel/Subsystem1','In2/1','Add1/2');
add_line('mymodel/Subsystem1','Add1/1','Out1/1');
set_param('mymodel/Pulse1','commented','on');
set_param('mymodel/Pulse1','commented','off');
p = get_param('mymodel/Pulse1','PortHandles');
l = get_param(p.Outport,'Line');
set_param(l,'Name','pulse_test');
Simulink.BlockDiagram.arrangeSystem('mymodel/Subsystem1')
hilite_system('mymodel/Subsystem1')
set_param(gcs,'ScreenColor','[0.3, 0.9, 0.5]')
set_param('mymodel/Pulse1', 'BackgroundColor', 'red');

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com