函数matlab:更多实体的数组初始化
function matlab: array initialization for more entity
我需要有关 simulink 函数的帮助:
我有 n
个实体,在这个例子中只有 2.
- 属性实体 1:ID = 1,价值 = 5
- 属性实体 2:ID = 2,价值 = 3
我只需要调用一个函数一次而不是循环调用,如果存在 y = ...
就不再创建。
function y = fcn(VALORE,ID)
y=zeros(1,2);
persistent start;
if isempty(start)
start=zeros(1,2);
end
if (ID==0)
return
end
y(ID) = start(ID);
start(ID) = start(ID) + VALORE;
包含 y 的值
y = 0 0
y = 0 36
start = 60 39
y = 0 0
y = 60 0
start = 65 39
我会,例如
y = 55 33
y = 60 33
y = 65 36
没有对每个函数调用的调用 y = zeros (1,2)
。
据我所知,对于代码生成,变量的首次出现必须确定其大小。变量的第一次出现不能被下标。
所以你真的需要使用零。
但是没有问题!
您可以通过不同的方式获得 y 的值:
例如,
1. 最简单的方法 - 像使用 start 一样使用 y - 使其持久化并让它在函数调用之间保存值。
2.如果你需要在其他地方使用y值,你可以简单地在入口Y处添加第三个变量并将结果保存到它。
我一般用第三种方式:
function y1 = fcn(y, ID, VALORE)
y1 = zeros( 1, 2 );
y1 = y;
现在可以随心所欲地使用它了。
如果我误解了这个问题,我很抱歉
我需要有关 simulink 函数的帮助:
我有 n
个实体,在这个例子中只有 2.
- 属性实体 1:ID = 1,价值 = 5
- 属性实体 2:ID = 2,价值 = 3
我只需要调用一个函数一次而不是循环调用,如果存在 y = ...
就不再创建。
function y = fcn(VALORE,ID)
y=zeros(1,2);
persistent start;
if isempty(start)
start=zeros(1,2);
end
if (ID==0)
return
end
y(ID) = start(ID);
start(ID) = start(ID) + VALORE;
包含 y 的值
y = 0 0
y = 0 36
start = 60 39
y = 0 0
y = 60 0
start = 65 39
我会,例如
y = 55 33
y = 60 33
y = 65 36
没有对每个函数调用的调用 y = zeros (1,2)
。
据我所知,对于代码生成,变量的首次出现必须确定其大小。变量的第一次出现不能被下标。 所以你真的需要使用零。
但是没有问题! 您可以通过不同的方式获得 y 的值: 例如, 1. 最简单的方法 - 像使用 start 一样使用 y - 使其持久化并让它在函数调用之间保存值。 2.如果你需要在其他地方使用y值,你可以简单地在入口Y处添加第三个变量并将结果保存到它。
我一般用第三种方式:
function y1 = fcn(y, ID, VALORE)
y1 = zeros( 1, 2 );
y1 = y;
现在可以随心所欲地使用它了。
如果我误解了这个问题,我很抱歉