TA的每日心情 | 开心 2022-1-21 15:08 |
|---|
签到天数: 1 天 [LV.1]初来乍到
|
你的矩阵每层都对称,利用对称性,哪怕全写循环嵌套,也可以省大约一半的计算量。
5 R& t' {6 _" l' Cfor t = 1 : S$ U2 F0 C( E3 t5 k- ^. ]5 r p
for m = 1 : K6 g1 W& I5 B$ t
for n = m : K& Q1 X5 C+ ^# }7 ?. l. C& d3 o
E2( m, n, t ) = ( sum( G( 1 : K, m, t ) ) + sum( G( 1 : K, n, t ) ) ) * K;$ ^: X! \$ V; e# j
E2( n, m, t ) = E2( m, n, t ); % 对称性+ u3 P0 X, t r/ L5 Q
end
$ I! f5 t- p" ]5 x/ t8 r4 ^ end" R8 z9 l* G) I6 E( _
end
$ `8 Z& |! x$ d$ y- T当然更简单的方法是根据规律直接计算每层
) P/ T- C$ J' k0 Tfor t = 1 : S
( j, O+ ]" i* e6 j9 s* u3 D M = sum( G( :, :, t ) ).' * K * ones( 1, K );) N& n8 \$ q; |
E3( :, :, t ) = M.' + M;) y7 g: _% s% k. W+ Z
end
# N) T% J7 f1 r3 w) b在K = 50; S = 20; 时3 u6 ~4 d" x6 |, T$ k: Z% |
原始计算方法历时 1.852707 秒。
A ^5 D) D6 z利用对称性计算,历时 0.274421 秒。
0 u3 b6 ~6 `5 c" q/ I利用规律逐层就散,历时 0.005905 秒。 |
|