Hi all,
When accessing an element of a 3D array this way :
myMat = R1[1,.,.]
In order to get a 2D (x by y) array, Gauss resturns a 3D (1 by x by y) instead.
How can I get this (1 by x by y) array to a 2D (x by y) array (in order to make matrix calculation : myMat*scndMat
?
Thanks in advance
1 Answer
0
The matrix multiplication should still work, for example:
//create 2x4x3 array of random normal numbers tmp = rndn(2*4*3, 1); a = areshape(tmp, 2|4|3); //create 3x4 random matrix b = rndn(3,4); //print results of matrix multiply print b*a[1,.,.];
However, the result will be a 3-dimensional array that is 1x3x3. You can convert an array to a matrix with the GAUSS function arraytomat. For example, we could change the matrix multiply line to this:
a_mat = arraytomat(a[1,.,.]);
//print results of matrix multiply
print b*a_mat;
Or equivalently and more compactly:
//print results of matrix multiply
print b*arraytomat(a[1,.,.]);
Your Answer
1 Answer
The matrix multiplication should still work, for example:
//create 2x4x3 array of random normal numbers tmp = rndn(2*4*3, 1); a = areshape(tmp, 2|4|3); //create 3x4 random matrix b = rndn(3,4); //print results of matrix multiply print b*a[1,.,.];
However, the result will be a 3-dimensional array that is 1x3x3. You can convert an array to a matrix with the GAUSS function arraytomat. For example, we could change the matrix multiply line to this:
a_mat = arraytomat(a[1,.,.]);
//print results of matrix multiply
print b*a_mat;
Or equivalently and more compactly:
//print results of matrix multiply
print b*arraytomat(a[1,.,.]);