在Simulink

时间:2018-01-31 15:58:01

标签: arrays matlab function simulink

我在Simulink上有一个功能,它根据一个数字将一个输入变量复制到一个输出(如DEMUX,但可选择)

Function used on Simulik

function [device,Var_RX1, Var_RX2, Var_RX3, Var_RX4, Var_RX5, Var_RX6, Var_RX7, Var_RX8, Var_RX9, Var_RX10]  = fcn(device, Var_RX)
Var_RX1 = zeros(50,1,'single');
Var_RX2 = zeros(50,1,'single');
Var_RX3 = zeros(50,1,'single');
Var_RX4 = zeros(50,1,'single');
Var_RX5 = zeros(50,1,'single');
Var_RX6 = zeros(50,1,'single');
Var_RX7 = zeros(50,1,'single');
Var_RX8 = zeros(50,1,'single');
Var_RX9 = zeros(50,1,'single');
Var_RX10 = zeros(50,1,'single');    
    if (device == 1)
        Var_RX1 = Var_RX;
    elseif (device == 2)
        Var_RX2 = Var_RX;
    elseif (device == 3)
        Var_RX3 = Var_RX;
    elseif (device == 4)
        Var_RX4 = Var_RX;
    elseif (device == 5)
        Var_RX5 = Var_RX;
    elseif (device == 6)
        Var_RX6 = Var_RX;
    elseif (device == 7)
        Var_RX7 = Var_RX;
    elseif (device == 8)
        Var_RX8 = Var_RX;
    elseif (device == 9)
        Var_RX9 = Var_RX;
    elseif (device == 10)
        Var_RX10 = Var_RX;
    end
end

问题是当调用函数时我必须将变量(Var_RX)声明为零,否则会出现以下问题:

  

输出参数' Var_RX1'未在某些执行路径上分配。

有没有办法将这些数组声明为此函数的输出,只需在程序开头启动该值?

编辑: 我不解释为什么我不想要出现零。 问题是当第二次执行该函数时,在读取之前存储在任何变量之前的值将被零替换。

1 个答案:

答案 0 :(得分:0)

我使用simulink-if的块解决了我的问题,然后每次读/写都不会替换该值。

Answare