The colon notation used in multidimensional array

9 views (last 30 days)
I have come across the following notation in MATLAB
y(:, :, :, 2) = y(:, :, :, 1);
y(:, 1, :, 4) = y(:, 1, :, 3);
I have no clue what it means?
I know for matrix A(:,1) and A(1,:) means extract first column and first row respectively. But the above is not clear to me.
Thanks.

Accepted Answer

Adam
Adam on 28 Apr 2015
It is just an extension of what you already know, but for multi-dimensional arrays. You can no longer use terms like 'rows' and 'columns' unless you have n ever more creative names for each dimension, but the logic is the same. Take all data from the dimensions that have a : and only the specified data from the dimensions which you give an exact index for.
Personally I rarely if ever use arrays of dimensionality higher than 3 because I like to be able to visualise what indexing means and since I can't visualise beyond a 3d cube I easily get confused. That said, the logic works the same whether it can be visualised intuitively or not!
  4 Comments
DM
DM on 28 Apr 2015
Edited: DM on 28 Apr 2015
But it gives me just second column not all rows. See example below
A=[2, 3, 4; 0, 5, 7]
A =
2 3 4
0 5 7
> A(:, 2)
ans =
3
5
Adam
Adam on 28 Apr 2015
Edited: Adam on 28 Apr 2015
It gives you all rows of the 2nd column. It's basically like a filter. It would give you all rows, but you told it to only give you column 2 so all other elements of the rows are thrown away.

Sign in to comment.

More Answers (1)

Guillaume
Guillaume on 28 Apr 2015
The colon is exactly the same as writing 1:end. In your example, naming the dimensions y, x, z, and t
y(:, :, :, 2) = y(:, :, :, 1);
copy all the values at t = 1 to t = 2 and
y(:, 1, :, 4) = y(:, 1, :, 3);
copy all the values at x = 1 and t = 3 to x = 1 and t = 4.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!