【发布时间】:2017-09-27 04:26:47
【问题描述】:
在广播的帮助下,无论x、y 和z 是标量、大小为n 的向量还是它们的任意组合,以下代码都可以工作。
b = zeros(n)
b .= x.*y.*z .+ x
但是,我想要一个 for 循环。以下 for 循环仅在 x 是大小为 n 的向量、y 是标量且 z 是标量时有效。
for i = 1:n
b[i] = x[i]*y*z + x[i]
end
要为任何情况编写相当于b .= x.*y.*z .+ x 的for 循环,我只能考虑为if 语句中x、y 和z 的每个组合编写一个for 循环.这可能会使更复杂的数学表达式中的更多变量变得混乱。
有没有比使用许多 if 语句更优雅的方式来做我想做的事?
【问题讨论】:
-
使用宏或生成的函数。
-
使用
broadcast有什么问题?将其作为一种语言特性的全部意义在于,您可以用一种既简洁又高效的方式表达这样的复杂事物。 -
我想让它平行。
标签: julia