assigning matrices to a cell

7 vues (au cours des 30 derniers jours)
Natalie
Natalie le 8 Juin 2011
Right I apologise in advance because I have the feeling that what I've done may be some awful mistake that makes people with more matlab experience shudder but the concept of cells are kind of new to me.
Essentially I have a loop that creates a matrix Y each time I run it and I want to store this for use later in the code so that I can compare its entries with another array that I've created (successfully I might add!). At first I thought about using 3D arrays but then I realised that this meant all the cells needed to be the same size. This is a stripped down version of the relevant section of my code...
for k=1:K2
Y=zeros(N,D);
for n=1:N
if (r(n,k)==1)
Y(n,:)=X(n,:);
end
end
for n=N:-1:1
if ((sum(Y(n,:)))==0)
Y(n,:)=[];
end
end
Y=sortrows(Y);
Bla_2{:,k}=Y;
end
Can anyone please explain what I've done wrong and please use simple language. Thanks.

Réponse acceptée

Andrei Bobrov
Andrei Bobrov le 9 Juin 2011
help:
doc all
doc function_handle
doc arrayfun
cod:
l1 = all(X,2);
X1 = X(l1,:);
r1 = r(l1,:)==1;
Bla_2 = arrayfun(@(ii)X1(r1(:,ii),:),1:K2,'un',0);
  4 commentaires
Andrei Bobrov
Andrei Bobrov le 9 Juin 2011
ii - the column index varies from 1 to K2.
arrayfun uses an anonymous function @ (ii) X1 (r1 (:, ii),:), for each ii, and places the result in a single cell cellarray (sorry for my english).
In this, the better to read the help on the functions -
"function_handle", "arrayfun".
Natalie
Natalie le 9 Juin 2011
Thanks Andrei. I understand now.

Connectez-vous pour commenter.

Plus de réponses (2)

Matt Fig
Matt Fig le 8 Juin 2011
Use:
Bla_2{k} = Y;
But before the outer loop starts, pre-allocate the cell array:
Bla_2 = cell(K2,1);

Natalie
Natalie le 9 Juin 2011
Thank you both. I'll have another try.

Catégories

En savoir plus sur Loops and Conditional Statements 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