2.80 Convert 2D matrix to show the location and values
Given
\begin{align*} A =& \left ( {\begin {array}{cccc} 41 & 45 & 49 & 53 \\ 42 & 46 & 50 & 54 \\ 43 & 47 & 51 & 55 \\ 44 & 48 & 52 & 56 \\ \end {array}} \right ) \end{align*}
Generate the matrix
\[ \left ( {\begin {array}{ccc} 1 & 1 & 41 \\ 2 & 1 & 42 \\ 3 & 1 & 43 \\ 4 & 1 & 44 \\ 1 & 2 & 45 \\ 2 & 2 & 46 \\ 3 & 2 & 47 \\ 4 & 2 & 48 \\ 1 & 3 & 49 \\ 2 & 3 & 50 \\ 3 & 3 & 51 \\ 4 & 3 & 52 \\ 1 & 4 & 53 \\ 2 & 4 & 54 \\ 3 & 4 & 55 \\ 4 & 4 & 56 \\ \end {array}} \right ) \]
Which gives at each row, the location and the value in the original matrix.
Mathematica
mat = {{41, 45, 49, 53}, {42, 46, 50, 54}, {43, 47, 51, 55}, {44, 48, 52, 56}};
Flatten[MapIndexed[Flatten[{{#2[[2]], #2[[1]]}, #1}] &, Transpose@mat, {2}],1]
Another way
mat = {{41, 45, 49, 53}, {42, 46, 50, 54}, {43, 47, 51, 55}, {44, 48, 52, 56}};
{nRow, nCol} = Dimensions[mat];
idx = Flatten[Table[{i, j}, {j, nCol}, {i, nRow}], 1]; (*similar to ind2sub*)
val = Extract[mat, idx];
MapThread[Flatten[{#1, #2}] &, {idx, val}] (* similar to [I;J;A(:)']' *)
But I think the simplist is to use Table
mat = {{41, 45, 49, 53}, {42, 46, 50, 54}, {43, 47, 51, 55}, {44, 48, 52, 56}};
{nRow, nCol} = Dimensions[mat];
Table[{i, j, mat[[i, j]]}, {j, nCol}, {i, nRow}];
Flatten[%, 1]
Matlab
A = [ 41 45 49 53;
42 46 50 54;
43 47 51 55;
44 48 52 56];
[I,J] = ind2sub(size(A),1:numel(A));
X = [I;J;A(:)']'
gives
X =
1 1 41
2 1 42
3 1 43
4 1 44
1 2 45
2 2 46
3 2 47
4 2 48
1 3 49
2 3 50
3 3 51
4 3 52
1 4 53
2 4 54
3 4 55
4 4 56
Maple
A := Matrix([[41,45,49,53],[42,46,50,54],[43,47,51,55],[44,48,52,56]]);
\[ A= \left [ \begin {array}{cccc} 41&42&43&44\\ \noalign {\medskip }45&46&47&48\\ \noalign {\medskip }49&50&51&52\\ \noalign {\medskip }53&54&55&56 \end {array} \right ] \]
[seq(seq([i,j,A(i,j)],j=1..4),i=1..4)]:
indx:=Matrix(%);
\[ \left [ \begin {array}{ccc} 1&1&41\\ \noalign {\medskip }1&2&45 \\ \noalign {\medskip }1&3&49\\ \noalign {\medskip }1&4&53 \\ \noalign {\medskip }2&1&42\\ \noalign {\medskip }2&2&46 \\ \noalign {\medskip }2&3&50\\ \noalign {\medskip }2&4&54 \\ \noalign {\medskip }3&1&43\\ \noalign {\medskip }3&2&47 \\ \noalign {\medskip }3&3&51\\ \noalign {\medskip }3&4&55 \\ \noalign {\medskip }4&1&44\\ \noalign {\medskip }4&2&48 \\ \noalign {\medskip }4&3&52\\ \noalign {\medskip }4&4&56\end {array} \right ] \]