Question on sorting and appending data

I'm trying to get the data to sort first by column, 1-360, then by row, 1-74. After it sorts each column, it should return a boolean ring (0's and 1's) ONLY for each row. These rings needs to append onto an image, so for this data set, I should get a maximum of 2 on the image. However, the ring keeps double/triple counting, so I'm getting up to a 5 maximum on the image. After each row, I want to add that row to an image matrix.
My code:
ring=zeros((360),(180));image=zeros((360),(180));
height=floor(100*(rand(74,360)));
width=floor(100*(rand(2,360)));
for m = 1:length(phi)
for n = 1:360
if height(m,n) >= 0 && height(m,n) < 180 && width(m,n) >= 0 && width(m,n) < 360
ring(width(m,n),height(m,n)) = 1;
for i = (1:360)
for j = (1:180)
image(i,j)=image(i,j)+ring(i,j);
end
end
end
end
end
Not sure how else to describe what I'm trying to do, but if there are any question please ask. Thanks!

댓글 수: 2

Doug Hull
Doug Hull 2011년 7월 26일
Huh?
Please give a very small input and expected output. The smallest data set that shows what you are trying to accomplish.
Lena Heffern
Lena Heffern 2011년 7월 26일
What I'm getting:
0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0
0 0 1 0 0 0 0 1
0 0 0 1 0 0 1 0
0 0 0 0 5 4 0 0
0 0 0 1 0 0 1 0
0 0 1 0 0 0 0 1
0 1 0 0 0 0 0 0
1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
what I want:
0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0
0 0 1 0 0 0 0 1
0 0 0 1 0 0 1 0
0 0 0 0 2 2 0 0
0 0 0 1 0 0 1 0
0 0 1 0 0 0 0 1
0 1 0 0 0 0 0 0
1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
Its intersecting data, but on the single rows it sometimes double counts. Its confusing to explain, I know.

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

답변 (1개)

Lena Heffern
Lena Heffern 2011년 7월 26일

0 개 추천

Nevermind, it just needed rearranging and a reset on the ring.
ring=zeros((360),(180));image=zeros((360),(180));
operand=atan(ellipseY./(sqrt(ellipseX.^2 + ellipseZ.^2)));
height=floor(operand * deg + 0.5) + 91;
n=1; m=1;s=0;g=1;
for m = 1:length(phi)
for n = 1:360
if height(m,n) >= 0 && height(m,n) < 180 && width(m,n) >= 0 && width(m,n) < 360
ring(width(m,n),height(m,n)) = 1;
end
end
for i = (1:360)
for j = (1:180)
image(i,j)=image(i,j)+ring(i,j);
end
end
ring=zeros((360),(180));
end

카테고리

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

태그

아직 태그를 입력하지 않았습니다.

질문:

2011년 7월 26일

Community Treasure Hunt

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

Start Hunting!

Translated by