Set same elements in a matrix to zero
14 ビュー (過去 30 日間)
古いコメントを表示
Hi,
I have a large matrix which has duplicate elements in neighborhood.
For example,
A = [0 0 0 01 1 0 0 0 2 2 2 0 0 0 5 5 5 5 5;
0 0 0 1 1 0 0 0 0 0 2 2 0 0 0 5 0 5 0 5;
0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 5 0 5 0]
I have to keep just a unique element in an arbitrary position. Could I use loop to solve this problem?
2 件のコメント
採用された回答
Matt J
2022 年 4 月 25 日
Without the Image Processing Toolbox,
A = [0 0 0 0 1 1 0 0 0 2 2 2 0 0 0 5 5 5 5 5;
0 0 0 1 1 0 0 0 0 0 2 2 0 0 0 5 0 5 0 5;
0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 5 0 5 0]
[I,J,S]=find(A);
IJS=num2cell(splitapply(@(x) x(1,:), [I,J,S],findgroups(S)),1);
[I,J,S]=deal(IJS{:});
B=accumarray([I,J],S,size(A))
0 件のコメント
その他の回答 (1 件)
Matt J
2022 年 4 月 25 日
編集済み: Matt J
2022 年 4 月 25 日
Something like this, perhaps?
A = [0 0 0 0 1 1 0 0 0 2 2 2 0 0 0 5 5 5 5 5;
0 0 0 1 1 0 0 0 0 0 2 2 0 0 0 5 0 5 0 5;
0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 5 0 5 0]
reg=regionprops(A~=0,'PixelIdxList');
B=zeros(size(A));
for i=1:numel(reg),
j=reg(i).PixelIdxList(1);
B(j)=A(j);
end
B
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!