The colon notation used in multidimensional array

2 Ansichten (letzte 30 Tage)
DM
DM am 28 Apr. 2015
Bearbeitet: Adam am 28 Apr. 2015
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.

Akzeptierte Antwort

Adam
Adam am 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 Kommentare
DM
DM am 28 Apr. 2015
Bearbeitet: DM am 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 am 28 Apr. 2015
Bearbeitet: Adam am 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.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Guillaume
Guillaume am 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!

Translated by