Element-wise (or pointwise) operations notation?

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=xiyi .

In mathematical notation, there doesn’t seem to be a standard for this, am I wrong?

There is xy, the dot product. There is xy, 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=xy 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

Leave a Comment