Этот раздел объясняет, как отправить данные от модели Simulink® до рабочей области MATLAB®, таким образом, можно анализировать результаты симуляций более подробно.
Можно использовать блок To Workspace от DSP System Toolbox™ / библиотека Sinks, чтобы отправить данные в рабочее пространство MATLAB как вектор. Например, можно отправить данные о коэффициенте ошибок из модели Кода Хемминга, описанной в разделе Reducing the Error Rate Using a Hamming Code. Чтобы вставить блок To Workspace в модель, выполните эти шаги:
Чтобы открыть модель, в посдказке MATLAB, вводят doc_hamming
.
Чтобы добавить блок To Workspace, начните вводить имя 'к рабочей области' в окне модели и выберите блок To Workspace от DSP System Toolbox / библиотека Sinks. Соедините его как показано.
Больше чем один блок To Workspace доступен. Обязательно выберите To Workspace из подбиблиотеки DSP System Toolbox / Sinks.
Чтобы сконфигурировать блок To Workspace, выполните эти шаги:
Дважды кликните блок, чтобы отобразить его диалоговое окно.
Введите hammcode_BER
в поле Variable name.
Введите 1
в поле Limit data points to last. Это ограничивает выходной вектор значениями на итоговом временном шаге симуляции.
Нажмите OK.
Когда вы запускаете симуляцию, модель отправляет вывод блока Error Rate Calculation к рабочей области как вектор размера 3, названный hamming_BER
. Записи этого вектора совпадают с показанными блоком Error Rate Display.
После выполнения симуляции можно просмотреть вывод блока To Workspace путем ввода следующих команд в посдказке MATLAB:
format short e hammcode_BER
Векторный вывод следующий:
hammcode_BER =
5.4066e-003 1.0000e+002 1.8496e+004
Команда format short e
отображает записи вектора в экспоненциальной форме. Записи следующие:
Первая запись является коэффициентом ошибок.
Вторая запись является общим количеством ошибок.
Третья запись является общим количеством сделанных сравнений.
Чтобы анализировать производительность исправления ошибок Кода Хемминга, отправьте переданный сигнал, полученный сигнал и вектора ошибок, созданные блоком Binary Symmetric Channel, к рабочей области. Пример этого показывают в следующей фигуре.
Введите doc_channel
в командной строке MATLAB к open the starter model
,
Дважды кликните блок Binary Symmetric Channel, чтобы открыть его диалоговое окно и выбрать Output error vector. Это создает выходной порт для ошибочных данных.
Переместите блоки, чтобы создать место так, чтобы можно было вставить блоки Декодера Энкодера и Хэмминга Хэмминга. Чтобы найти их, начните вводить Hamming
в окне модели. Выберите их из представленных опций. Эти Энкодер Хэмминга и блоки Декодера Хэмминга находятся в Communications Toolbox™ / Выявление ошибок и Исправление / подбиблиотека Block.
Добавьте три К блокам Рабочей области в окно модели и соедините их как показано в предыдущей фигуре.
Больше чем один блок To Workspace доступен. Обязательно выберите To Workspace из подбиблиотеки DSP System Toolbox / Sinks.
Дважды кликните левый блок To Workspace.
Введите Tx
в поле Variable name в диалоговом окне блока. Блок отправляет переданный сигнал в рабочую область как массив под названием Tx
.
В поле Save 2-D signals as выберите 3-D array (concatenate along third dimension)
. Это сохраняет каждый кадр как отдельный столбец массива Tx
.
Нажмите OK.
Дважды кликните средний блок To Workspace:
Введите errors
в поле Variable name.
В поле Save 2-D signals as выберите 3-D array (concatenate along third dimension)
. Это сохраняет каждый кадр как отдельный столбец массива Tx
.
Нажмите OK.
Дважды кликните правильный блок To Workspace:
Введите Rx
в поле Variable name.
В поле Save 2-D signals as выберите 3-D array (concatenate along third dimension)
. Это сохраняет каждый кадр как отдельный столбец массива Tx
.
Нажмите OK.
После выполнения симуляции можно отобразить отдельные кадры данных. Например, чтобы отобразить десятый кадр Tx
, в типе посдказки MATLAB
Tx(:,:,10)
Это возвращает вектор-столбец длины 4, соответствуя длине слова сообщения. Обычно, вы не должны вводить Tx
отдельно, потому что это отображает целый переданный сигнал, который является очень большим.
Чтобы отобразить соответствующий кадр ошибок, ввести
errors(:,:,10)
Это возвращает вектор-столбец длины 7, соответствуя длине кодовой комбинации.
Чтобы отобразить кадры 1 - 5 из переданного сигнала, ввести
Tx(:,:,1:5)
Можно использовать MATLAB, чтобы анализировать данные из симуляции. Например, чтобы идентифицировать различия между переданными и полученными сигналами, ввести
diffs = Tx
~=Rx
;
Векторный diffs
является XOR векторов Tx
и Rx
. 1 в diffs
указывает, что Tx
и Rx
отличаются в том положении.
Можно определить индексы кадров, соответствующих, чтобы передать слова, которые неправильно декодируются со следующей командой MATLAB:
error_indices = find(diffs);
1 в векторном not_equal
указывает, что существует по крайней мере одно различие между соответствующим кадром Tx
и Rx
. Векторный error_indices
записывает индексы, где Tx
и Rx
отличаются. Чтобы просмотреть первое неправильно декодируемое слово, ввести
Tx(:,:,error_indices(1))
Чтобы просмотреть соответствующий кадр ошибок, ввести
errors(:,:,error_indices(1))
Анализируйте эти данные, чтобы определить ошибочные шаблоны, которые приводят к неправильному декодированию.