我有一个迭代代码,我用它来查找一组高度(h_intercept)的纬度/经度。这是1x79矩阵。
直到第22个值才能完美运行。我发现这是h_test> h_intercept的时候。我试图设置一个条件来重置它,但它没有工作。
当h_test> h_intercept时,所有范围值都变为零
例如
for j=20:40
rng_sat= sat_look_tcs_pass1(3,j);
u_sat=[sat_look_tcs_pass1(1,j)/sat_look_tcs_pass1(3,j);sat_look_tcs_pass1(2,j)/sat_look_tcs_pass1(3,j);sat_look_tcs_pass1(3,j)/sat_look_tcs_pass1(3,j)];
h_intercept=sat_look_pass1_llh(3,j)/2e3;
h_test=zeros(1,3);
rng_test_min=0;
rng_test_max=rng_sat/2e3;
err=0.01;
while abs(h_intercept-h_test)>err
rng_test=(rng_test_min+rng_test_max)/2;
tcs_test=u_sat*rng_test;
llh_test=tcs2llhT(tcs_test,station_llh);
h_test=llh_test(3,:);
if h_test>=h_intercept
rng_test_max=rng_test;
else
rng_test_min=rng_test;
end
end copter_llh(:,j)=(llh_test); h_interceptloop(:,j)=(h_intercept); end % code end
任何建议都赞赏!
答案 0 :(得分:0)
我认为错误发生在第一个循环中。在第一行中,您可以选择值60到79:
h_intercept=sat_look_pass1_llh(3,60:79)/2e3;
但是,您只使用该向量的长度而不是以下代码中的值。
你迭代h_intercept
的长度,即从1到19:
for j=1:length(h_intercept)
这意味着h_intercept=sat_look_pass1_llh(3,j)/2e3;
将得到错误的值,因为j的范围是1到19而不是60到79.
如果您将for循环更改为for j=60:79
,它应该有效(您还可以删除第一行h_intercept=sat_look_pass1_llh(3,60:79)/2e3;
)