# コードのパフォーマンスの高速化

11 vues (au cours des 30 derniers jours)
N/A le 13 Août 2018
Commenté : N/A le 18 Août 2018

m=-log(2)/log(cos(k));
wx=10;
wy=10;
fov=25;
H=2.5;
i=1;
j=1;
z = 0;
eor = zeros(0,91);
esitax = zeros(0,7687177771);
esitay = zeros(0,7687177771);
ex = zeros(0,7687177771);
ey = zeros(0,7687177771);
M5 = zeros(0,91);
for oR=0:1:90
eor(i)=oR;
minMRC5=100000;
for sitax=0:pi/180:pi/2
for sitay=0:pi/180:pi/2
for x=0:0.1:wx
for y=0:0.1:wy
esitax(j)=sitax;
esitay(j)=sitay;
ex(j)=x;
ey(j)=y;
R11=-sin(-sitay)*cos(OR-sitax);
R12=-sin(OR-sitax);
R13=cos(-sitay)*cos(OR-sitax);
H1=sqrt((wx/2-x)^2+y^2+(H-z)^2);
%h11
cost11=(H-z)/H1;%cos(ΦT)
t11=acos(cost11);%ΦT
cosr11=(R11*(wx/2-x)+R12*(-y)+R13*(H-z))/H1;%cos(ΦR)
r11=acos(cosr11);%ΦR
cosr11=10e-6;
end
h11=((cost11^m)*cosr11)/(power(H1,2));
H2=sqrt((wx-x)^2+(wy/2-y)^2+(H-z)^2);
cost21=(H-z)/H2;%cos(ΦT)
t21=acos(cost21);%ΦT
cosr21=(R11*(wx-x)+R12*(wy/2-y)+R13*(H-z))/H2;%cos(ΦR)
r21=acos(cosr21);%ΦR
cosr21=10e-6;
end
h21=((cost21^m)*cosr21)/(power(H2,2));
H3=sqrt((wx/2-x)^2+(wy-y)^2+(H-z)^2);
cost31=(H-z)/H3;%cos(ΦT)
t31=acos(cost31);%ΦT
cosr31=(R11*(wx/2-x)+R12*(wy-y)+R13*(H-z))/H3;%cos(ΦR)
r31=acos(cosr31);%ΦR
cosr31=10e-6;
end
h31=((cost31^m)*cosr31)/(power(H3,2));
H4=sqrt(x^2+(wy/2-y)^2+(H-z)^2);
cost41=(H-z)/H4;%cos(ΦT)
t41=acos(cost41);%ΦT
cosr41=(R11*(-x)+R12*(wy/2-y)+R13*(H-z))/H4;%cos(ΦR)
r41=acos(cosr41);%ΦR
cosr41=10e-6;
end
h41=((cost41^m)*cosr41)/(power(H4,2));
H15=(1/(H^2));
COST21=H/sqrt((wx/2)^2+(wy/2)^2+H^2);
COSR25=10e-6;
H25=((COST21)^m*COSR25)/(((wx/2)^2+(wy/2)^2+H^2));
COST31=H/sqrt(wy^2+H^2);
COSR35=10e-6;
H35=((COST31)^m*COSR35)/(wy^2+H^2);
H45=H25;
H5=(H15+H25+H35+H45)^2;
H111=h11+h21+h31+h41;
SNRMRC5 = 10*log10((H111^2)/H5);
if SNRMRC5<=minMRC5
minMRC5=SNRMRC5;
end
j=j+1;
end
end
end
end
M5(i)=minMRC5;
i=i+1;
end
plot(eor,M5,'Color',[0.1010, 0.7, 0.933],'LineWidth',2.5);
##### 0 commentairesAfficher -1 commentaires plus anciensMasquer -1 commentaires plus anciens

Connectez-vous pour commenter.

### Réponse acceptée

mizuki le 13 Août 2018

>> profile viewer
で起動，あるいはエディタタブの「実行および時間の計測」を実行して起動します．
これにより，各行の評価回数と，かかっている時間のレポートが生成されます． 数分レベルで時間がかかるものであれば，まずはループの回数を小さくして試してみてください．
ループの中で一つ一つ計算しているところはベクトル化（行列化）すると高速化できそうです．ベクトル化についてはこちらのビデオをご覧ください．
##### 0 commentairesAfficher -1 commentaires plus anciensMasquer -1 commentaires plus anciens

Connectez-vous pour commenter.

### Plus de réponses (2)

Jiro Doke le 14 Août 2018

eor = zeros(0,91);
ではなく
eor = zeros(1,91);
のように変更してみてください。
##### 3 commentairesAfficher 2 commentaires plus anciensMasquer 2 commentaires plus anciens
N/A le 18 Août 2018

Connectez-vous pour commenter.

Atsushi Matsumoto le 17 Août 2018
5重のFor Loopがあって、それぞれ結構大きなループ回数なのでかなりの計算時間がかかりますね。 &nbsp
ループ回数を減らすようにステップサイズを大きく取るわけには行きませんか？

&nbsp
また、Forループをベクター化すると速くなるかもしれません。
##### 1 commentaireAfficher AucuneMasquer Aucune
N/A le 18 Août 2018

Connectez-vous pour commenter.

### Catégories

En savoir plus sur プログラミング dans Help Center et File Exchange

R2017a

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!