0

我需要有关 simulink 函数的帮助:我有n实体,在这个例子中只有 2 个。

  • 属性实体 1: ID = 1 , VALORE = 5
  • 属性实体 2:ID = 2,VALORE = 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)每个函数调用。

4

1 回答 1

0

据我所知,对于代码生成,变量的首次出现必须确定其大小。变量的第一次出现不能下标。所以你真的需要使用零。

但是没有问题!您可以通过不同的方式获取 y 的值:例如,1. 最简单的方法 - 像使用 start 一样使用 y - 使其持久化并让它在函数调用之间保存值。2. 如果您需要在其他地方使用 y 值,您只需在入口 Y 处添加第三个变量并将结果保存到它。

我通常使用第三种方式:

function y1 = fcn(y, ID, VALORE)
y1 = zeros( 1, 2 );
y1 = y;

现在可以用它做任何我想做的事情。

如果我误解了这个问题,我很抱歉

于 2015-06-15T14:11:02.667 回答