如何将matlab程序同时分配在两个CPU上运行,目的是减少运算时间

作者&投稿:戚咏 (若有异议请与网页底部的电邮联系)
matlab中同一个程序的cputime运行几次时间怎么会都不一样呢?我该怎么确定程序正真的cput~

那个程序你应该贴出来才知道为何无规律。
正常来说,每次结果应该都一样,除非你的数据源有rand或类似的存在。
还有,是clear all.不是clear.
=========================================
原来是这样的问题啊!
你真行,不过探求问题的真正原因也是研究精神。
这个cputime当然不可能是一样的啦!因为,你运行一个程序,如果这个程序在cache中,那么运行速度就会很快,如果你的程序是在内存中,那么这个速度就会相对比较慢。
你的上面程序相对较短,所以有变化,有时可能是几百倍,这也正常。但对于运算量比较大的程序(例如:30s的程序),相对来说变化不会很大。即可能是30.2s也可能是29.7s,但不会几百倍的差距。因此,短的运算程序一般计算时间没有意义,因为受OS调度策略影响,只有计算时间长的程序,获取运算时间才有意义。

原因分析如下:运行一个程序,如果这个程序在cache中,那么运行速度就会很快,如果你的程序是在内存中,那么这个速度就会相对比较慢。因此,短的运算程序一般计算时间没有意义,因为受OS调度策略影响,只有计算时间长的程序,获取运算时间才有意义。
Matlab中计算代码运行时间的方法:1. cputime函数
t1=cputime;
t2=cputime;
t=t2-t1
t1是在程序执行前保存当时的cpu时间,t2是在程序执行结束后再获取一个cpu时间,它们的差值就是程序的运行时间。
2. clock + etime
cputime函数方法虽然可行,但要注意单位不一定是秒,只是一个cpu运行时间单位。clock + etime的方法可以解决这个问题。
clock函数可以调用windows系统的时钟获取当前时刻,etime函数则可以计算两个时刻的差值。使用格式如下:
t1=clock;
……
t2=clock;
t=etime(t2,t1)
3.tic/toc方法。
使用格式如下:
tic-toc

如果是单机,多CPU,Matlab7.4 (2007a)以后的版本支持多线程运算,
在File -> Preferences -> General -> Multithreading里打开。Matlab会自行吧运算任务分配到各个CPU。效率不算很高,但还是很明显的,而且是最简单的方法。

如果需要多机协同运算,就要使用Parallel Computing Toolbox,比较复杂,我还不懂用,就帮不上忙了。

这个是属于并行计算。
另外还要看你的两个CPU是什么意思,是主CPU和协CPU,还是说它们是同等地位的呢?还是指两台机器

并行计算还是一个大热点问题。

是不是有这样功能的服务器会自动这样做呢?


MATLAB软件如何编程的
matlab 程序的文件代码是以.m文件的形式呈现的。将matlab代码编写进.m文件内然后运行即可。例子:建立一个 helloworld.m 文件内包括内容如下:fprintf('Hello World!');使用快捷键F5直接运行,然后可以在控制台下看到打印的:Hello World!

如何用matlab 求解高阶方程?
最后,通过MATLAB编程仿真实现了求解结果。 关键词:定态薛定谔方程求解 矩阵法 MATLAB仿真 薛定谔方程简介 1.1背景资料 薛定谔方程是由奥地利物理学家薛定谔提出的量子力学中的一个基本方程,是将物质波的概念和波动方程相结合建立的二阶偏微分方程,可描述微观粒子的运动,每个微观系统都有一个相应的薛定谔方程式,通过解方程...

在matlab中用ctrl+c或者ctrl+break暂停了正在运行的程序后能否让其继续...
(2)Tab——自动补全。在command窗口,输入一个命令的前几个字符,然后按tab键,会弹出以前面这几个字符开头的所有命令,找到你要的命令,回车,就可以自动完成;(3) Ctrl + C\/Break——在Matlab程序运行过程中,可能由于程序编写的失误,导致程序不停的运行,在命令窗口输入 “Ctrl+C”可以将运行...

