2017-02-07 5 views
0

У меня есть 2D-матрица/массив в моей модели, как показано на изображении. Мне нужно иметь возможность индексировать/получать доступ к нему случайным образом и передавать его в качестве сигнала. Как мне это сделать?Access/Index Array В Simulink

Я не могу использовать из Файлового блока, потому что хранилище вынуждено быть двойным и слишком большим для моего встроенного дизайна.

Не появляется Я могу использовать из блока Workspace ... потому что этот массив определен в моей модели как SoundArray.

Кажется, что это должно быть ТАКОЙ ПРОСТОЙ, но я просто не могу понять это. Единственный способ, которым я могу это сделать, - это создать пользовательский код C ... который я не хочу делать.

Благодаря

Array Definition and Model At Bottom

ответ

0

MATLAB Функциональный блок (ранее EML-блок) может подобрать данные модели рабочего пространства, если он находится в «Параметр» объем и вы определяете ввод параметров в блоке функций , Затем вы можете использовать другие входы для управления произвольным доступом, а затем вернуть желаемую позицию в качестве сигнала, выводимого из функционального блока Matlab.

function y = fcn(i,j,soundArray) 
y = soundArray(i,j); 

(где soundArray определяется как параметр, и я и J являются входы)

Edit: Или определить объем памяти хранилища данных (добавить блок определения). Затем поместите блок чтения хранилища данных для этой памяти, который направляется в блок выбора с двумя измерениями и «начальный индекс (порт)» для обоих этих измерений. Я считаю, что вы можете использовать данные Model Workspace для инициализации памяти хранилища данных, но я не думаю, что данные Model Workspace являются «живыми» во время моделирования.

+0

Моя проблема заключается в том, что SoundArray является переменной ... не константой. Matlab: «Параметр» «Константа, значение которой определено в рабочей области MATLAB® или получено из параметра блока Simulink®, который вы определяете и инициализируете в родительской маскированной подсистеме. Объект данных Stateflow должен иметь то же имя, что и параметр. » – willworknow

+0

Итак, для моего понимания; является SoundArray также переменной в контексте Simulink? То есть изменяет ли он во время выполнения simulink. Если нет, я думаю, что решение Parameter работает. В противном случае я подозреваю, что хранилище данных - это путь, но сначала он должен быть интериализован. – ErikP

+0

Матрица/переменная SoundArray [n 2] определена в Simulink (как показано выше), но инициализирована с помощью pread() в пользовательском коде C из файла. Мне нужна возможность изменять SoundArray. Все это будет работать в Linux, что приведет к проблемам с блоками, которые я могу использовать, и типами данных. Я никогда не использовал хранилище данных, не говоря уже о инициализации одного из настраиваемого кода. – willworknow