【发布时间】:2020-01-06 04:25:57
【问题描述】:
在下面的示例中,我通过使用变量index 索引a 的行来创建result。我可以通过循环来完成这项工作:
a=repmat(1:6,3,1)';
index=[1:3;2:4];
result=zeros(3,3,size(index,1));
for i=1:size(index,1)
result(:,:,i)=a(index(i,:),:)
end
给定的a 和index 是:
a =
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
6 6 6
index =
1 2 3
2 3 4
输出应该是:
result(:,:,1) =
1 1 1
2 2 2
3 3 3
result(:,:,2) =
2 2 2
3 3 3
4 4 4
实际上,a 和index 是n*3 矩阵,其中n 非常大。
a是节点坐标,index是节点的三角面索引。
表面太大,所以我真的需要加快这个循环。
我有一个想法,矢量化可以使代码更快。但我无法获得理想的输出结果,即使有一些矩阵“调整大小”或矩阵旋转功能,如resize 或reshape。
【问题讨论】:
标签: matlab matrix optimization indexing vectorization