Using Arrays inside arrayfun()
Show older comments
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.
Accepted Answer
More Answers (2)
Walter Roberson
on 23 Dec 2017
0 votes
3 Comments
Walter Roberson
on 23 Dec 2017
[Zn] = arrayfun( @(x,y) iterFuncDelta(x,y,orbit), Xo, Yo )
Matt J
on 24 Dec 2017
I don't think this will work on the GPU.
Joss Knight
on 26 Dec 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.
Categories
Find more on GPU Computing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!