filling regions of matrix
1 回表示 (過去 30 日間)
古いコメントを表示
Hi have a matrix.
I =
0 0 0 1
0 0 1 0
0 1 0 0
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
Here ones in the matrix has divided the matrix in 3 regions.Is it possible to have the following type of output:
I =
2 2 2 1
2 2 1 1
2 1 1 1
1 1 1 1
3 1 1 1
3 3 1 1
3 3 3 1
Thanks
0 件のコメント
採用された回答
その他の回答 (1 件)
the cyclist
2011 年 6 月 26 日
There might be more efficient ways, but this will get the job done. I hope I didn't just do your homework for you.
I = [0 0 0 1; ...
0 0 1 0; ...
0 1 0 0; ...
1 0 0 0; ...
0 1 0 0; ...
0 0 1 0; ...
0 0 0 1];
[M,N] = size(I);
J = I;
for nj = 1:N
% Find the ones in this column. Algorithm OK even if there's only one of them.
firstOne = find(I(:,nj),1,'first');
lastOne = find(I(:,nj),1,'last');
J(1:firstOne-1, nj) = 2;
J(firstOne:lastOne,nj) = 1;
J(lastOne+1:end, nj) = 3;
end
J
参考
カテゴリ
Help Center および File Exchange で Logical についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!