假设我有一个函数calculateStuff(x),它接受标量作为参数并返回标量。
假设我有一个向量X,我想将calculateStuff应用于X中的每个组件,并得到结果的向量,并将其存储在一个新的向量Y中。
显然,Y=calculateStuff(X)是非法的,除了循环之外,还有什么方法可以做到吗?
发布于 2011-02-13 19:42:52
你有三个选择:
Y = arrayfun(@calculateStuff,X)
calculateStuff,以便它可以接收数组并返回数组arrayfun隐藏循环:发布于 2011-02-13 19:42:56
大多数Matlab操作将允许您输入矩阵并返回矩阵。您应该能够重写calculateStuff()来获取一个矩阵并返回一个矩阵。这通常比使用for循环快得多。Matlab中的循环在时间上非常昂贵.
您需要查看的是正常操作的“点”版本。例如,而不是
y = z * x;做
y = z .* x;第一个将执行矩阵乘法,这可能不是你想要的矢量化代码。第二种方法是对z和x进行逐元素乘法.
请参阅here并搜索“点操作”。
https://stackoverflow.com/questions/4986403
复制相似问题