Extract matrices of a particular size
3 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Suppose there a cell containing matrices of different sizes. How can I extract all the (1x16) matrices in the same order which was present in the cell and store them in a different cell?
1 commentaire
Réponses (3)
James Tursa
le 31 Mar 2015
Modifié(e) : James Tursa
le 31 Mar 2015
C = your cell array
DesiredSize = whatever; % e.g. [1 16]
Z = cellfun(@size,C,'UniformOutput',false); % get matrix sizes
X = cellfun(@isequal,Z,repmat({DesiredSize},size(Z))); % which ones match desired size
D = C(X); % Extract them into another cell array
2 commentaires
Michael Haderlein
le 31 Mar 2015
In principle, yes, but it looks to me as if there's are more straight-forward way of getting X:
C={rand(3) rand(1,16) rand(1,9) rand(1,16)};
DesiredSize=[1 16];
X=cellfun(@(c) isequal(size(c),DesiredSize),C);
D=C(X);
Hamza Ahmed
le 19 Mar 2021
Hello i wanna loop through this
lets just say i have a 1*78 cell array and each cell has matrix of 2 columns but different number of rows my question is that how will I extract all the matrices which have number of rows greter then 2 from that cell array? any help in this regard will be much appreciated Thankyou
Andrei Bobrov
le 31 Mar 2015
[a,b] = cellfun(@size,C);
out = C(ismember([a;b]',[1,16],'rows'));
0 commentaires
ankit
le 31 Mar 2015
1 commentaire
Andrei Bobrov
le 31 Mar 2015
No, e.g.:
>> C = {randi(20,4,4);randi(10,1,16);randi(20,1,16);randi(15,16,3)};
>> ii = cellfun(@length,C)
ii =
4
16
16
16
>>
Voir également
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!