【发布时间】:2015-05-08 18:27:42
【问题描述】:
假设我有一个带有三个输入的简单函数
f = @(a,b,c) a+b+c
我想根据输入组合评估此函数
A = 1:10
B = 2:2:10
C = 0.1:0.1:1
并将输出存储在矩阵F 中。
现在我这样做如下:
F = NaN(length(A),length(B),length(C));
for ia = 1:length(A)
for ib = 1:length(B)
for ic = 1:length(C)
F(ia,ib,ic) = f(A(ia),B(ib),C(ic))
end
end
end
我想知道是否有一种有效的方法可以做到这一点,而无需使用草率的 for 循环,*并且不必对函数 f 进行矢量化。
【问题讨论】:
-
在我看来,摆脱循环和矢量化
f本质上是一回事。您可以将bsxfun与自定义非矢量化函数一起使用,但我怀疑它会比循环更快 -
您可以将
meshgrid用于A,B,C,然后只使用一个循环。它效率不高,但可能看起来更聪明! -
@LuisMendo 怎么样?这次速度不是问题,我只是想要更简洁的语法:-)
-
@Kamtal 你能同时使用
meshgrid和bsxfun吗? -
如果不是为了速度,你为什么要这样做?
标签: matlab