在matlab中有多个条件

时间:2012-12-15 23:59:48

标签: matlab

在运行下面的代码时,条件(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

1 个答案:

答案 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_sa的两个ifs,当any()条件为真时或者仅当所有条件都为真时(或者是默认)。请记住,a是一个向量,因此a<a_s是一个布尔向量。