プロが教える店舗&オフィスのセキュリティ対策術

matlabで複数条件のif文を行列計算で行うには?

matlabではfor文などは行列計算で回したほうが高速化できると聞きました。
for文でのやりかたはわかったのですが、複数条件でのif文ではどのように書けばよいのでしょうか?

自分のプログラムは以下のようなものです


for i=1:100
for j=1:100
theta_kari=atan(abs(B(j,i))/abs(A(j,i)));
if A(j,i)>=0&&B(j,i)>=0
theta(j,i)=theta_kari;
elseif A(j,i)<0&&B(j,i)>=0
theta(j,i)=theta_kari+(pi/2);
elseif A(j,i)<0&&B(j,i)<0
theta(j,i)=theta_kari+pi;
elseif A(j,i)>=0&&B(j,i)<0
theta(j,i)=theta_kari+(pi/2*3);
end
end
end

よろしくお願いします

A 回答 (1件)

matlab的に一番速いのは



theta = atan(abs(B./abs(A)) + (A<0 & B>=0)*pi/2 + (A<0 & B<0)*pi + (A>=0 & B>=0)*(pi/2*3);

ですかね。
    • good
    • 0
この回答へのお礼

ありがとうございます!

forで回すのに比べて圧倒的に早く、すっきりした形になりました!!

お礼日時:2010/05/18 13:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!