How to delete nonzero values at the end of a matrix
1 回表示 (過去 30 日間)
古いコメントを表示
Assume I have the following array:
M = [1 1 1; 0 2 2; 3 3 0; 4 4 0; 0 5 0]
How do I set all elements from the end of each row to the first nonzero value to NaN?
The result should look like this:
M = [1 1 1; 0 2 2; 3 3 NaN; 4 4 NaN; NaN 5 NaN]
It is important that only the zero values at the end are set equal to NaN and not all elements that are equal to zero.
Thank you!
0 件のコメント
採用された回答
Chunru
2021 年 8 月 13 日
M = [1 1 1; 0 2 2; 3 3 0; 4 4 0; 0 5 0]
for i=1:size(M, 2)
idx = find(M(:, i), 1, 'last');
M(idx+1:end, i) = nan;
end
M
%M = [1 1 1; 0 2 2; 3 3 NaN; 4 4 NaN; NaN 5 NaN]
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Creating and Concatenating Matrices についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!