我在Simulink上有一个功能,它根据一个数字将一个输入变量复制到一个输出(如DEMUX,但可选择)
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'未在某些执行路径上分配。
有没有办法将这些数组声明为此函数的输出,只需在程序开头启动该值?
编辑: 我不解释为什么我不想要出现零。 问题是当第二次执行该函数时,在读取之前存储在任何变量之前的值将被零替换。
答案 0 :(得分:0)
我使用simulink-if的块解决了我的问题,然后每次读/写都不会替换该值。