Блок итератора FOR в Simulink и ввод модели - PullRequest
0 голосов
/ 08 февраля 2019

Здравствуйте, я создаю exe из модели simulink и для этого я передаю входные данные через файл .mat.

enter image description here

У меня вопрос, поскольку в моей модели есть блок «для каждого», как я могу сохранить данные в файле .mat?Обычно (без каждого блока) я бы сохранял входные данные как постоянный вектор в рабочей области (см. Верхнюю часть модели Simulink), и он будет автоматически обрабатывать, как передавать данные во время моделирования.Но в моем случае, так как я хочу экспортировать как .exe и передать ввод программно, мне нужно, чтобы входные данные были в виде файла .mat, а наличие блока «для каждого» приводило к потере времени вектора (поскольку неясно, какобъедините вектор времени с вектором данных в файле .mat, потому что неясно, какие данные будут взяты в данный момент моделирования.

Спасибо за любую помощь!

1 Ответ

0 голосов
/ 11 февраля 2019

Не совсем понятно, в чем конкретно заключается ваша проблема.

На вашей верхней диаграмме модель будет работать, когда у вас есть переменная

>> input = 1:3;

Если вы включите Display->Signals & Ports->Signal Dimensions, тогда вы увидите, что сигнал, выходящий из блока Constant, имеет размерность 3.

. Для нижней диаграммы создайте переменную в MATLAB, так как она будет использоваться вFrom File блок, должен соответствовать спецификациям, необходимым для этого блока, что означает, что первая строка является вектором времени, поэтому

>> t = [0 10]
t =
     0    10
>> u = [1 1;2 2;3 3]
u =
     1     1
     2     2
     3     3
>> tu = [t;u]
tu =
     0    10
     1     1
     2     2
     3     3

и затем сохраните эту переменную в своем файле,

>> save input tu

Теперь сигнал, выходящий из блока From File, также будет иметь размерность 3.

Измените значения t и u в соответствии с вашей конкретной проблемой.

...