Function like "find" but for lines

10 次查看(过去 30 天)
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! :)

采纳的回答

Stephen23
Stephen23 2020-4-7
>> B = find(A.').'
B =
1 2 4 5 6 9 11 12
  4 个评论

请先登录,再进行评论。

更多回答(2 个)

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

Ameer Hamza
Ameer Hamza 2020-4-7
编辑:Ameer Hamza 2020-4-7
new_A = find(A')
  2 个评论
steve Brian
steve Brian 2020-4-7
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 2020-4-7
编辑:Ameer Hamza 2020-4-7
The functionality of find function is the same, so
[new_A,~] = find(A');

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by