exponenta event banner

Запись и чтение матричных данных из двоичных файлов в Simulink

Используйте блок чтения двоичных файлов для считывания реальных и сложных матричных данных из двоичного файла в основном формате строки.

Запись данных

Запишите матрицу A = [1 2 3 8; 4 5 6 10; 7 8 9 11] в двоичный файл, Matdata.bin с помощью блока записи двоичных файлов. Блок записывает указанный заголовок, struct('A',[1 2],'B','x7') за которыми следуют данные.

Откройте модель.

open_system('writeMatrixData')

Запустите модель для записи данных в Matdata.bin.

sim('writeMatrixData')

Считывание данных

Binary File Reader блок считывает данные в двоичном файле Matdata.bin на 4 канала, каждый из которых содержит 5 образцов. Параметр заголовка File устройства чтения определяет заголовок данных. Если точный заголовок неизвестен, необходимо по крайней мере указать прототип заголовка, то есть его размер и тип данных.

Откройте модель.

open_system('readMatrixData')

Запустите модель для считывания данных. Отображение переменной выходных данных, yout.

sim('readMatrixData')
display(yout)
yout =

     1     2     3     8
     4     5     6    10
     7     8     9    11
     0     0     0     0
     0     0     0     0

Каждый кадр yout содержит кадры матрицы A, за которыми следуют нули для завершения кадра. Исходная матрица А содержит 4 канала с 3 выборками в каждом канале. Считыватель предназначен для считывания данных в 4 канала, каждый из которых содержит 5 выборок. Поскольку для завершения кадра недостаточно выборок, считывающее устройство добавляет нули в конце каждого кадра.

Если выбран параметр Data is complex, считывающее устройство считывает данные в виде матрицы M-by- N комплексных значений, где M и N задаются параметрами Samples per frame и Number of channel соответственно. Выберите сложный параметр Данные (Data is complex) и запустите модель.

set_param('readMatrixData/Binary File Reader','IsDataComplex','on')
sim('readMatrixData')
display(yout)
yout =

   1.0000 + 2.0000i   3.0000 + 8.0000i   4.0000 + 5.0000i   6.0000 +10.0000i
   7.0000 + 8.0000i   9.0000 +11.0000i   0.0000 + 0.0000i   0.0000 + 0.0000i
   0.0000 + 0.0000i   0.0000 + 0.0000i   0.0000 + 0.0000i   0.0000 + 0.0000i
   0.0000 + 0.0000i   0.0000 + 0.0000i   0.0000 + 0.0000i   0.0000 + 0.0000i
   0.0000 + 0.0000i   0.0000 + 0.0000i   0.0000 + 0.0000i   0.0000 + 0.0000i

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

Если в модель вносятся какие-либо изменения, сохраните модель перед закрытием.

save_system('readMatrixData')
close_system('readMatrixData')
close_system('writeMatrixData')

См. также

| | (Симулинк)