Загрузка данных для таблицы поиска Simulink из файла - PullRequest
4 голосов
/ 28 сентября 2010

Я построил модель Matlab / Simulink, которую я использую для имитации характеристик подводного роботизированного транспортного средства, использующего акустику для различных ключевых функций навигации и локализации.

Поскольку характеристики океана меняются в зависимости от сезонности и геолокации, я хотел бы, чтобы эти данные динамически загружались в модель из файла данных ASCII (данные, разделенные пробелами, организованные в строки и столбцы). 1005 *

Simulink имеет несколько наборов блоков таблицы поиска, но ни один из них, по-видимому, не предоставляет опцию «чтение из файла» напрямую. Необходимость использования редактора таблиц приведет модель в неправильном направлении.

Есть ли другой способ, возможно, с использованием Matlab, загрузить данные в Blockset из файла?

Для 1-D таблицы я ищу что-то похожее на команды Matlab

A = load(filename)
A(:,1)  % for the index
A(:,2)  % for the table values

AKE

Ответы [ 2 ]

1 голос
/ 29 сентября 2010

Если я правильно понимаю, это звучит так, как будто вы хотите иметь Блок таблицы поиска со значениями индекса и таблицы, которые можно динамически обновлять в ходе симуляции.Я полагаю, что вы можете сделать это, используя блок 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 элементов.

0 голосов
/ 29 сентября 2010

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

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

...