在这种情况下,我尝试创建一个新的块参数作为新属性,以保存特定的新数据,我不想将其保存在已经保留给其他不同相关数据的默认参数中
对于此参数,我想使用命令 get_param 和 set_para ,它们必须每天都存在
我的意思是带有默认参数的那些。 https://edoras.sdsu.edu/doc/matlab/toolbox/simulink/slref/parameters2.html#7515
答案 0 :(得分:2)
我不确定这正是您要搜索的内容,但是我举了一个示例,说明了如何通过MATLAB / Simulink中的脚本以编程方式创建蒙版。即使可以使用这些命令获得相同的结果,我也不会使用get_param
/ set_param
。我们将使用更简单,更清晰的Simulink
对象(至少是IMHO)。
对于我们的游乐场,让我们用一个简单的常量创建这个简单的子系统(block
),该常量在输出中给出一个我们想从掩码中获取的名为a
的变量的名称:
查看此块的地址。我的simulink模型是mask.slx
,因此我可以使用地址mask/block
(视口的左上角)寻址该子组,如您在此处看到的:
这时,我们可以使用以下代码为子组添加一个编辑参数框,该框固定a
的值:
clc
clear all
% The subgroup for which we want to programmatically create a mask
block_name = 'mask/block';
% Now we can create the mask parameter programmatically as you requested
% There are two way: the old one using get_param and set_param and a more
% clear one using the Simulink interface.
% I will go with thw second one, since it is really more straightforward
% with respect to the first one.
% The first think to do is to create the mask itself
% If the mask already exist, we would get an error, thus we can avoid it by
% checking if it already exist. This is something that you should check out.
mask_hdl = Simulink.Mask.create(block_name);
% mask_hdl = Simulink.Mask.get(block_name); % For use an existing mask
% Now we are ready to create the mask parameters:
edit_a_hdl = mask_hdl.addParameter( ...
'Type', 'edit', ...
'Prompt', 'Sets constant variable', ...
'Name', 'a');
edit_a_hdl.Value = '10';
运行脚本,将屏蔽代码并设置变量,如下所示:
还有更多信息on this topic here。
现在,可以说您像以前一样拥有游乐场,并且已像上一张图像一样遮盖了该子组。您可以通过get_param
和set_param
在掩码中以编程方式设置(或获取)它的值,如下所示:
value = get_param(block_name, 'a');
value = str2double(value); % Values should always be string!
% Thus we must convert it
set_param(block_name, 'a', sprintf('%d', value * 100));
并且您可以看到该值现已更新:
同样,您可以使用Simulink
对象来达到相同的结果。
mask_hdl = Simulink.Mask.get(block_name);
edit_a_hdl = mask_hdl.Parameters(1); % We know its position in the struct array
value = str2double(edit_a_hdl.Value);
value = value * pi;
edit_a_hdl.Value = sprintf('%f', value);
,正如您所看到的,我们拥有新的价值:
答案 1 :(得分:1)