Effacer les filtres
Effacer les filtres

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

3 vues (au cours des 30 derniers jours)
dave
dave le 12 Sep 2013
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?

Réponse acceptée

fsgeek
fsgeek le 12 Sep 2013
Modifié(e) : fsgeek le 12 Sep 2013
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 commentaires
dave
dave le 12 Sep 2013
Perfect, thanks very much...
Jan
Jan le 12 Sep 2013
And for efficiency a pre-allocation is recommended:
myCell = cell(1, dim);

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Matrices and Arrays dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by