TA的每日心情 | 开心 2022-1-21 15:08 |
---|
签到天数: 1 天 [LV.1]初来乍到
|
你的矩阵每层都对称,利用对称性,哪怕全写循环嵌套,也可以省大约一半的计算量。. D* A7 ^$ o0 U* a
for t = 1 : S
1 U% C. T3 g' R for m = 1 : K
, F/ Y% ]# d7 U! U3 T for n = m : K# ~. l" i# F! y. x7 [% I9 y4 U/ n& m
E2( m, n, t ) = ( sum( G( 1 : K, m, t ) ) + sum( G( 1 : K, n, t ) ) ) * K;2 O& x* h4 C! q/ O7 f9 x4 a
E2( n, m, t ) = E2( m, n, t ); % 对称性6 z, i; K3 e" c" p6 V* t
end
9 F8 Y% a" ? z# N end7 i- d2 t# o& w% |: J; K& E" w
end [0 Q1 B% \4 t1 @4 y# t8 z" P
当然更简单的方法是根据规律直接计算每层/ v6 Y7 \" b" A* M1 v+ d
for t = 1 : S) X- N9 s. v, F6 p% a7 D
M = sum( G( :, :, t ) ).' * K * ones( 1, K );
& v: ~; N, b& D4 Z' g E3( :, :, t ) = M.' + M;
}8 o+ H! O* l4 c9 I# Kend
; o5 K. X" D, h) M8 h$ K在K = 50; S = 20; 时
: A7 Q5 N+ k3 X, d- H原始计算方法历时 1.852707 秒。
e- s' S; ~# C利用对称性计算,历时 0.274421 秒。
+ H. @* [* m/ j) r利用规律逐层就散,历时 0.005905 秒。 |
|