0

以下のコードを実行すると、(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
4

1 に答える 1

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;

for の 2 つの if については、条件が true の場合に分岐を実行するか、すべてが true の場合にのみ分岐を実行するか (これがデフォルト) は明確ではa_sありません。これはベクトルであり、ブール値ベクトルであることを忘れないでください。aany()aa<a_s

于 2012-12-16T03:15:01.133 に答える