matlab求方程数值解
fun=@(x,y)y.*log10(y)-x创建关于x,y的匿名函数 log10(x)由于Matlab中自然对数的符号是log(与我们数学上的不同),以10为底的对数符号是log10,同理有log2,但是没有log3等哦 vpa将得到的符号解转化为指定精度的小数,比如vpa('sqrt(2)',10)将sqrt(2)表示10位精度的小数 fzero是Matlab...

编写MATLAB程序。能够将x[n]以N = 8为周期进行周期延拓得到一个周期为...
哥哥可以告诉我个个语句的含义嘛我们刚学matlab,不怎么太明白,希望能拜哥哥为师,以后好努力学习!!! 追答 mod是求余,当你n去0,1,2,3,4,5,6,7求余后还是0,1,2,3,4,5,6,7。当n=8时求余后就是0,就是x(0)值,这就实现延拓了。>> N=24;M=8;n=0:N-1;x1=(0.8).^n;x2=[(n>=0)&(n...

MATLAB解方程
x和y都是向量,x>1若为真,当且仅当x的所有元素均为大于1的值。我猜你是想这样:将所有x,y大于等于1且小于等于5的元素都显示出来,如果是的话就如下编程 syms c d [c,d]=solve('1\/100*c^2*(100-(14*c-70+d)^2)=6\/5*(6*c^2-25)\/(29-8)','1\/100*c^2*((14*c-70+d...

这个matlab程序怎么编?(设计低通滤波器)
在设计一个IIR数字滤波器时,我们根据指标先写出模拟滤波器的公式,然后通过一定的变换,将模拟滤波器的公式转换成数字滤波器的公式。 4.IIR数字滤波器的相位特性不好控制,对相位要求较高时,需加相位校准网络。 在MATLAB下设计IIR滤波器可使用Butterworth函数设计出巴特沃斯滤波器,使用Cheby1函数设计出契比雪夫I型滤波器,...

用MATLAB编程,如何将三个变量在二维中表示出来,也就是等高线之类的。比...
x = linspace(-3, 3, 100); % 定义x y = linspace(-3, 3, 100); % 定义y [gridx, gridy] = meshgrid(x, y); % 生成x-y平面网格 以 z = x.*exp(-x.^2-y.^2)为例, 计算z 可以用z=x+y,但是画出来不好看,哈哈 z = gridx.*exp(-gridx.^2-gridy.^2);...

这个方程在matlab中怎么解
如果只是为了 求数值解的话 画图就可以了 用我这个:w=linspace(-2*pi,2*pi,10000);y=atan(((150.*cos(9.*w)-6.*cos(27.*w)).^2+(150.*sin(9.*w)-6.*sin(27.*w)).^2).^(1.\/2).*cos(w)+15.*(1.\/2.\/((150.*cos(9.*w)-6.*cos(27.*w)).^2+(150.*sin(...

matlab非线性方程组求解仿真
1、解方程 最近有多人问如何用matlab解方程组的问题,其实在matlab中解方程组还是很方便的,例如,对于代数方程组Ax=b(A为系数矩阵,非奇异)的求解,MATLAB中有两种方法:(1)x=inv(A)*b — 采用求逆运算解方程组;(2)x=A — 采用左除运算解方程组。例:x1+2x2=8 2x1+3x2=13 >>A=[1,...

开封市17026846666: 如何将matlab程序同时分配在两个CPU上运行,目的是减少运算时间 -
鄘些爱西: 如果是单机,多CPU,Matlab7.4 (2007a)以后的版本支持多线程运算,在File -> Preferences -> General -> Multithreading里打开.Matlab会自行吧运算任务分配到各个CPU.效率不算很高,但还是很明显的,而且是最简单的方法.如果需要多机协同运算,就要使用Parallel Computing Toolbox,比较复杂,我还不懂用,就帮不上忙了.

开封市17026846666: matlab在一个窗口怎么让两个程序同时运行 -
鄘些爱西: 目前没有这个功能,好像只能多开matlab窗口..

开封市17026846666: 怎么把一个MATLAB程序放在另一个循环里 -
鄘些爱西: 假设第一个程序的文件名叫ENTROPY.m,在第二个程序要调用这段程序的地方输入ENTROPY,就是类似调用M函数文件那样.出现相同的变量也没关系,MATLAB解释器把ENTROPY中的变量当成局部变量处理. 不论你把上一个程序放在下一个程序的任何地方都是一样的,因为两个程序是独立的,没有数据交换或共享,所以没有任何联系.如果希望共享数据,就要引入全局变量,用global定义.至于画图的问题,是由于没有新建图像文件,而MATLAB的机制是先将绘图区清空然后绘制新图像,所以如果要同时看到两张图像,应在绘图之前新建图像,如figure(n);其中n是表示图像文件的序号.

开封市17026846666: matlab主程序和子程序怎么放啊? 比如我的主程序是图1,子程序是图2和图3,是把程序都放一起吗还是怎样? -
鄘些爱西: 要把这三个程序保存为三个文件,放在同一个文件夹中.

开封市17026846666: matlab主程序和子程序怎么写到一块 -
鄘些爱西: 写在一起,必须都是function, 如果你的主程序是普通的m程序,不是function,而子程序是function,这两个程序是不能写在一起的举个例子: %主程序 a=1; b=2; c=addfun(a,b)% 子程序 function c=addfun(a,b) c=a+b; return以上是不能写在一个m文件里的. 但是function mainfun() clc a=1; b=2; c=addfun(a,b)% 子程序 function c=addfun(a,b) c=a+b; return这样子时可以的,可以直接运行.不过当程序运行结束后,你将无法查看主程序和子程序的变量的值.

开封市17026846666: 怎样使Matlab不同文件夹下的两个程序连续运行?
鄘些爱西: path(path,'D:\MATLAB7\work\A') p1 path(path,'D:\MATLAB7\work\B') p2 这样应该能行,你试试!祝好运!

开封市17026846666: 怎么把程序放到matlab中 -
鄘些爱西: 把程序放到matlab中有两种, 第一个 :是在命令窗口直接输入程序语句,之间用“;”隔开,可以输入一句回车一下,如果有分号,这句了执行不显示,若没有分号,执行显示; 第二个 :将程序写在一个m文件中,m文件有命令式和函数式的,前者完成程序输入后可以直接执行,后者还可以传入参数调用,就像c语言一样.多加练习,你就会啦.

开封市17026846666: 请问怎样使Matlab的两个程序连续运行呢?main程序怎么写啊? -
鄘些爱西: 可以在一个程序中调用另一个程序,如: test1.m function u=test1(a,b) a=test2(c,d); u=a+b; end test2.m function u=test2(x,y) u=x+y; end

开封市17026846666: matlab中主程序和子程序怎样安排,如果分开写用不用连接? -
鄘些爱西: 建立m文件写程序. 如果写function,调用需要参数. 如果直接把程序写到m文件里,就可以直接运行了.

开封市17026846666: MATLAB中连接两个程序的语句是什么 -
鄘些爱西: 新建一个.m文件,在里面写两条语句就行了,run('要运行的程序完整路径及文件名') %如:run('F:\matlab\work\a.m') run('要运行的程序完整路径及文件名') %如:run('F:\matlab\work\b.m') 其中a.m和b.m是你要运行的两个程序,若是多个,再按上面的写法加就可以.百度里学matlab的不多啊,推荐一个专业的matlab中文论坛,里面全都是用matlab做仿真的人,有问题可以去那里问,很好的一个论坛 http://www.ilovematlab.cn/?fromuid=190238

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网