Matlab Find() Function
5 ビュー (過去 30 日間)
古いコメントを表示
Hello, I have a matrix -
M = [−1 −1 0 0 ; 1 0 −1 0 ; 0 1 1 −1; 0 0 0 1 ; 1 −1 0 0 ]
Basically I have to go along the first row and find an element value of "-1", then look along the columns which the value "-1" was found and look for value "1". I have then to sum the row index of the column which the value "1" was found. (Loop of sorts) until I've reached the end.

Hope that makes sense and thanks
3 件のコメント
Image Analyst
2022 年 3 月 13 日
Is there always a 1 directly below the "first -1 after a 1"?
Did you try a simple for loop?
回答 (1 件)
Image Analyst
2022 年 3 月 13 日
Do you mean like this:
M = [-1 -1 0 0 ; 1 0 -1 0 ; 0 1 1 -1; 0 0 0 1 ; 1 -1 0 0 ]
[rows, columns] = size(M)
output = zeros(rows, 2); % List of starting column and ending column for every row.
col1 = find(M(1, :) == -1, 1, 'first');
output(1, 1) = col1;
for row = 2 : rows
col2 = col1 - 1 + find(M(row, col1 : end) == -1, 1, 'first');
if isempty(col2)
% No more results found. Reached last column of array.
break;
end
% Save results
output(row, 1) = col1;
output(row, 2) = col2;
col1 = col2;
end
output
Not sure why you're wanting the last 1 in row 4 since there is no -1 that follows it.
2 件のコメント
Image Analyst
2022 年 3 月 14 日
You can use cumsum() or sum() at the end to sum up all the individual indexes.
参考
カテゴリ
Help Center および File Exchange で Matrix Indexing についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
