Function like "find" but for lines

9 vues (au cours des 30 derniers jours)
steve Brian
steve Brian le 7 Avr 2020
Commenté : steve Brian le 7 Avr 2020
Hi everyone, I need a function that starts counting every element in an array (each line), and when it finds 0, it can skip it.
ex: A = [6 5 0 1; 3 1 0 0; 12 0 100 20]
newA = [ 1 2 4 5 6 9 11 12]
I was trying something like this:
k = 0;
colind = 1:numel(A);
colind(A!=k)
But it only takes me each column in the matrix.
wrong: newA = [1 2 3 4 5 9 10 12]
I want to count my elements on each line of the matrix. A little help please! :)

Réponse acceptée

Stephen23
Stephen23 le 7 Avr 2020
>> B = find(A.').'
B =
1 2 4 5 6 9 11 12
  4 commentaires
Birdman
Birdman le 7 Avr 2020
Good for us to learn :)
steve Brian
steve Brian le 7 Avr 2020
Yeah, thanks a lot :D

Connectez-vous pour commenter.

Plus de réponses (2)

Birdman
Birdman le 7 Avr 2020
B=reshape(A.',1,[]);
C=(1:numel(A)).*(B~=0);
C=C(C~=0)

Ameer Hamza
Ameer Hamza le 7 Avr 2020
Modifié(e) : Ameer Hamza le 7 Avr 2020
new_A = find(A')
  2 commentaires
steve Brian
steve Brian le 7 Avr 2020
And if i want to reset count on each line?
something like this:
A = [100 0 0 2 0; 3 4 0 5 0; 6 0 7 8 9; 0 0 10 11 0; 0 0 0 0 12]
newA= [1 4 1 2 4 1 3 4 5 3 4 5]
Ameer Hamza
Ameer Hamza le 7 Avr 2020
Modifié(e) : Ameer Hamza le 7 Avr 2020
The functionality of find function is the same, so
[new_A,~] = find(A');

Connectez-vous pour commenter.

Catégories

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

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by