I have a certain number of $N \times M$ matrices:
$$ M_1 = \begin{pmatrix} a_{11} & a_{12} & ... & a_{1M} \\ a_{21} & & & \\ \vdots & & \ddots & \\ a_{N1} & & & a_{NM} \end{pmatrix} $$
$$ M_2 = \begin{pmatrix} b_{11} & b_{12} & ... & b_{1M} \\ b_{21} & & & \\ \vdots & & \ddots & \\ b_{N1} & & & b_{NM} \end{pmatrix} $$
and I want to create a new matrix, applying a certain operation $f$ element by element, obtaining something like
$$ M = \begin{pmatrix} f(a_{11},b_{11},...) & f(a_{12},b_{12},...) & ... & f(a_{1M},b_{1M},...) \\ f(a_{21},b_{21},...) & & & \\ \vdots & & \ddots & \\ f(a_{N1},b_{N1},...) & & & f(a_{NM},b_{NM},...) \end{pmatrix} $$
where the $f$ takes as many arguments as the number of matrices.
As of now I am implementing this using a Table[],
With[{dims = Dimensions[dataA]}, Table[f[dataA[[x, y]], dataB[[x, y]], dataC[[x, y]]], {x, 1, dims[[1]]}, {y, 1, dims[[2]]}]]]
I was wondering if there's some more idiomatic Mathematica way of doing this.