wanglu 发表于 2010-9-6 20:09:04

帮忙用matlab测试一段关于矩阵运算的程序

算法如下:

k=zeros(5,5), //生成5×5全0矩阵

循环计算以下程序段100000次:
{
    a=rand(5,7), b=rand(7,5), //生成5×7矩阵a,7×5矩阵b,用0~1之间的随机数初始化
    k=k+a*b+a(1,5:2,6)*b(2,6:1,5)-a(:7)*b(3:)
}

输出矩阵k

输出程序运行时间。

谢谢大家!

wanglu 发表于 2010-9-6 20:16:07

补充:请说出您的matlab版本及机器配置。谢谢!

lin2009 发表于 2010-9-6 20:25:44

本帖最后由 lin2009 于 2010-9-6 20:38 编辑

a(1,5:2,6)*b(2,6:1,5)-a(:7)*b(3:)

你的程序有误,不知道要表示什么意思?
另外,矩阵输出是指屏幕输出,还是指文件输出?

k =
1.0e+005 *
    2.7455    2.7501    2.7431    2.7505    2.7492
    2.7484    2.7533    2.7471    2.7510    2.7484
    2.7466    2.7499    2.7471    2.7506    2.7498
    2.7492    2.7516    2.7493    2.7540    2.7492
    2.7492    2.7521    2.7490    2.7542    2.7499
Elapsed time is 3.657950 seconds.
(Celeron(R) CPU 2.66G   760MB)
-------------------------------------------------------------------------------------
MATLAB Version 7.9.0.529 (R2009b)
Operating System: Microsoft Windows XP Version 5.1 (Build 2600: Service Pack 3)
Java VM Version: Java 1.6.0_12-b04 with Sun Microsystems Inc. Java HotSpot(TM) Client VM mixed mode
-------------------------------------------------------------------------------------

参考程序如下:

clear all
clc
tic
k = zeros(5,5); % //生成5×5全0矩阵
% 循环计算以下程序段100000次:
for m = 1:100000
    a = rand(5,7);
    b = rand(7,5);%//生成5×7矩阵a,7×5矩阵b,用0~1之间的随机数初始化
    k = k + a * b + a(1:5, 2:6) * b(2:6, 1:5) - a(:, 7) * b(3, :);
end
k
toc

wanglu 发表于 2010-9-6 20:38:20

本帖最后由 wanglu 于 2010-9-6 20:39 编辑

a(1,5:2,6)是取矩阵a的第1~5行、2~6列组成矩阵,是个5×5矩阵
b(2,6:1,5)是取矩阵b的第2~6行、1~5列组成矩阵,是个5×5矩阵
a(:7)取矩阵a的第7列向量
b(3:)取矩阵b的第3行向量
a(:7)*b(3:)是个5×5矩阵

输出矩阵k的结果及运行时间即可。

wanglu 发表于 2010-9-6 21:12:55

本帖最后由 wanglu 于 2010-9-21 21:17 编辑

谢谢lin2009!

刚刚写的Forcal的矩阵算法,看来Forcal的效率与matlab相差不大?

!using["math","sys"];
mvar:
t0=clock(),
k=zeros(5,5),
i=0,(i<100000).while{
oo{
    a=rand(5,7), b=rand(7,5),
    oset
},
i++
},
k.outm().delete(),
/1000;结果:

         274988         274910         274971         275032         275002
         274860         274941         274941         274998         274847
         274968         274971         274994         274961         274955
         274901         274959         275006         274962         274950
         275012         274957         275010         275012         274999
耗时3.922秒。

我的电脑:Intel Core 2 Duo T5500 1.66G 1G内存。windows xp系统。
页: [1]
查看完整版本: 帮忙用matlab测试一段关于矩阵运算的程序