Функция Matlab: инициализация массива для большего количества объектов
Мне нужна помощь по поводу функции 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 = 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)
для каждого вызова функции.
1 ответ
Насколько я знаю, для генерации кода при первом появлении переменной необходимо установить ее размер. Первое появление переменной не может быть подписано. Так что вам действительно нужно использовать нули.
Но проблема не в этом! Вы можете получить значения y по-разному: например, 1. Самый простой способ - использовать y так же, как вы используете start - сделать его постоянным и позволить сохранять значения между вызовами функций. 2. если вам нужно использовать значение y где-то еще, вы можете просто добавить третью переменную при входе Y и сохранить результат в ней.
Я обычно использую третий способ:
function y1 = fcn(y, ID, VALORE)
y1 = zeros( 1, 2 );
y1 = y;
и теперь могу делать с этим все что захочу.
Прошу прощения, если я неправильно понял вопрос