【发布时间】:2016-11-01 02:48:55
【问题描述】:
有没有一种方法可以将这个 for 循环向量化,并在 MATLAB 中使其更快地处理大 n?
for j=1:n
% find point coordinate in a different basis
pt_2(:,:,j) = Mat(:,:,t(j)) * pt_1(:,:,j);
end
其中pt_1、pt_2 是3x1xn 数组,Mat 是3x3xm 数组,t 是nx1 向量。循环想要得到从另一个线性空间的n个坐标变换而来的n个点坐标,有m个不同的变换。
【问题讨论】:
-
您能否提供输入示例,以便我们执行此代码。不能运行代码很难检查。
-
这些值来自一些先前的计算,但也许你可以使用一些任意值:例如n=200000;米=20; pt_1=ones(3,1,n);垫=个(3,3,米); pt_2=零(3,1,n);只是为了测试循环执行时间。
-
谢谢。但是 t 仍然丢失。
-
哦,对不起,也许 t=ones(n,1)。听起来很傻,但只要它每次都在访问值。 t是从[1,n]到[1,m]的映射,它决定了从1到n的每个数属于m个类别中的哪一个。
标签: matlab vectorization