julia - 将向量广播到矩阵以计算总和(MATLAB 样式)

标签 julia

在 MATLAB 中,我可以执行以下操作:

[1 2 3; 4 5 6] + [-1 -2 -3]

这将返回[0 0 0; 3 3 3],因为它理解我想要对矩阵的每一行执行向量加法。

我怎样才能在 Julia 中做到这一点?如果我尝试,它会给我这个错误:

ERROR: DimensionMismatch("dimensions must match: a has dims (Base.OneTo(2), Base.OneTo(3)), b has dims (Base.OneTo(1), Base.OneTo(3)), mismatch at 1")

最佳答案

+前面添加一个点,如下所示:

julia> [1 2 3; 4 5 6] .+ [-1 -2 -3]
2×3 Matrix{Int64}:
 0  0  0
 3  3  3

但是请注意,[-1 -2 -3] 不是 Julia 中的向量。它是一个只有一行的矩阵:

julia> [-1 -2 -3]
1×3 Matrix{Int64}:
 -1  -2  -3

在 Julia 中,向量将是 [1, 2, 3] 并且向量始终被视为柱状:

julia> [1, 2, 3]
3-element Vector{Int64}:
 1
 2
 3

原因:

[1 2 3; 4 5 6] + [-1 -2 -3]

失败之处在于,从数学角度来看,它是一个不正确的表达式。这两个矩阵:[1 2 3; 4 5 6][-1 -2 -3] 表示具有不同操作空间的线性运算符,并且添加此类线性运算符通常被认为在数学中是不允许的。

但是,如果矩阵具有相同的形状,您可以将它们添加为线性运算符,然后具有相同的起始和终止空间维度,以便可以添加它们:

julia> [1 2; 3 4] + [5 6; 7 8]
2×2 Matrix{Int64}:
  6   8
 10  12

(这样的操作在数学上是明确定义的)

您可以阅读有关广播的更多信息 here .

关于julia - 将向量广播到矩阵以计算总和(MATLAB 样式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71542222/

相关文章:

arrays - Julia : Cartesian product of multiple arrays

arrays - Julia - 获取复杂数组的实部

julia - 组织 Julia 源代码树的正确方法是什么?

julia - 使文字常量的类型依赖于其他变量

macos - 如何运行 julia-lang 文件 - Mac OS X

redis - 如何序列化为字符串然后反序列化(对于 Redis)?

julia - 如何逐步执行 Julia 脚本?

julia - 如何创建 n 个变量的函数 (Julia)

multidimensional-array - 将 Array{T,N} 转换为 Array{Array{T,M},N-M} 的优雅方法

types - 有人可以指出我的代码中的类型不稳定性吗?