MATLAB® Data API C++ позволяет приложениям, запускающимся за пределами MATLAB, работают с данными MATLAB через нейтральный в отношении MATLAB интерфейс. API использует современную семантику C++ и шаблоны разработки и избегает копий данных, когда это возможно, при помощи семантики копирования при записи MATLAB.
Заголовочным файлом для MATLAB Data API является MatlabDataArray.hpp.
Класс matlab::data::Array является базовым классом для всех типов массива. Это предоставляет общую информацию о массиве, такую как тип и размер. Класс Array поддерживает и одномерные и многомерные массивы. MATLAB Data API использует основанную на нуле индексацию.
Чтобы создать массив, сначала создайте фабрику с помощью matlab::data::ArrayFactory .
matlab::data::ArrayFactory factory;
Используйте фабрику, чтобы создать массив 2 на 2 типа double. Задайте значения массивов в главном столбцом формате, чтобы совпадать с упорядоченным расположением оператора A = [1 2; 3 4] MATLAB. Чтобы осмотреть массив, используйте функции в классе matlab::data::Array.
#include "MatlabDataArray.hpp"
int main() {
using namespace matlab::data;
ArrayFactory factory;
Array A = factory.createArray<double>({ 2,2 },
{ 1.0, 3.0, 2.0, 4.0 });
// Inspect array
ArrayType c = A.getType();
ArrayDimensions d = A.getDimensions();
size_t n = A.getNumberOfElements();
return 0;
}Этот код эквивалентен следующим операторам MATLAB.
A = [1 2; 3 4]; c = class(A); d = size(A); n = numel(A);
Класс matlab::data::TypedArray поддерживает итераторы, которые позволяют вам использовать основанные на области значений циклы for. Этот пример создает 1 6 массив от 3 2 TypedArray.
#include "MatlabDataArray.hpp"
int main() {
using namespace matlab::data;
ArrayFactory factory;
// Create a 3-by-2 TypedArray
TypedArray<double> A = factory.createArray( {3,2},
{1.1, 2.2, 3.3, 4.4, 5.5, 6.6 });
// Assign values of A to the double array C
double C[6];
int i = 0;
for (auto e : A) {
C[i++] = e;
}
return 0;
}Измените каждый элемент в matlab::data::Array с помощью ссылки на элемент. Этот пример умножает каждый элемент в matlab::data::TypedArray скалярным значением.
#include "MatlabDataArray.hpp"
int main() {
using namespace matlab::data;
ArrayFactory factory;
// Create a 3-by-2 TypedArray
TypedArray<double> A = factory.createArray( {3,2},
{1.1, 2.2, 3.3, 4.4, 5.5, 6.6 });
// Define scalar multiplier
double multiplier(10.2);
// Multiple each element in A
for (auto& elem : A) {
elem *= multiplier;
}
return 0;
}