我想使以下广播表达式起作用:

J = rand(4,4)
fx1 = rand(2,2)
fx2 = rand(2,2)
@. J[:,1] = fx1 + fx2


我真的想要某种:

@. J[:,1] = vec(fx1 + fx2)


这个vec表示应该重塑为4x1,但我不想进行此分配。一般如何处理(即在fx上没有索引)?

最佳答案

另一种可能性是,代替vec设置fx1fx2重塑J的切片:

Jcol = reshape(view(J,:,1),(2,2))
@. Jcol = fx1 + fx2


不确定效率,但是根据周围的算法,它可能会提供更清晰的视角。 LLVM代码似乎足够短,并且赋值语句很清楚。

关于arrays - 重塑广播的表情,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47345634/

10-11 00:09