How do I pass data of pointer to output without factory.createArray() in mex c++?
    조회 수: 7 (최근 30일)
  
       이전 댓글 표시
    
I want to use c++ based program processing large data by pointer on matlab workspace.
So I've made mex c++ function like
 TypedArray<std::complex<double>> complexArray = std::move(inputs[0]);
 //get pointer of input
 std::complex<double> *temp = complexArray.release().release();
 //some processing using *temp
 //under 0.7sec
 //processing end
//almost 7 sec
 outputs[0] = factory.createArray<std::complex<double>>({dimensionX,dimensionY}, temp, temp+dimensionX*dimensionY);
but this way is too slow where factory.createArray()
processing time is almost under 0.7sec, but elapsed time of  of createArray is 7sec
I also have used  factory.createBuffer() and factory.createArrayFromBuffer(). This way is much faster than createArray, but slower than processing yet.
I want to make output from pointer without the overhead of creating Array
댓글 수: 0
답변 (1개)
  Kritika Bansal
    
 2020년 1월 10일
        Hi,
You can use the function mxCreateDoubleMatrix to create a 2D matrix. One of the parameters is ComplexFlag which needs to be set to true if you need a complex double array.
For more information, you can refer the documentation here: https://www.mathworks.com/help/matlab/apiref/mxcreatedoublematrix.html
댓글 수: 1
  Denis Riedijk
 2021년 3월 4일
				mxCreateDoubleMatrix is the C API, not the C++ API, so I am afraid this will not help. (trying to solve an issue I am having I came across this question and answer)
참고 항목
카테고리
				Help Center 및 File Exchange에서 Write C++ Functions Callable from MATLAB (MEX Files)에 대해 자세히 알아보기
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!