说我有一个函数calculateStuff(x),它将一个标量作为参数并返回一个标量。MATLAB:如何应用函数分组
说我有一个向量X,我想在X每一个部件上应用calculateStuff,并得到结果的矢量作为回报,并将其存储在一个新的向量Y.
显然Y = calculateStuff(X )是非法的,除了循环之外,有没有办法可以做到这一点?
说我有一个函数calculateStuff(x),它将一个标量作为参数并返回一个标量。MATLAB:如何应用函数分组
说我有一个向量X,我想在X每一个部件上应用calculateStuff,并得到结果的矢量作为回报,并将其存储在一个新的向量Y.
显然Y = calculateStuff(X )是非法的,除了循环之外,有没有办法可以做到这一点?
你有三个选择:
calculateStuff
,以便它可以采取数组和返回数组arrayfun
隐藏循环:Y = arrayfun(@calculateStuff,X)
最Matlab操作会让你输入一个矩阵并返回一个矩阵。您应该能够重新编写calculateStuff()来获取矩阵并返回矩阵。这通常比用于循环的快得多。 Matlab中的循环在时间上非常昂贵。
你需要看的东西的种类是正常操作的“点”版本。例如,而不是
y = z * x;
做
y = z .* x;
首先会做一个矩阵乘法,这可能不是你想要的矢量化代码的时候。第二个是逐元素地乘以z和x。
请参阅here并搜索“点操作”。
是不是所谓的`地图`? – delnan 2011-02-13 19:40:30