Copying std::vector contents to TypedArray
조회 수: 72 (최근 30일)
이전 댓글 표시
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
채택된 답변
Breno Vincenzo de Almeida
2020년 9월 20일
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
Jason Laks
2021년 2월 19일
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());
추가 답변 (1개)
Paulo Urriza
2023년 5월 16일
편집: Paulo Urriza
2023년 5월 16일
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
참고 항목
카테고리
Help Center 및 File Exchange에서 Deploy to C++ Applications Using MATLAB Data API (C++11)에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!