How do I pass data of pointer to output without factory.createArray() in mex c++?
    7 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
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 comentarios
Respuestas (1)
  Kritika Bansal
    
 el 10 de En. de 2020
        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 comentario
  Denis Riedijk
 el 4 de Mzo. de 2021
				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)
Ver también
Categorías
				Más información sobre Write C++ Functions Callable from MATLAB (MEX Files) en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


