필터 지우기
필터 지우기

Copying std::vector contents to TypedArray

조회 수: 22 (최근 30일)
David Moore
David Moore 2020년 6월 29일
편집: Paulo Urriza 2023년 5월 16일
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;
}

채택된 답변

Breno Vincenzo de Almeida
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
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());
Jason Laks
Jason Laks 2021년 2월 19일
Wait... my apologies. The snippet above does compile.

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Paulo Urriza
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());

카테고리

Help CenterFile 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!

Translated by