Как я могу динамически хранить вектор в подсистеме Simulink For итератора? - PullRequest
0 голосов
/ 28 мая 2020

У меня есть эта простая система:

Simple System

Код в функции:

function a = fcn(iteration,a)
a(1,iteration) = iteration;
end

Внешний слой Simulink имеет следующий вид (a инициализируется как a = zeros(1,5)):

Upper layer

l oop это:

for i = 1:5

, и я хочу сохранить итератор в массиве (например, [1 2 3 4 5]), но по какой-то причине Simulink инициализирует массив на каждом шаге итератора для одного временного шага, поэтому я могу видеть только последнее значение. Я пробовал много разных комбинации, но я не могу заставить его работать так, как я хочу. Как это сделать?

Ответы [ 2 ]

0 голосов
/ 30 мая 2020

Я обнаружил, что есть опция задержки при нажатии. С помощью этой опции вы можете сохранять как вектор (динамически) различные значения в Simulink.

0 голосов
/ 28 мая 2020

С каждой итерацией функция MATLAB начинается с начального массива, входного порта. Чтобы этого не произошло, просто добавьте al oop с задержкой. Выходные данные функции MATLAB должны подавать задержку, а также выходной порт. Это гарантирует, что результат последней итерации также доступен. Вы можете использовать сбрасываемую задержку с внешним начальным условием, чтобы начать с входного значения и обновлять его во время каждой итерации.

loop

...