将两个多维数组相乘,比如一个一维数组和一个三维数组:
[1 2] * reshape(1:8,2,2,2)
出现错误消息:
LoadError: MethodError: `*` has no method matching *(::Array{Int64,2}, ::Array{Int64,3})
Closest candidates are:
*(::Any, ::Any, !Matched::Any, !Matched::Any...)
*{TA,TB}(::Union{DenseArray{TA,1},DenseArray{TA,2},SubArray{TA,1,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD},SubArray{TA,2,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}, !Matched::Base.LinAlg.AbstractTriangular{TB,S<:AbstractArray{T,2}})
*{TA,TQ,N}(::Union{DenseArray{TA,N},SubArray{TA,N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}, !Matched::Union{Base.LinAlg.QRCompactWYQ{TQ,M<:AbstractArray{T,2}},Base.LinAlg.QRPackedQ{TQ,S<:AbstractArray{T,2}}})
...
while loading In[167], in expression starting on line 1
in Ac_mul_B at operators.jl:157
使用多维矩阵代数的数学定义,对于(1乘2)*(2乘2乘2)的矩阵/数组相乘,可以得到以下结果。稍微通用一些的例子是A*B=C,其中sum_k A_{i,j,k} B_{k,l,m} = C_{i,j,l,m},其中A是一个3索引矩阵或张量,B是一个3索引矩阵或张量,生成的C是一个四索引矩阵/张量,但一般来说,可以有任意数量的维度和任意大小的维度(在合理范围内)。关于矩阵乘积的定义,请查看矩阵乘积或张量缩并的更多信息。
在Julia中,这种乘法的正确语法是什么?
.*
instead of*
- Gnimuc*
完成。 - Ferenc