Function like "find" but for lines

4 Ansichten (letzte 30 Tage)
steve Brian
steve Brian am 7 Apr. 2020
Kommentiert: steve Brian am 7 Apr. 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! :)

Akzeptierte Antwort

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

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (2)

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

Ameer Hamza
Ameer Hamza am 7 Apr. 2020
Bearbeitet: Ameer Hamza am 7 Apr. 2020
new_A = find(A')
  2 Kommentare
steve Brian
steve Brian am 7 Apr. 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 am 7 Apr. 2020
Bearbeitet: Ameer Hamza am 7 Apr. 2020
The functionality of find function is the same, so
[new_A,~] = find(A');

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Matrices and Arrays finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by