When i execute function my matlab is being struck; is there any wrong with this simple code???
조회 수: 1 (최근 30일)
이전 댓글 표시
In the following arr is a array(1-d) in which each row has three columns of
x-co-ordinate , y-co-ordinate and intensity values ;
m*n is the required size of output image ie fgt here.
In the code initially i have simply assigned all values to 65539(which is not in range of uint16)
function [fgt]= reconstruct ( arr,m,n)
fgt=zeros(m,n);
fgt(:,:)=65539; %
l=size(arr,2)-2;
for i=1:l
fgt(arr(i),arr(i+1))=arr(i+2);
i=i+3;
end
for i=1:m
for j=1:n
if(fgt(i,j)==65539)
fgt(i,j)=0;
end
end
end
댓글 수: 0
채택된 답변
Azzi Abdelmalek
2013년 1월 9일
If arr is a real array, then there will be a problem with fgt(arr(i),arr(i+1))
댓글 수: 7
Azzi Abdelmalek
2013년 1월 9일
I tested your code, there is no problem,
arr=randi(10,8,3)
m=8,n=3;
fgt=zeros(m,n);
fgt(:,:)=65539; %
l=size(arr,2)-2;
for i=1:l
fgt(arr(i),arr(i+1))=arr(i+2);
i=i+3;
end
for i=1:m
for j=1:n
if(fgt(i,j)==65539)
fgt(i,j)=0;
end
end
end
추가 답변 (1개)
Walter Roberson
2013년 1월 9일
Please do not use "l" as a variable name: it is too easy to confuse it with "1".
You have
for i=1:l
i=i+3
end
changing a loop variable inside of the "for" loop has an effect only until the beginning of the next loop iteration. If you want to increment by 3's, then use
for i = 1 : 3 : l
참고 항목
카테고리
Help Center 및 File Exchange에서 Downloads에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!