How to cite the row of the matrix by vectorization?
1 次查看(过去 30 天)
显示 更早的评论
Hi,
I have a problem in speeding my code. In my code, there is a step as below,
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
In practice, the matrix a and index are very large n*3 matrix. a is the node coordinates and the index is the triangle face index of the node. The surface is too big. So I really need to speed this loop. I have an idea that vectorization could make the code faster. But I could not get the ideal output result, even with some matrix "resize" or matrix rotation functions, like "resize" or "reshape". I am very thankful for any suggestion.
0 个评论
采纳的回答
Andrei Bobrov
2019-9-3
编辑:Andrei Bobrov
2019-9-3
For large matrices, the cycle may be faster.
a = repmat(1:6,3,1)';
index = [1:3;2:4];
si = size(index);
result = permute(reshape(a(index',:),si(2),si(1),[]),[1,3,2]);
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Resizing and Reshaping Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!