我们如何在Matlab中使用Arrayfun访问多个元素?

时间:2012-04-13 19:03:54

标签: matlab cuda parallel-processing gpu-programming

任何人都可以帮助我从函数(fun.m)中访问数组的多个元素(xGrid和yGrid)。性能是我的关键点。这是函数(被称为):

function count = fun(x0,y0,maxIter)
z0 = complex(x0,y0);
z = z0;
count = 1;
while count <= maxIter && (real(z)*real(z) + imag(z)*imag(z)) <= 4
    count = count + 1;
    z = z*z + z0;
end
count = log(count);

主要:

x = parallel.gpu.GPUArray.linspace( xlim(1), xlim(2), gridSize );
y = parallel.gpu.GPUArray.linspace( ylim(1), ylim(2), gridSize );
[xGrid,yGrid] = meshgrid( x, y );
count = arrayfun(@fun,xGrid, yGrid, maxIter);

我知道我只能访问x0和y0(在fun = / arrayfun里面,当i = 1,j = 1时),但是我也能在同一个位置访问x1,x2 ...和y1,y2 .. (i = 1和j = 1)并且没有将它们传递给参数?

1 个答案:

答案 0 :(得分:1)

(对不起早先的回答,我误解了这个问题)

如果你想从内部访问xGrid和yGrid的其他元素,为什么不将xGrid,yGrid传递给函数? Matlab使用copy-on-write,因此传入它们不应影响代码的效率,除非您写入它们。