For loop isn't working, unsure as to why

In the following code, 'forrest', 'shrub', 'sav', 'grass' and 'agri' have all been initialized at 35*43 matrices of NaNs.
'lut' and 'D10weight' are also 35,43 matrices. The idea is that each of 'forrest', 'shrub', 'sav', 'grass' and 'agri' get values from 'D10weight' where 'lut' equals a certain number. However they all remain as NaNs and I am unsure why.
for i = 1:35;
j = 1:43;
if lut(i,j) == 1
forrest(i,j) = D10weight(i,j);
end
if lut(i,j) == 2
shrub(i,j) = D10weight(i,j);
end
if lut(i,j) == 3
sav(i,j) = D10weight(i,j);
end
if lut(i,j) == 4
grass(i,j) = D10weight(i,j);
end
if lut(i,j) == 5
agri(i,j) = D10weight(i,j);
end
end

 채택된 답변

James Tursa
James Tursa 2016년 4월 19일
편집: James Tursa 2016년 4월 19일

1 개 추천

I think you meant for this to be a double for loop. As coded, you only have one for loop and j is a vector. E.g., is this what you meant?
for i = 1:35;
for j = 1:43;
if lut(i,j) == 1
forrest(i,j) = D10weight(i,j);
end
if lut(i,j) == 2
shrub(i,j) = D10weight(i,j);
end
if lut(i,j) == 3
sav(i,j) = D10weight(i,j);
end
if lut(i,j) == 4
grass(i,j) = D10weight(i,j);
end
if lut(i,j) == 5
agri(i,j) = D10weight(i,j);
end
end
end

댓글 수: 1

Robert
Robert 2016년 4월 19일
Thanks, looks like that was the problem all along, it's obvious now that you've pointed it out. Thanks again

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

추가 답변 (1개)

Image Analyst
Image Analyst 2016년 4월 19일

0 개 추천

Here is a way 100% guaranteed to help you solve it: http://blogs.mathworks.com/videos/2012/07/03/debugging-in-matlab/
Have you tried actually stepping through line by line and checking the value of lut(i,j) and seeing why your "if" statements never get true and so never assigns anything?

카테고리

도움말 센터File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

태그

질문:

2016년 4월 19일

편집:

2016년 4월 19일

Community Treasure Hunt

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

Start Hunting!

Translated by