Hello:
I just wanted to check, whether it is possible to have variable sized 3D array in Gauss, meaning, I want to have a 3D array where the size of the last two dimension varies by the index of the 1st dimension. I have not used 3D array before in GAUSS, so if its possible to do, I would appreciate if someone could just refer me to the correct link.
Many thanks
Annesha
4 Answers
0
Here is a link to a tutorial on the basics of multi-dimensional arrays in GAUSS.
0
Just to clarify, so it possible to have a variable dimension array in GAUSS, because as far I have reviewed so far, it seems to me that, its not.
Thanks
Annesha
0
Oh, I see. So instead of having 3 4x5 matrices, for example, you want to have a collection of 3 matrices where the first one might be 2x2, the second one might be 100x5 and the third might be 175x21.
For that, you would probably want to create a structure.
Option 1
If you have only three different matrices that you want to represent, then you could do something like this:
struct data_center { matrix num_nodes; matrix node_ids; matrix node_vars; }; struct data_center main; main.num_nodes = 4; main.node_ids = { 1012, 1043, 1104, 1009 }; main.node_vars = { 37 0 2, 34 1 4, 35 0 1, 33 0 0 };
You can refer to each member of the structure by name and each member can be any size that you want.
Option 2
However, if you may not have always exactly 3 or you would rather refer to them by index instead of name, you can create a very simple structure that just has a matrix member and then make an array of them like this:
struct var_array { matrix x; }; struct var_array a; a = reshape(a, 3, 1); a[1].x = { 1 2, 3 4 }; a[2].x = { 7 8 9 }; a[3].x = { 10, 11, 12 };
0
Thank you much, this is very helpful.
Annesha
Your Answer
4 Answers
Here is a link to a tutorial on the basics of multi-dimensional arrays in GAUSS.
Just to clarify, so it possible to have a variable dimension array in GAUSS, because as far I have reviewed so far, it seems to me that, its not.
Thanks
Annesha
Oh, I see. So instead of having 3 4x5 matrices, for example, you want to have a collection of 3 matrices where the first one might be 2x2, the second one might be 100x5 and the third might be 175x21.
For that, you would probably want to create a structure.
Option 1
If you have only three different matrices that you want to represent, then you could do something like this:
struct data_center { matrix num_nodes; matrix node_ids; matrix node_vars; }; struct data_center main; main.num_nodes = 4; main.node_ids = { 1012, 1043, 1104, 1009 }; main.node_vars = { 37 0 2, 34 1 4, 35 0 1, 33 0 0 };
You can refer to each member of the structure by name and each member can be any size that you want.
Option 2
However, if you may not have always exactly 3 or you would rather refer to them by index instead of name, you can create a very simple structure that just has a matrix member and then make an array of them like this:
struct var_array { matrix x; }; struct var_array a; a = reshape(a, 3, 1); a[1].x = { 1 2, 3 4 }; a[2].x = { 7 8 9 }; a[3].x = { 10, 11, 12 };
Thank you much, this is very helpful.
Annesha