Array Multiplication in Julia
arrays, julia, multiplication, types
Solution
You're looking for the `.*` element-wise, broadcasting multiply operator:
julia> A = [ i + j*im for i=1:3, j=1:4 ]
3x4 Array{Complex{Int64},2}:
1+1im 1+2im 1+3im 1+4im
2+1im 2+2im 2+3im 2+4im
3+1im 3+2im 3+3im 3+4im
julia> v = [1:4]
4-element Array{Int64,1}:
1
2
3
4
julia> w = [1:3]
3-element Array{Int64,1}:
1
2
3
julia> A .* w
3x4 Array{Complex{Int64},2}:
1+1im 1+2im 1+3im 1+4im
4+2im 4+4im 4+6im 4+8im
9+3im 9+6im 9+9im 9+12im
julia> A .* v'
3x4 Array{Complex{Int64},2}:
1+1im 2+4im 3+9im 4+16im
2+1im 4+4im 6+9im 8+16im
3+1im 6+4im 9+9im 12+16im
Problem
I'm trying to do something that I believe should be relatively simple in Julia, but I can't seem to find any mention of this problem. Basically what I've got is an `mxn` matrix, and an `nx1` vector. What I would like to do is multiply the vector against the matrix, elementwise, but along the axis such that every element of the matrix is multiplied. In `numpy` for instance this would be: ``` np.multiply(array, vector) ``` Is there any way to do this in Julia? I tried just extending the vector to fill an array: ``` projection = 1:size(matrix)[1] weight_change = hcat(map(x -> vector, projection)) ``` but that yields something with a type of `Array{Array{Float64, 2}, 2}`, when what I really need is just `Array{Float64, 2}`, which means that an elementwise multiplication won't really work. Is there any way to either fix my approach or remedy my bugged solution?