Function like "find" but for lines

4 ビュー (過去 30 日間)
steve Brian
steve Brian 2020 年 4 月 7 日
コメント済み: steve Brian 2020 年 4 月 7 日
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 件のコメント
Birdman
Birdman 2020 年 4 月 7 日
Good for us to learn :)
steve Brian
steve Brian 2020 年 4 月 7 日
Yeah, thanks a lot :D

サインインしてコメントする。

その他の回答 (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 Center および File ExchangeMatrices and Arrays についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by