通过坐标数组访问数组元素

时间:2018-08-09 09:04:11

标签: matlab performance for-loop vector vectorization

我试图向量化这几行代码,尤其是for循环。我的x是一个[31374230x4]矩阵,而final.p0是一个包含矩阵p0[1000x1000x500]的结构。主要思想是截断分配给它的最终矩阵x(i,4)。我想避免for循环,它太慢了。有想法吗?

final.p0 = zeros(max(x(:,1)),max(x(:,2)),max(x(:,3)));
for i = 1:length(x(:,4)) 
   final.p0(x(i,1),x(i,2),x(i,3)) = x(i,4);  
end

1 个答案:

答案 0 :(得分:1)

使用sub2ind可以很容易地避免此循环,如下所示:

index = sub2ind(size(final.p0),x(:,1),x(:,2),x(:,3));
final.p0(index) = x(:,4);
相关问题