假设我有一个函数calculateStuff(x),它接受一个标量作为参数并返回一个标量.
假设我有一个向量X,我想在X中的每个组件上应用calculateStuff,并获得结果的向量并将其存储在新的向量Y中.
显然Y = calculateStuff(X)是非法的,除了循环之外,还有什么方法可以做到这一点?
大多数Matlab操作都允许您输入矩阵并返回矩阵.您应该能够重写calculateStuff()以获取矩阵并返回矩阵.这通常比使用for循环快得多.Matlab中的循环在时间上非常昂贵.
您需要注意的是正常操作的"点"版本.例如,而不是
y = z * x;
Run Code Online (Sandbox Code Playgroud)
做
y = z .* x;
Run Code Online (Sandbox Code Playgroud)
第一个将进行矩阵乘法,这可能不是你想要的矢量化代码.第二个是逐个元素乘以z和x.
见这里和搜索"的点行动".