Copying std::vector contents to TypedArray
17 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
David Moore
am 29 Jun. 2020
Bearbeitet: Paulo Urriza
am 16 Mai 2023
Is there a better way to copy the contents of a std::vector to a Matlab Array in C++? The following seems long winded.
V is a std::vector in the code below.
matlab::data::ArrayFactory factory;
matlab::data::TypedArray<double> A = factory.createArray<double>({ 1, V.size() });
int i = 0;
for (auto e : V) {
A[i++] = e;
}
0 Kommentare
Akzeptierte Antwort
Breno Vincenzo de Almeida
am 20 Sep. 2020
I managed to do this out after hooours of testing.
matlab::data::ArrayFactory f;
matlab::data::TypedArray<double> A = f.createArray<double>({1, V.size()}, V.data(), V.data()+V.size());
Source: the `matlab::data::ArrayFactory` page in the following link C++ class to create arrays - MATLAB.
But I can't find a way for the ItType method of supplying the data to work.
2 Kommentare
Jason Laks
am 19 Feb. 2021
The code above will not compile using the mex command from matlab's command line in R2020a. Does anyone have a code snippet that will work?
Thanks, J.
My attempt at getting the suggestion to work:
matlab::data::ArrayFactory f;
std::vector<double> V(2, 2);
matlab::data::TypedArray<double> A = f.createArray<double>({1,V.size()}, V.data(), V.data()+V.size());
Weitere Antworten (1)
Paulo Urriza
am 16 Mai 2023
Bearbeitet: Paulo Urriza
am 16 Mai 2023
Type can be deduced automatically if you used the createArray overload for std::iterator.
matlab::data::ArrayFactory f;
auto A = factory.createArray({1, V.size()}, V.begin(), V.end());
0 Kommentare
Siehe auch
Kategorien
Mehr zu Call C++ from MATLAB finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!