I have a 3D array in MATLAB, with size(myArray) = [100 100 50]
. Now, I'd like to get a specific layer, specified by an index in the first dimension, in the form of a 2D matrix.
I tried myMatrix = myArray(myIndex,:,:);
, but that gives me a 3D array with size(myMatrix) = [1 100 50]
.
How do I tell MATLAB that I'm not interested in the first dimension (since there's only one layer), so it can simplify the matrix?
Note: I will need to do this with the second index also, rendering size(myMatrix) = [100 1 50]
instead of the desired [100 50]
. A solution should be applicable to both cases, and preferably to the third dimension as well.
Use reshape() Function to Transform 1d Array to 2d Array The number of components within every dimension defines the form of the array. We may add or delete parameters or adjust the number of items within every dimension by using reshaping.
You can get the total number of items in the 2D list by multiplying the number of rows by the number of columns. If the nested lists may be of different sizes, use the sum() function.
A two-dimensional array is a data structure that contains a collection of cells laid out in a two-dimensional grid, similar to a table with rows and columns although the values are still stored linearly in memory.
Indexing a Two-dimensional Array To access elements in this array, use two indices. One for the row and the other for the column. Note that both the column and the row indices start with 0. So if I need to access the value '10,' use the index '3' for the row and index '1' for the column.
reshape(myArray(myIndex,:,:),[100,50])
Use the squeeze
function, which removes singleton dimensions.
Example:
A=randn(4,50,100);
B=squeeze(A(1,:,:));
size(B)
ans =
50 100
This is generalized and you needn't worry about which dimension you're indexing along. All singleton dimensions are squeezed out.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With