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

Jan
Jan 2022년 4월 25일
What is the wanted output for this example?
WEN SHIN LU
WEN SHIN LU 2022년 4월 25일
sorry didn't explain clearly. The output can be:
A = [0 0 0 01 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0;
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 0 0 0 0;
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
I want to keep just one repeated element in its neighborhood.

댓글을 달려면 로그인하십시오.

 채택된 답변

Matt J
Matt J 2022년 4월 25일

0 개 추천

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]
A = 3×20
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))
B = 3×20
0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 5 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

추가 답변 (1개)

Matt J
Matt J 2022년 4월 25일
편집: Matt J 2022년 4월 25일

1 개 추천

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]
A = 3×20
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
B = 3×20
0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 5 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

카테고리

도움말 센터File Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

태그

질문:

2022년 4월 25일

답변:

2022년 4월 25일

Community Treasure Hunt

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

Start Hunting!

Translated by