field displacement array range
显示 更早的评论
Hello,
weather1618 and whether1623 are two 2D array of size 384x384. Following is my script section for weather1618Modified for which I tried to do a field displacement. If it helps, max_displ has a value of 139.7.
I do not get any error message when I run the script but I also don't get any value for bestDx and bestDy, the variables don't even create, What am I doing wrong?
%%Find Dx Dy for max_corr between two maps
maxCoeff=0;
weather1618Modified = zeros(384,384); %create weather array for time range
%weather1618Modified(:) = {NaN}; %Matlab cannot mix cell& double
for x = 1:384
for y = 1:384
for Dx = -max_displ:9: max_displ %139.7*2/30= 9 for a 30pixel appx.
for Dy = -max_displ:9: max_displ
%MAKE SURE x+Dy and y+DY don't exceed 1:384
if x+Dx<1 | y+Dy<1 | x+Dx>384 | y+Dy>384
continue
%weather1618Modified is the forecasted weather1823
weather1618Modified(x+Dx,y+Dy) = weather1618(x,y)
%Find the best correlation; Is corrcoef the right formula?
newCoeff=corrcoef(weather1623,weather1618Modified);
if newCoeff>maxCoeff
maxCoeff=newCoeff;
bestDx=Dx;
bestDy=Dy;
end
end
end
end
end
end
2 个评论
Jan
2017-5-19
How could "x [...] not cross the interval 1 to 384", when it is created by "for x = 1:384"? I do not understand the question in consequence.
采纳的回答
更多回答(1 个)
Jan
2017-5-22
The continue statement prevents the code from creating any variables.
for Dy = -max_displ:9: max_displ
if x+Dx<1 | y+Dy<1 | x+Dx>384 | y+Dy>384
continue
x = 0
end
end
Here x=0 is not reached, because the continue forwards the execution directly to the next iteration. I assume you simply want to omit this command.
类别
在 帮助中心 和 File Exchange 中查找有关 Web Services 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!