在运行下面的代码时,条件(1)和(3)不在Matlab中读取。 我尽我所能,但无法弄清楚错误。任何帮助将不胜感激。
% inputs are a_s, p, t, a
% a_s=single number
% p,t,a are column vectors
% output is P (also a column vector)
if a_s<a<=a_s-180
if p<=180-t %------(1)
P=p+t;
elseif p>180-t %------(2)
P=p+t-180;
end
elseif a<=a_s | a_s-180<a
if p>=t %------(3)
P=p-t;
elseif p<t %------(4)
P=p-t+180;
end
end
答案 0 :(得分:1)
尝试以下替换:
代替:
if p<=180-t %------(1)
P=p+t;
elseif p>180-t %------(2)
P=p+t-180;
end
为此:
P = p+t;
P(P<=180) = P(P<=180)-180;
和此:
if p>=t %------(3)
P=p-t;
elseif p<t %------(4)
P=p-t+180;
end
为此:
P = p-t;
P(P<0) = P(P<0)+180;
对于a_s
和a
的两个ifs,当any()
条件为真时或者仅当所有条件都为真时(或者是默认)。请记住,a
是一个向量,因此a<a_s
是一个布尔向量。