keeping elements with specific conditions in a matrix
Afficher commentaires plus anciens
Hello,
In matrix A, I need the first value of each column which is not 999. If in any column all values are 999, then I take 999. I want to avoid loops. Matrix A can have different sizes. So, I am looking for B here
A=[.1 999 999 999;
.3 .8 999 999;
.1 .2 .3 999]
B=[.1 .8 .3 999]
1 commentaire
Azzi Abdelmalek
le 17 Sep 2012
Modifié(e) : Azzi Abdelmalek
le 17 Sep 2012
FATEMEH, have you tried my code?
Réponse acceptée
Plus de réponses (1)
Azzi Abdelmalek
le 14 Sep 2012
Modifié(e) : Azzi Abdelmalek
le 14 Sep 2012
B=~(A==999)
res=[];
for k=1:size(B,2);
res=[res ;A(max([1 ;find(B(:,k)==1,1)]),k)];
end
res=res'
2 commentaires
FATEMEH
le 17 Sep 2012
Azzi Abdelmalek
le 17 Sep 2012
ok try this
B=~(A==999);
[n,m]=size(B);
q =mat2cell(B,n,ones(1,m))
idx=cell2mat(cellfun(@(x) max([1 find(x,1,'first')]),q ,'uni',false))
B=A(idx+(0:m-1)*n)
Catégories
En savoir plus sur Mathematics dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!