Is there a notation for element-wise (or pointwise) operations?
For example, take the element-wise product of two vectors x and y (in Matlab, x .* y, in numpy x*y), producing a new vector of same length z, where zi=xi∗yi .
In mathematical notation, there doesn’t seem to be a standard for this, am I wrong?
There is x⋅y, the dot product. There is x∗y, which is usually considered the cross product. I need to find a notation for element-wise multiplication. I was aiming at maybe using the . as is done in Matlab, but it looks a little off :
z=x.∗y
What do you think?
Answer
I’ve seen several conventions, including ⋅, ∘, ∗, ⊗, and ⊙. However, most of these have overloaded meanings (see http://en.wikipedia.org/wiki/List_of_mathematical_symbols).
- × (\times) — cross product or cartesian product.
- ∗ (*) — convolution.
- ⋅ (\cdot) — dot product
- ∙ (\bullet) — dot product
- ⊗ (\otimes) — tensor product.
- ∘ (\circ) — function composition. Not a problem for vectors, but can be ambiguous for matrices.
Thus, in my personal experience, the best choice I’ve found is:
- ⊙ (\odot) — to me the dot makes it look naturally like a multiply operation (unlike other suggestions I’ve seen like ⋄) so is relatively easy to visually parse, but does not have an overloaded meaning as far as I know.
Also:
- This question comes up often in multi-dimensional signal processing, so I don’t think just trying to avoid vector multiplies is an appropriate notation solution. One important example is when you map from discrete coordinates to continuous coordinates by x=i⊙Δ+b where i is an index vector, Δ is sample spacing (say in mm), b is an offset vector, and x is spatial coordinates (in mm). If sampling is not isotropic, then Δ is a vector and element-wise multiplication is a natural thing to want to do. While in the above example I could avoid the problem by writing xk=ikΔk+bk, having a symbol for element-wise multiplication lets us mix and match matrix multiplies and elementwise multiplies, for example y=A(i⊙Δ)+b.
- Another alternative notation I’ve seen for z=x⊙y for vectors is z= diag(x)y. While this technically works for vectors, I find the ⊙ notation to be far more intuitive. Furthermore, the “diag” approach only works for vectors — it doesn’t work for the Hadamard product of two matrices.
- Often I have to play nicely with documents that other people have written, so changing the overloaded operator (like changing dot products to ⟨⋅,⋅⟩ notation) often isn’t an option, unfortunately.
Thus I recommend ⊙, as it is the only option I have yet to come across that has seems to have no immediate drawbacks.
Attribution
Source : Link , Question Author : levesque , Answer Author : Kevin Holt