在matlab中替换块

时间:2017-03-21 12:29:38

标签: matlab replace block simulink

我知道这可能很简单,但至少我被困了一个小时...... 我只是无法找出错误是什么。(我读过文件) 任何帮助表示赞赏。提前致谢

function y = in_out_modeling(~)

    model_name = 'modeladvisor_test';

    all_input_blocks = find_system('modeladvisor_test', 'FollowLinks', 'on', 'LookUnderMasks', 'all', 'BlockType', 'In');
    all_output_blocks = find_system('modeladvisor_test', 'FollowLinks', 'on', 'LookUnderMasks', 'all', 'BlockType', 'Out');

    for i=1:length(all_input_blocks)
        replace_block(model_name, all_input_blocks(i), 'From');
    end

    for i=1:length(all_output_blocks)
        replace_block(model_name, all_output_blocks(i), 'Goto');
    end

2 个答案:

答案 0 :(得分:1)

BlockType InOut没有all_input_blocks的阻止。因此replace_block为空,您不会调用任何expires_time_ms代码。同样对于产出。

答案 1 :(得分:0)

replace_block通过将BlockType作为输入来替换块。您正在发送这些块的路径作为输入,这将无法正常工作。尝试使用,

replace_block(model_name, 'Inport', 'From')

以上将提示您进行每次更换。如果您不想被提示,请使用

replace_block(model_name, 'Inport', 'From', 'noprompt')

replace_block也将返回它插入的新块的路径。您可以使用该列表来验证是否已替换所有块。

如果您想使用find_system进行自己的搜索,请使用“Name”作为replace_block的参数。

replace_block(model_name, 'Name', all_input_blocks(i), 'From', 'noprompt')