n-dimensional matrix - Store the indexes of the n-th dimension in n-th cell

I have a n-dimensional matrix M. Now I'm looking for a way to create a 1xn cell array, where the index vector of the n-th dimension of M is stored in the n-th cell.
So for example: If the size of M were 40x30x50x20, the resulting cell array should look like this:
myCell = {[1:40], [1:30], [1:50], [1:20]};
How would I do this?

 채택된 답변

fsgeek
fsgeek 2013년 9월 12일
편집: fsgeek 2013년 9월 12일
If M is explicitly defined then could you do
vect = size(M); % vect = [40 30 50 20] in your example of M
%{
dim = length(vect); So that we know how many cells there will be.
For your example dim == 4;
%}
myCell = cell(1, dim); % Pre-allocate for speed (thanks for reminding me, Jan!)
for i = 1:dim
myCell{i} = 1:vect(i); % assign a 1 x vect(i) array to each cell
end
The value of myCell after running this code is:
>> myCell
myCell =
[1x40 double] [1x30 double] [1x50 double] [1x20 double]
I hope this helps!
Louis

댓글 수: 2

Perfect, thanks very much...
And for efficiency a pre-allocation is recommended:
myCell = cell(1, dim);

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

질문:

2013년 9월 12일

Community Treasure Hunt

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

Start Hunting!

Translated by