引用:
作者: remnant
好,先上程序,边看边说。
%%
clear;
clc;
%%
t0 = cputime;
e0 = 8.85 * 10^(-12);
p0 = 4 * pi * 10^(-7);
c0 = 3 * 10^8;
a = 3 * 10^(-10);
na = sqr...
|
晕啊,忘记把调用的一个子程序放出来了,补上,2 x 2 x length 的3d矩阵相乘的子程序。
function [ prMat ] = Mat3dx( MatA, MatB )
%% 2 x 2 x m matrix multiplier
A11xB11 = MatA( 1, 1, : ) .* MatB( 1, 1, : );
A11xB12 = MatA( 1, 1, : ) .* MatB( 1, 2, : );
A12xB21 = MatA( 1, 2, : ) .* MatB( 2, 1, : );
A12xB22 = MatA( 1, 2, : ) .* MatB( 2, 2, : );
A21xB11 = MatA( 2, 1, : ) .* MatB( 1, 1, : );
A21xB12 = MatA( 2, 1, : ) .* MatB( 1, 2, : );
A22xB21 = MatA( 2, 2, : ) .* MatB( 2, 1, : );
A22xB22 = MatA( 2, 2, : ) .* MatB( 2, 2, : );
prMat( 1, 1, : ) = A11xB11 + A12xB21;
prMat( 1, 2, : ) = A11xB12 + A12xB22;
prMat( 2, 1, : ) = A21xB11 + A22xB21;
prMat( 2, 2, : ) = A21xB12 + A22xB22;
说的那么客气,搞的我都不好意思了。
共同进步吧。学无止境。
另外,如果你老是需要做类似上面这种大数据量的处理,建议装Linux然后安装Linux版的
Matlab,执行速度会再次改善。这是由于Linux系统的内存管理机制和windows的差异造成的。
还有,如非必要,尽量不要clear掉中间产生的过度变量,那样的话一旦程序结果出错,跟踪
debug起来比较麻烦。提高程序效率的关键还是算法和coding style,要简洁高效。