查看单个帖子
旧 2008-07-23, 08:37   #6
remnant
普通会员
 
注册日期: 2008-04-12
年龄: 46
帖子: 67
声望力: 19
remnant 正向着好的方向发展
默认

引用:
作者: 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,要简洁高效。
remnant 当前离线   回复时引用此帖