Using Arrays inside arrayfun()
Afficher commentaires plus anciens
I'm using gpuArrays with arrayfun to speed up calculations, and I would need to pass an array inside the call, as such
[Zn] = arrayfun( @iterFuncDelta,Xo,Yo,orbit)
function [Zn] = iterFuncDelta(xdelta0,ydelta0,refOrbit)
maxIterations=2^15;
delta=complex(xdelta0,ydelta0);
delta0=delta;
n=2;
Zn=refOrbit(1,1)+delta;
while ( n <= maxIterations )
Zn=refOrbit(n,1)+delta;
delta=2*refOrbit(n,1)*delta+delta^2+delta0;
n=n+1;
end
end
How could I pass the array 'orbit' so that it is not treated as a single point (like Xo and Yo) ?
Thanks.
Réponse acceptée
Plus de réponses (2)
Walter Roberson
le 23 Déc 2017
0 votes
3 commentaires
Walter Roberson
le 23 Déc 2017
[Zn] = arrayfun( @(x,y) iterFuncDelta(x,y,orbit), Xo, Yo )
Matt J
le 24 Déc 2017
I don't think this will work on the GPU.
Joss Knight
le 26 Déc 2017
0 votes
You can't do any array or matrix operations in a GPU arrayfun kernel. You can access the contents of an array that is present as an up-level variable such as has been demonstrated in the comments. You can then loop over the contents of the array one element at a time, to emulate array operations such as a dot product. This blog article gives an example of doing this for a simple 3-vector.
Catégories
En savoir plus sur GPU Computing dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!