Копирование внешних данных в формат MAT-файла с автономными программами

Обзор matimport.c Примера

Эта тема показывает, как создать автономную программу, matimport, скопировать данные из внешнего источника в MAT-файл. Формат данных является пользовательским, то есть, это не одни из форматов файлов, поддержанных MATLAB®.

matimport.c пример:

  • Создает переменные, чтобы считать внешние данные.

  • Копирует данные в mxArray переменные.

  • Присваивает имя переменной каждому mxArray. Используйте эти имена переменных в рабочем пространстве MATLAB.

  • Пишет mxArray переменные и сопоставленные имена переменных к MAT-файлу.

Использовать данные в MATLAB:

Следующие темы описывают эти шаги подробно. Чтобы видеть код, откройте файл в редакторе MATLAB. Операторы C в этих темах являются фрагментами кода, которые, как показывают, проиллюстрировали задачу. Операторы в темах не обязательно последовательны в исходном файле.

Объявление переменных для внешних данных

Существует два внешних значения данных, строка и массив типа double. Следующая таблица показывает отношение между переменными в этом примере.

Внешние данныеПеременная, чтобы считать внешние данныеПеременная mxArrayИмя переменной MATLAB
Массив типа doubleextDatapVarNuminputArray
СтрокаextStringpVarChartitleString

Следующие операторы объявляют тип и размер для переменных extString и extData.

#define BUFSIZE 256
char extString[BUFSIZE];
double extData[9];

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

const char *extString = "Data from External Device";
double extData[9] = { 1.0, 4.0, 7.0, 2.0, 5.0, 8.0, 3.0, 6.0, 9.0 };

Создание mxArray Переменных

Функции в API MAT-файла используют указатели типа mxArray сослаться на данные MATLAB. Эти операторы объявляют pVarNum и pVarChar как указатели на массив любого размера или типа.

/*Pointer to the mxArray to read variable extData */
mxArray *pVarNum;
/*Pointer to the mxArray to read variable extString */
mxArray *pVarChar;

Чтобы создать переменную соответствующего размера и типа, выберите один из mxCreate* функционирует из MX Matrix Library.

Размер extData 9, который пример копирует в 3- 3 матрица. Используйте mxCreateDoubleMatrix функция, чтобы создать двумерный, mxArray с плавающей точкой, с двойной точностью инициализированный к 0.

pVarNum = mxCreateDoubleMatrix(3,3,mxREAL);

Используйте mxCreateString функция, чтобы создать mxArray переменная для extString.

pVarChar = mxCreateString(extString);

Создание имен переменной MATLAB

matimport.c имена переменных присвоений inputArray и titleString к mxArray данные. Используйте эти имена в рабочем пространстве MATLAB. Для получения дополнительной информации, Содержимое вида на море MAT-файла.

const char *myDouble = "inputArray";
const char *myString = "titleString";

Чтение Внешних Данных в mxArray Данные

Скопируйте данные из внешнего источника в каждый mxArray.

memcpy C функционируйте копирует блоки памяти. Эта функция требует указателей на переменные extData и pVarNum. Указатель на extData (void *)extData. Получить указатель на pVarNum, используйте один из mxGet* функционирует от Матричного API. Поскольку данные содержат только вещественные значения типа double, этот пример использует mxGetPr функция.

memcpy((void *)(mxGetPr(pVarNum)), (void *)extData, sizeof(extData));

Следующий оператор инициализирует pVarChar переменная с содержимым extString.

pVarChar = mxCreateString(extString);

Переменные pVarNum и pVarChar теперь содержите внешние данные.

Создание и открытие MAT-файла

matOpen функция создает указатель на файл типа MATFile. Следующие операторы создают указатель файла pmat, назовите файл matimport.mat, и откройте его для записи.

	MATFile *pmat;
	const char *myFile = "matimport.mat";
	pmat = matOpen(myFile, "w");

Запись mxArray Данных в Файл

matPutVariable функционируйте пишет mxArray и имя переменной в файл.

	status = matPutVariable(pmat, myDouble, pVarNum);
	status = matPutVariable(pmat, myString, pVarChar);

Очистка

Закрыть файл:

matClose(pmat);

Освободить память:

mxDestroyArray(pVarNum);
mxDestroyArray(pVarChar);

Создавание приложения

Чтобы создать приложение, используйте mex функция с -client engine опция.

copyfile(fullfile(matlabroot,'extern','examples','eng_mat',matimport.c'),'.','f')
mex -v -client engine matimport.c

Создание MAT-файла

Запустите matimport создать файл matimport.mat. Или вызовите программу от системной командной строки, или в командной строке MATLAB, введите:

!matimport

Импортирование данных в MATLAB

Любой пользователь с совместимой версией MATLAB может считать matimport.mat файл. Запустите MATLAB и используйте load команда, чтобы импортировать данные в рабочую область.

load matimport.mat

Чтобы отобразить переменные, введите:

whos
  Name             Size            Bytes  Class

  inputArray       3x3                72  double
  titleString      1x43               86  char  

Похожие темы