【发布时间】:2013-05-29 19:34:00
【问题描述】:
在为本文http://adsabs.harvard.edu/abs/1992PASJ...44..493K编写方程(5)的程序时,
我想我犯了一些错误(下)。我不知道如何在等式中包含“或”。
if alpha_sgp<alpha<=(alpha_sgp-180)
if p<=180-t
P=p+t;
else %p>180-t
P=p+t-180;
end
elseif alpha<=alpha_sgp | (alpha_sgp-180)<alpha
if p>=t
P=p-t;
else %p<t
P=p-t+180;
end
end
任何帮助将不胜感激。
【问题讨论】:
-
在这篇论文的链接中:articles.adsabs.harvard.edu/cgi-bin/…您要实现的算法在哪里?
-
首先,您应该阅读this reference on for loops。其次,如果你想让任何人解释应该如何在 Matlab 中完成,你应该用伪代码发布你想做的事情。一般来说,在 Matlab 中,for 循环是“最后的手段”,出于性能原因,几乎所有操作都应该以向量化形式完成,而不是循环。但目前尚不清楚这是否可能在您的问题中。
-
其次:到底是什么问题?
-
只是一个疯狂的猜测:在您引用的论文中,我假设您指的是等式(5)。但是,他们使用
pi而非180来实现其逻辑。根据您的其余代码,这可能是一个问题。 -
是的@Schorsch,@Reinderien,我指的是eq。 (5)。另外,这里的 pi 是弧度的,这就是我使用 180 的原因。我正在尝试实现 eq。 (5) 这样我就可以得到P的值。这里,alpha, p & t是Nx1个向量& alpha_sgp是一个单一的数字。