Если я правильно понимаю, это звучит так, как будто вы хотите иметь Блок таблицы поиска со значениями индекса и таблицы, которые можно динамически обновлять в ходе симуляции.Я полагаю, что вы можете сделать это, используя блок From File , блок Demux и Динамический блок таблицы поиска .Допустим, у вас есть файл .mat, содержащий массив следующей формы:
[ time_1 time_2 time_3 ...; %# Time stamps
index1_1 index1_2 index1_3 ...; %# Index 1 for all time stamps
index2_1 index2_2 index2_3 ...; %# Index 2 for all time stamps
...
indexN_1 indexN_2 indexN_3 ...; %# Index N for all time stamps
value1_1 value1_2 value1_3 ...; %# Table value 1 for all time stamps
value2_1 value2_2 value2_3 ...; %# Table value 2 for all time stamps
...
valueN_1 valueN_2 valueN_3 ...] %# Table value N for all time stamps
Для каждого столбца есть отметка времени, N
элементы для индексов таблицы поиска и N
элементыдля табличных значений.После загрузки с использованием блока From File выход с длиной 2*N
можно разделить на два выхода с длиной N
(т.е. индексы и табличные значения), используя блок Demux .Эти два массива можно затем использовать для входных данных xdat
и ydat
в динамическом блоке Lookup Table , создавая таким образом таблицу соответствия, значения индекса и таблицы которой можно обновлять из файла по мере выполнения моделирования.
Ответ на комментарий от AKE ...
Отметки времени присутствуют в приведенном выше массиве, поскольку у меня сложилось впечатление, что вы хотите изменить таблицу поискаданные как функция времени моделирования (например, используйте один набор индексов и табличных значений в течение 0–10 секунд, а затем другой набор в течение 10–20 секунд).Если вы хотите сделать это, потребуется некоторая спецификация времени, в которое данные будут изменены.
Однако, если вы хотите загрузить только one набор табличных данных из файла в начале моделирования , тогда вашему файлу .mat необходим только один столбец с отметкой времени 0. Ваши примеры данных в A
могут быть легко изменены соответствующим образом:
A = load(yourDataFile); %# Load your data
A = [0; A(:)]; %# Convert it to a column vector and add a time stamp
save(yourMatFile,'A'); %# Save A to a .mat file for the From File block
Что касается вашего беспокойства относительно блока Demux , вам на самом деле не нужно указывать N
.Вам нужно только указать, что у него будет 2 выхода, и, таким образом, он разделит входной сигнал пополам.Например, если вход представляет собой вектор из 10 элементов, и для блока указано два выхода, в качестве выходных данных вы получите два вектора из 5 элементов.