How to apply a function to each column of a 3D array?
4 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
I have a function that works on a vector (call it "test_f") and gives as output a vector. I want to apply it to each column of a 3D array ( example A= randn(10,10,10)), without using a loop. Is it possible?
Respuestas (1)
Joss Knight
el 18 de En. de 2018
There isn't anything supported for gpuArray that can take any generic user function in this way. If test_f contains operations supported by pagefun then you could break it down into multiple calls to that. Or convert your array to a cell array ( mat2cell(A, 10, ones(10,1), ones(10,1) ) and process it using cellfun.
4 comentarios
Joss Knight
el 7 de Feb. de 2018
Your expectations for the capabilities of a GPU are misguided in this case. There's almost nothing a GPU can do on 100 values faster than the CPU. You need to give it more data. One way is to vectorize your code, which means working out how to formulate the equations so that all the data is processed at once. I can't help you do that as long as I've no idea what test_mat is doing.
Ver también
Categorías
Más información sobre GPU Computing in MATLAB 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!