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

7次浏览(最近30天)
N/A
N/A 2018年8月13日
评论道: N/A2018年8月18日
下記のようなプログラムを作成しましたが,実行が完了するのに時間がかかりすぎてしまいます。どのようにプログラムを修正したら,時間が短縮されますか吗?M5を求める式は正しいものとします。
函数k = 62.5);
m =日志(2)/日志(cos (k));
wx = 10;
王寅= 10;
fov = 25;
H = 2.5;
i = 1;
j = 1;
悉=函数(45);
z = 0;
三次采油= 0 (0,91);
esitax = 0 (0, 7687177771);
esitay = 0 (0, 7687177771);
前女友= 0 (0,7687177771);
嗯= 0 (0,7687177771);
M5 = 0 (0, 91);
或= 0:1:90
三次采油(i) =或;
minMRC5 = 100000;
sitax = 0:π/ 180:π/ 2
sitay = 0:π/ 180:π/ 2
x = 0:0.1:天气
y = 0:0.1:王寅
esitax (j) = sitax;
esitay (j) = sitay;
例(j) = x;
莎莉(j) = y;
或函数=(或);
R11 = sin (-sitay) * cos (OR-sitax);
R12 = sin (OR-sitax);
R13 = cos (-sitay) * cos (OR-sitax);
H1 =√(wx / 2 x ^ 2 + y ^ 2 + (H-z) ^ 2);
% h11
cost11 = (H-z) / H1;%因为(ΦT)
t11 =这些“可信赖医疗组织”(cost11);%ΦT
rad2t11 = rad2deg (t11);
R11 * cosr11 = ((wx / 2 x) + R12 * (- y) + R13 * (H-z)) / H1;%因为(ΦR)
r11 =这些“可信赖医疗组织”(cosr11);%ΦR
rad2r11 = rad2deg (r11);%ラジアンを度に変換する
如果abs (rad2r11) >视场
cosr11 = 10 e-6;
结束
h11 = ((cost11 ^ m) * cosr11) /(权力(H1, 2));
H2 =√(wx-x) ^ 2 +(王寅/ 2 y) ^ 2 + (H-z) ^ 2);
cost21 = (H-z) / H2;%因为(ΦT)
t21 =这些“可信赖医疗组织”(cost21);%ΦT
rad2t21 = rad2deg (t21);
R11 * cosr21 = ((wx-x) + R12 *(王寅/ 2 y) + R13 * (H-z)) / H2;%因为(ΦR)
一下r21 =这些“可信赖医疗组织”(cosr21);%ΦR
rad2r21 = rad2deg(一下r21);%ラジアンを度に変換する
如果abs (rad2r21) >视场
cosr21 = 10 e-6;
结束
h21 = ((cost21 ^ m) * cosr21) /(权力(H2, 2));
H3 =√(wx / 2 x ^ 2 + (wy-y) ^ 2 + (H-z) ^ 2);
cost31 = (H-z) / H3;%因为(ΦT)
t31 =这些“可信赖医疗组织”(cost31);%ΦT
rad2t31 = rad2deg (t31);
R11 * cosr31 = ((wx / 2 x) + R12 * (wy-y) + R13 * (H-z)) / H3;%因为(ΦR)
r31 =这些“可信赖医疗组织”(cosr31);%ΦR
rad2r31 = rad2deg (r31);%ラジアンを度に変換する
如果abs (rad2r31) >视场
cosr31 = 10 e-6;
结束
h31 = ((cost31 ^ m) * cosr31) /(权力(H3, 2));
H4 =√x ^ 2 +(王寅/ 2 y) ^ 2 + (H-z) ^ 2);
cost41 = (H-z) / H4;%因为(ΦT)
t41 =这些“可信赖医疗组织”(cost41);%ΦT
rad2t41 = rad2deg (t41);
R11 * cosr41 = ((- x) + R12 *(王寅/ 2 y) + R13 * (H-z)) / H4;%因为(ΦR)
r41 =这些“可信赖医疗组织”(cosr41);%ΦR
rad2r41 = rad2deg (r41);%ラジアンを度に変換する
如果abs (rad2r41) >视场
cosr41 = 10 e-6;
结束
h41 = ((cost41 ^ m) * cosr41) /(权力(H4, 2));
H15 = (1 / (H ^ 2));
COST21 = H /√(wx / 2) ^ 2 +(王寅/ 2)^ 2 + H ^ 2);
COSR25 = 10 e-6;
H25 = ((COST21) ^ m * COSR25) / (((wx / 2) ^ 2 +(王寅/ 2)^ 2 + H ^ 2));
COST31 = H /√(王寅H ^ ^ 2 + 2);
COSR35 = 10 e-6;
H35 = ((COST31) ^ m * COSR35) /(王寅H ^ ^ 2 + 2);
H45 = H25;
H5 = (H15 + H25 + H35 + H45) ^ 2;
H111 = h11 + h21 + h31 + h41;
SNRMRC5 = 10 * log10 (H111 ^ 2) / H5);
如果SNRMRC5 < = minMRC5
minMRC5 = SNRMRC5;
结束
j = + 1;
结束
结束
结束
结束
M5 (i) = minMRC5;
我=我+ 1;
结束
情节(M5,三次采油“颜色”(0.1010, 0.7, 0.933),“线宽”, 2.5);

接受的答案

水木
水木 2018年8月13日
今回の場合,ループがたくさんあるのでおそらくそこに時間がかかっていると考えられます。実際にどの行が改善できそうなのか,まずはプロファイラを使って時間のかかっている箇所を探してみてください。プロファイラは
> >概要文件查看器
で起動,あるいはエディタタブの”実行および時間の計測”を実行して起動します。
これにより,各行の評価回数と,かかっている時間のレポートが生成されます。数分レベルで時間がかかるものであれば,まずはループの回数を小さくして試してみてください。
ループの中で一つ一つ計算しているところはベクトル化(行列化)すると高速化できそうです。ベクトル化についてはこちらのビデオをご覧ください。

更多的答案(2)

汪东城
汪东城 2018年8月14日
推測ですが, 0 で事前割り当てをしてますが,大きさ0の変数を割り当ててますので効果が見れないのかもしれません。
三次采油= 0 (0,91);
ではなく
三次采油= 0 (91);
のように変更してみてください。
3评论
N/A
N/A 2018年8月18日
了解しました。

登录评论。


Atsushi松本
Atsushi松本 2018年8月17日
5重のFor循环があって,それぞれ結構大きなループ回数なのでかなりの計算時間がかかりますね。今天早上
ループ回数を減らすようにステップサイズを大きく取るわけには行きませんか吗?
例えばsitay = 0:π/ 90:π/ 2といったように。
今天早上
また,ループをベクター化すると速くなるかもしれません。
1评论
N/A
N/A 2018年8月18日
正確な理論検討をしたいので,スッテプサイズは細かく取らなければならないのですよ。

登录评论。

s manbetx 845


释放

R2017a

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!