C++ MATLAB ® Data API позволяет приложениям, работающим вне MATLAB, работать с данными MATLAB через нейтральный интерфейс MATLAB. API использует современную семантику C++ и шаблоны дизайна и по возможности избегает копирования данных с помощью семантики копирования на запись MATLAB.
Заголовочный файл для API данных MATLAB: MatlabDataArray.hpp.
matlab::data::Array является базовым классом для всех типов массивов. Он предоставляет общую информацию о массиве, такую как тип и размер. Array поддерживает как одномерные, так и многомерные массивы. API данных MATLAB использует индексирование на основе нуля.
Чтобы создать массив, сначала создайте фабрику с помощью matlab::data::ArrayFactory.
matlab::data::ArrayFactory factory;
Используйте фабрику для создания массива типа 2 на 2 double. Укажите значения массива в формате «» основной столбец «» в соответствии с порядком оператора MATLAB A = [1 2; 3 4]. Для проверки массива используйте функции в 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;
}