MATLAB使用时峰值信噪比 matlab内存总计使用内存有什么联系么?

查看: 6139|回复: 16
matlab计算,cpu物理核心的使用问题?
本帖最后由 transilire 于
12:22 编辑
最近在做一些简单的matlab计算问题,一般一两个小时就可以算完。
看了一些cpu的使用率,有时候,只有50%多,并且还是一个核心(电脑是双核的)。
2个核心同时用,有并行计算的问题。 但一个核心满载不就会快点嘛? 不太明白,请教达人。
PS:在另外一个帖子里看到 i5 四核 比 i3 双核 在“计算”方面强很多,
& && & 这个“计算”指什么?&&蛋白质折叠之类的??
& && & 或者说 ,(除游戏之外)那些情况下 四核 对 双核 有较多的优势?
我用Gaussian09,四核用的时间不到单核的一半
因为你的代码没有写成能并行执行的
在科学计算领域,如何充分应用多核心是个老大难问题。比如生物信息技术当中的高通量计算,因为不仅仅涉及编程等技术,更涉及很多数学计算方法、公式什么的如何变化成支持多核心的形式。
大多数科学计算软件的用户数量都很小,往往都是专业用户。远不如极品飞车的用户多。所以科学计算软件对民用多核cpu的支持远不如极品飞车。
现在的多核、低主频CPU(比如i7-2600之类)更适合玩流行有戏,因为这些游戏在全球有数千万甚至可能上亿的用户,所以游戏厂商不停的优化有戏对新型多核cpu的支持。
如果是科学计算,要么直接购买NV等专业的高通量计算机,要么使用核心少,但是主频超高的民用CPU。
曾经试过用SPSS进行迭代,2600四核全开还不如两个核心进行睿频的性能。
matlab没更新吧
科学计算充分使用多核和神马“数学计算方法、公式什么的如何变化成支持多核心的形式”没关系,关键是程序的编译器支持双核就行了
tedaz 发表于
在科学计算领域,如何充分应用多核心是个老大难问题。比如生物信息技术当中的高通量计算,因为不仅仅涉及编 ...
非常感谢tedaz 用心的回答!
easybeing 发表于
matlab没更新吧
科学计算充分使用多核和神马“数学计算方法、公式什么的如何变化成支持多核心的形式”没关 ...
我用得是&&matlab R2010b,软件内部已经有一定的并行计算了, 如一些矩阵的计算,迭代。
自己愚见,利用多核进行科学计算应该和数学有点关系,因为在计算过程中,算法是关键,
好的算法或支持并行的算法都需要用数学来说明,计算的结果确实是我们期望的,符合实际的。
easybeing 发表于
matlab没更新吧
科学计算充分使用多核和神马“数学计算方法、公式什么的如何变化成支持多核心的形式”没关 ...
操作系统、编译器支持多核是最起码的要求;除此之外,最关键的还是算法、代码支持多核。
举几个简单例子:计算一万亿位圆周率π值,对一万亿位的数进行质因数分解……
目前的民用操作系统(如Win7 64位),编译器(Visual Studio 2010)都是完美支持n核的。
但是非常遗憾的就是圆周率计算、分解质因数等算法、代码则没有特别好的支持民用多核。
虽然在数学科研领域这些已经有大型机多核算法和代码了,但是因为民用方面没什么需求,所以现在能够弄到的民用数学软件大多只能用单线程来完成这些计算。
transilire 发表于
我用得是&&matlab R2010b,软件内部已经有一定的并行计算了, 如一些矩阵的计算,迭代。
自己愚见,利用 ...
无论你用什么算法,计算机是不懂的,他懂得就是,x86orx86-64&&mmx 等指令集,你什么算法到最后都是这些指令集中的一个一个指令,之所以不能充分利用多核问题出在编译的过程
matlab有专门命令开启多核运算的 详查manual
你运行这些代码:
a = rand();
b = rand();
运行的同时打开任务管理器,看看CPU是不是满负荷。
单纯的并行计算,nv低端显卡完爆i7,参见CUDA
你们在说神马?
matlab的并行计算的前提是你的code要写成多线程的形式,最简单的例子就是for和parfor。但是实际应用里不是什么code都能完美分成多线程的格式的,如果你有一个非线性的大型系统,特别是应用很多积分/微分/延迟的系统,很难优化到理想的形式。
另外N家的专业计算型的gpu在浮点运算能力上确实秒所有cpu一条街,比如telsa
本帖最后由 counter03 于
00:32 编辑
代码贴上来看看吧?matlabpool开了没?
我X,居然是坟……
你的代码不写mpi是不能并行的
提示: 作者被禁止或删除 内容自动屏蔽
)&上海网警网络110备案号:02
Powered by
All rights reserved.后使用快捷导航没有帐号?
查看: 8126|回复: 21
R软件/STATA/SPSS之间有什么联系和区别
注册会员, 积分 127, 距离下一级还需 73 积分
论坛徽章:1
在我的记忆里,R软件/STATA/SPSS是所听到的频率最多的三个数理统计分析工具了,但是他们之间有什么联系和区别呢,三个软件主要应用于什么行业呢,有木有高手可以解答下~
论坛徽章:8
三大统计软件:SAS、Stata与SPSS比较(转载)
很多人曾问及SAS,Stata 和SPSS之间的不同,它们之中哪个是最好的。可以想到,每个软件都有自己独特的风格,有自己的优缺点。本文对此做了概述,但并不是一个综合的比较。人们时常会对自己所使用的统计软件有特别的偏好,希望大多数人都能认同这是对这些软件真实而公允的一个对比分析。
  一般用法。SAS由于其功能强大而且可以编程,很受高级用户的欢迎。也正是基于此,它是最难掌握的软件之一。使用SAS时,你需要编写SAS程序来处理数据,进行分析。如果在一个程序中出现一个错误,找到并改正这个错误将是困难的。
  数据管理。在数据管理方面,SAS是非常强大的,能让你用任何可能的方式来处理你的数据。它包含SQL(结构化查询语言)过程,可以在SAS数据集中使用SQL查询。但是要学习并掌握SAS软件的数据管理需要很长的时间,在Stata或SPSS中,完成许多复杂数据管理工作所使用的命令要简单的多。然而,SAS可以同时处理多个数据文件,使这项工作变得容易。它可以处理的变量能够达到32,768个,以及你的硬盘空间所允许的最大数量的记录条数。
  统计分析。SAS能够进行大多数统计分析(回归分析,logistic回归,生存分析,方差分析,因子分析,多变量分析)。SAS的最优之处可能在于它的方差分析,混合模型分析和多变量分析,而它的劣势主要是有序和多元logistic回归(因为这些命令很难),以及稳健方法(它难以完成稳健回归和其他稳健方法)。尽管支持调查数据的分析,但与Stata比较仍然是相当有限的。
  绘图功能。在所有的统计软件中,SAS有最强大的绘图工具,由SAS/Graph模块提供。然而,SAS/Graph模块的学习也是非常专业而复杂,图形的制作主要使用程序语言。SAS 8虽然可以通过点击鼠标来交互式的绘图,但不象SPSS那样简单。
  总结。SAS适合高级用户使用。它的学习过程是艰苦的,最初的阶段会使人灰心丧气。然而它还是以强大的数据管理和同时处理大批数据文件的功能,得到高级用户的青睐。
  一般用法。Stata以其简单易懂和功能强大受到初学者和高级用户的普遍欢迎。使用时可以每次只输入一个命令(适合初学者),也可以通过一个Stata程序一次输入多个命令(适合高级用户)。这样的话,即使发生错误,也较容易找出并加以修改。
  数据管理。尽管Stata的数据管理能力没有SAS那么强大,它仍然有很多功能较强且简单的数据管理命令,能够让复杂的操作变得容易。Stata主要用于每次对一个数据文件进行操作,难以同时处理多个文件。随着Stata/SE的推出,现在一个Stata数据文件中的变量可以达到32,768,但是当一个数据文件超越计算机内存所允许的范围时,你可能无法分析它。
  统计分析。Stata也能够进行大多数统计分析(回归分析,logistic回归,生存分析,方差分析,因子分析,以及一些多变量分析)。Stata最大的优势可能在于回归分析(它包含易于使用的回归分析特征工具),logistic回归(附加有解释logistic回归结果的程序,易用于有序和多元logistic回归)。Stata也有一系列很好的稳健方法,包括稳健回归,稳健标准误的回归,以及其他包含稳健标准误估计的命令。此外,在调查数据分析领域,Stata有着明显优势,能提供回归分析,logistic回归,泊松回归,概率回归等的调查数据分析。它的不足之处在于方差分析和传统的多变量方法(多变量方差分析,判别分析等)。
  绘图功能。正如SPSS,Stata能提供一些命令或鼠标点击的交互界面来绘图。与SPSS不同的是它没有图形编辑器。在三种软件中,它的绘图命令的句法是最简单的,功能却最强大。图形质量也很好,可以达到出版的要求。另外,这些图形很好的发挥了补充统计分析的功能,例如,许多命令可以简化回归判别过程中散点图的制作。
  总结。Stata较好地实现了使用简便和功能强大两者的结合。尽管其简单易学,它在数据管理和许多前沿统计方法中的功能还是非常强大的。用户可以很容易的下载到别人已有的程序,也可以自己去编写,并使之与Stata紧密结合。
  一般用法。SPSS非常容易使用,故最为初学者所接受。它有一个可以点击的交互界面,能够使用下拉菜单来选择所需要执行的命令。它也有一个通过拷贝和粘贴的方法来学习其“句法”语言,但是这些句法通常非常复杂而且不是很直观。
  数据管理。SPSS有一个类似于Excel的界面友好的数据编辑器,可以用来输入和定义数据(缺失值,数值标签等等)。它不是功能很强的数据管理工具(尽管SPS 11版增加了一些增大数据文件的命令,其效果有限)。SPSS也主要用于对一个文件进行操作,难以胜任同时处理多个文件。它的数据文件有4096个变量,记录的数量则是由你的磁盘空间来限定。
  统计分析。SPSS也能够进行大多数统计分析(回归分析,logistic回归,生存分析,方差分析,因子分析,多变量分析)。它的优势在于方差分析(SPSS能完成多种特殊效应的检验)和多变量分析(多元方差分析,因子分析,判别分析等),SPSS11.5版还新增了混合模型分析的功能。其缺点是没有稳健方法(无法完成稳健回归或得到稳健标准误),缺乏调查数据分析(SPSS12版增加了完成部分过程的模块)。
  绘图功能。SPSS绘图的交互界面非常简单,一旦你绘出图形,你可以根据需要通过点击来修改。这种图形质量极佳,还能粘贴到其他文件中(Word 文档或Powerpoint等)。SPSS也有用于绘图的编程语句,但是无法产生交互界面作图的一些效果。这种语句比Stata语句难,但比SAS语句简单(功能稍逊)。
  总结。SPSS致力于简便易行(其口号是“真正统计,确实简单”),并且取得了成功。但是如果你是高级用户,随着时间推移你会对它丧失兴趣。SPSS是制图方面的强手,由于缺少稳健和调查的方法,处理前沿的统计过程是其弱项。
  总体评价
  每个软件都有其独到之处,也难免有其软肋所在。总的来说,SAS,Stata和SPSS是能够用于多种统计分析的一组工具。通过 Stat/Transfer可以在数秒或数分钟内实现不同数据文件的转换。因此,可以根据你所处理问题的性质来选择不同的软件。举例来说,如果你想通过混合模型来进行分析,你可以选择SAS;进行logistic回归则选择Stata;若是要进行方差分析,最佳的选择当然是SPSS。假如你经常从事统计分析,强烈建议您把上述软件收集到你的工具包以便于数据处理。
论坛徽章:8
R软件与stata、Splus和sas等的区别(zz)
R软件现在在国外很是流行,因为它是免费的,源代码是开放的,但是它的可操作性明显弱于目前比较流行的统计软件比如Splus和Sas等,好多人搞不清楚他们之间的差别,我现在想以生动的类比来从宏观上尝试去区分一下,希望对迷茫中的兄弟姐妹们有所帮助。
R和Splus的区别:绿色版和正版。大家都知道绿色版是免费的,而且可以根据需要插入一些个性化的功能,不用安装,但是操作起来有些麻烦;R软件是用S语言编写的,而且它的内核是Splus的,这一点可以从R软件的用户手册是从Splus修改而来的看出。Splus的操作界面很友好,菜单式管理,但是比较昂贵,就像正版软件一样。另外,R软件的可扩充性要大于Splus,因为它的源代码是开放的,每一个用户都可以写自己的程序,并和大家分享,也就是说每个人都是R软件的开发者,而后者的开发人员只有公司的员工。
R和stata的区别:火狐和傲游。火狐的源代码是开放的,傲游的应该不是。火狐的可扩充性要大于傲游。R软件的源代码是开放的,后者不是。虽然二者目前都是很多的packages,但是后者的数量要远小于前者。stata在国外也是很受欢迎的统计软件,但它不是免费的。当然stata也有它的优势,比如操作比R要简单,不用安装各种插件(packages),普及性也较好,容易上手。但是R软件的潜力是巨大的,就像火狐一样。
R和sas的区别:豪华的电动剃须刀和手动的简易剃须刀。二者都可以把胡子剃干净,但是花的成本不同,豪华的电动剃须刀不仅购置成本高,而且还要用电池或充电,就像sas不仅软件很昂贵,而且还要支付年费;而手动剃须刀价格很便宜,相对于豪华的电动剃须刀来说,可以认为是免费的,就像R软件一样,可以免费使用,而且功能也很强大。另外,每个人的习惯不同,不能说豪华的贵的就好,所以也不能说R逊色于sas,应该说各有特色。
论坛徽章:8
本帖最后由 zhlight 于
19:40 编辑
数据分析包的比较:R,Matlab,SciPy,Excel,SAS,SPSS,Stata
代码库支持,可视化
深入的学习曲线
金融,统计
优秀的矩阵计算,可视化
费用贵,不完全支持统计
容易,可视化操作
贵,过时的编程语言
商业,政府
简单的统计分析
和Stata很像,但是更加贵,而且差
1从表上可以看出主要是两大阵营:更加面向编程的解决方案,R,matlab和python;面向分析的解决方案,Excel,SAS,Stata和SPSS。2python“不成熟”:matplotlib,numpy和scipy都是独立的代码包,它们往往不在一起。3matlab语言是很弱的语言4matlab是最好的开发新的数学算法的工具,在机器学习方面非常流行。5SPSS和Stata是一个类型的6SPSS和Stata主要适合科学计算7SAS主要是一些比较早的从事数据相关工作的群体使用8R的内存限制可以通过mysql来处理,或者运用机器集群来运算处理9SAS在处理图形方面的能力有限10R具有很强的可视化能力11Excel拥有庞大的用户群
论坛徽章:2
zhlight 发表于
数据分析包的比较:R,Matlab,SciPy,Excel,SAS,SPSS,Stata 1从表上可以看出主 ...
别轻易说SAS过时了……
论坛徽章:8
寇强 发表于
别轻易说SAS过时了……
这仅仅是一家之言。
论坛徽章:8
对大数据的处理,确实需要技巧。
不过除了特殊的情况下,一般在统计计算和建模的时候用不到那么大的数据量。针对超大的数据集,往往限于计算一些汇总统计量,这个任务可以由数据库来做,效果会很好;并没有必要使用R\S来做直接做。当然,如果要直接在R中做,也可以自己编写(现在已经有这方面的pkgs了)程序,通过逐批方式来做(这也是所谓的借助硬盘来实现了,SAS就是这类)。
对于大多数复杂点的模型拟合,数据过大且无法通过逐批处理,SAS也是无能为力的——这些都是具体模型算法研究方面的问题了,和软件的架构无关了。此外,我对做常规模型使用超大量的数据集一直抱怀疑态度——统计上面的抽样等是否就没有必要用了。
程序质量的问问题,倒是仁者见仁智者见智。
SAS作为商业软件,需要对客户负责,保证千锤百炼,保证质量。可惜其底层的代码是看不到的,可以由其手册中描述的统计方法之类的来推测。
而R底层是C做的,用了科学计算领域最成熟的一系列算法(和MATLAB底层差不多,比MATLAB版本更新要快一些),不能说完全保障,至少代表了国际一流水平。至于R小组审核后的基础包和推荐包,质量是极高的,至少目前报告的一些bugs中罕有关于其思路或算法的——这些包的作者均为是最前沿的学者,对R的测试也不会差。至于其他很多领域的pkgs,被小组确认作为推荐或者核心的,质量也可靠。更加重要的是,你可以看到源代码,大家都可以来测试这些程序,这种机制对质量的保障起到了至关重要的作用。
运行速度的问题
常常听说SAS运行快之类的,其实那是当时和SPSS之类的比较而言的,在常规的建模方面把所有数据放到内存中的做法无疑是速度的保证。MATLAB和R的矩阵运算都是用的相同的库,除非你自己做特别的优化(估计可能性不太大,这些算法都是近几十年来智慧的结晶了),速度属于一个数量级的。有测试报告说R还会略微胜过MATLAB一筹,其实只要保障数量级相同,其他的细枝末节的问题没有必要太在意,关键是要熟悉这种语言的性能,养成好的编程思路。
用户习惯问题
以我自己为例,和数据分析相关的软件基本上我都使用过,甚至一些很专门的如network analysis方面的也用过。我的看法是找到你自己适合的工具,而不是开头就有一个成见。现在我基本上工作都是用R来做:不要钱、功能广泛。我认识的一些朋友中不少被认为是资深的做数据分析的人,基本上对R有好感;更多的是开始学这个了。
如果你是商业用户,比如我知道国内现在不少银行要自己做一些分析方面的系统,大部分都会打听下SAS。从我了解的几个项目来看,很少用到SAS建模方面的功能,多半就是做点汇总、报表了。其实这些东西用甲骨文的组建来做也是一样的,速度和可靠性不比SAS差。SAS在还有一个突出的有点,就是其功能流程上的完整性:它连数据库都是自己有的、做服务引擎也蛮好的,etc。而且SAS之类的是商业软件,相对来说商务上面的是要好说多了;如果用一开源的,领导的压力就来了。所以最终还是一个具体环境具体应对的问题。
我常常的观点是以学习工作中需要为导向,练习好一个主要的;但是千万不要轻视甚至无视其他工具的存在。比如你公司用SAS的,你也不妨了解下R\S;反之亦然。
对于学数理统计的,尤其是工作中要自己做模型和算法实现的,我就推荐用R\S或者MATLAB之类的先实现(事实上我常常开玩笑说,通常的工作不过是把R已有的pkgs中需要的部分依照自己要求组合一下而已,很多关键性工作已经有人帮着做了)。如果需要速度和性能方面的,就再写成C\Fortran,甚至是硬件实现。
对于金融、生物等方面的做统计工作的,我建议尽量把R\S作为最主要的工具之一,根据我的经验,这些快速发展的领域,需要一个灵活、强大、丰富的工具,而R比较好的符合了这个特征。
论坛徽章:2
zhlight 发表于
这仅仅是一家之言。
在处理大数据这个领域,TB级甚至PB级的数据,SAS的技术还是很霸道的
内存瓶颈对R的制约愈发明显了,下周抽时间在实验室搭hadoop集群,看看在hadoop上跑R的效果如何
论坛徽章:8
寇强 发表于
在处理大数据这个领域,TB级甚至PB级的数据,SAS的技术还是很霸道的
内存瓶颈对R的制约愈发明显了,下周 ...
是的,6月份做“WHO”数据集的作业时,提示:java.lang.OutOfMemoryError: Java heap space
到下周在论坛上反馈下测试结果给大家看看。
论坛徽章:8
R与stata、spss和sas的比较的英文文档
(77.69 KB, 下载次数: 24)
20:26 上传
点击文件名下载附件查看: 2971|回复: 5
【求助】matlab占用内存的问题
入门会员, 积分 0.3, 距离下一级还需 0.7 积分
技术分0 分
资产值1712 nb
阅读权限10
马上注册,享受更多功能
才可以下载或查看,没有帐号?
公司发的dell D620,双核T2300 1G的内存 装的中文版XP和matlab R2007.开机占用470m内存,
再开matlab内存占用增加到630m,如果开simulink(什么都不干)内存增加到682m。正常吗?
入门会员, 积分 0.1, 距离下一级还需 0.9 积分
技术分0 分
资产值656 nb
阅读权限10
XP 470m内存当然不正常了,我记得XP的时候把thinkpad的所有应用程序全装全开,还安装了无数大小软件也只有300多M开机内存,300多的时候就已经受不了开机速度了,你来个近500的,有点夸张啊。
现在U版VISTA开机也只有500左右的开机内存
初级会员, 积分 0.9, 距离下一级还需 3.1 积分
技术分0 分
资产值7866 nb
阅读权限20
matlab太占内存了,我以前装了一个7.1,打开以后,电脑就跟死机差不多。
入门会员, 积分 0.4, 距离下一级还需 0.6 积分
技术分0 分
资产值2753 nb
阅读权限10
正常,加内存
白金会员, 积分 38.3, 距离下一级还需 25.7 积分
技术分16 分
资产值217344 nb
阅读权限45
这种软件, 呵呵. 多少都正常.
初级会员, 积分 2.4, 距离下一级还需 1.6 积分
技术分0 分
资产值20732 nb
阅读权限20
正常MATLAB很吃RAM的,你那个是支持多核的版本,估计吃RAM吃得更多.
Powered by Discuz! X3.2
Comsenz Inc &MATLAB仿真在通信与电子工程中的应用_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
文档贡献者
评价文档:
&&¥1.00
喜欢此文档的还喜欢
MATLAB仿真在通信与电子工程中的应用
选​填​,​简​要​介​绍​文​档​的​主​要​内​容​,​方​便​文​档​被​更​多​人​浏​览​和​下​载​。
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
大小:6.18MB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢MATLAB中数据的大小与内存的关系 - yuzg86的专栏
- 博客频道 - CSDN.NET
3070人阅读
MATLAB中数据的大小与内存的关系
今天跑程序出现:out of memory 的情况,发现原来受限于内存,矩阵等数据的大小是有限制的的。
输入:memory 查看发现:
Maximum possible array:&&&&&&&&&&&&&& 5417 MB (5.680e+009 bytes) *
Memory available for all arrays:&&&&& 5417 MB (5.680e+009 bytes) *
Memory used by MATLAB:&&&&&&&&&&&&&&&& 643 MB (6.747e+008 bytes)
Physical Memory (RAM):&&&&&&&&&&&&&&& 4063 MB (4.261e+009 bytes)
*& Limited by System Memory (physical + swap file) available.
现在 zeros()的数据是存不了的!
是不是将虚拟内存更改一下能够解决这个问题呢?
试探性的修改了一下虚拟内存:
Maximum possible array:&&&&&&&&&&&&&& 6483 MB (6.798e+009 bytes) *
Memory available for all arrays:&&&&& 6483 MB (6.798e+009 bytes) *
Memory used by MATLAB:&&&&&&&&&&&&&&&& 483 MB (5.065e+008 bytes)
Physical Memory (RAM):&&&&&&&&&&&&&&& 4063 MB (4.261e+009 bytes)
*& Limited by System Memory (physical + swap file) available.
&& zeros();
??? Out of memory. Type HELP MEMORY for your options.
Maximum possible array:&&&&&&&&&&&&& 12564 MB (1.317e+010 bytes) *
Memory available for all arrays:&&&& 12564 MB (1.317e+010 bytes) *
Memory used by MATLAB:&&&&&&&&&&&&&&&& 479 MB (5.026e+008 bytes)
Physical Memory (RAM):&&&&&&&&&&&&&&& 4063 MB (4.261e+009 bytes)
*& Limited by System Memory (physical + swap file) available.
虚拟内存达到一定程度对系统的运行速度就有非常明显的影响了,系统速度变得非常慢!!!
有什么其他方法?
参考一下博友:
问题一:Matlab是如何存储矩阵的
&&&&Matlab中矩阵是以Block,也就是块的形式存储的。也就是说,当Matlab在为即将存储的矩阵划分块时,如果没有相应大小的连续内存,即使实际内存没有被完全使用,他还是会报告“Out of Memory”。
问题二:如何高效使用Memory
&&&&由于在使用的过程中,由于存储单元的不断的被分配和清除,内存会被分割成不连续的区域,这是很容易造成“Out of Memory”。
1.为矩阵变量预制内存而不是动态分配
&&&&动态分配的过程中,由于开始Matlab所用的Block随着矩阵的增大而连续的为此矩阵分配内存,但是由于Block的不连续性,很有可能最开始分配的Block不能满足存储的需要,Matlab只好移动此Block以找到更大的Block来存储,这样在移动的过程中不但占用了大量的时间,而且很有可能它找不到更大的块,导致Out of Memory。而当你为矩阵变量预制内存时,Matlab会在计算开始前一次性找到最合适的Block,此时就不用为变量连续的分配内存。
&&&&比较下面两个程序:
for k = 2:1000
x(k) = x(k-1) + 5;
x = zeros(1, 1000);
for k = 2:1000
x(k) = x(k-1) + 5;
&&&&显然,第二个更好!!!最好的方法是,在程序一开始就位所有大的矩阵变量预制存存储单元!!!
&&&&尽量早的分配大的矩阵变量
&&&&Matlab使用heap method。当在Matlab heap中没有足够的内存使用时,它会向系统请求内存。但是只要内存碎片可以存下当前的变量,Matlab会重新使用内存。
&&&&比如:
a = rand(1e6,1);
b = rand(1e6,1);
&&使用大约15.4 MB RAM
c = rand(2.1e6,1);使用近&# MB RAM:
a = rand(1e6,1);
b = rand(1e6,1);
c = rand(2.1e6,1);
&&&&使用32.4 MB RAM。因为Matlab不能使用a、b被clear的空间,因为它们均小于2.1 MB,而同时它们也很可能是不连续的。
&&&&最好的方法:
c = rand(2.1e6,1);
a = rand(1e6,1);
b = rand(1e6,1);
&&&&使用16.4 MB RAM
2.尽量避免产生大的瞬时变量,当它们不用的时候应该及时clear。
3.尽量的重复使用变量(跟不用的clear掉一个意思)
4.将矩阵转化成稀疏形式
&&&&如果矩阵中有大量的0,最好存储成稀疏形式。稀疏形式的矩阵使用内存更少,执行时间更短。
例如:的矩阵X,它2/3的元素为0,使用两种存储方法的比较:
Name&&&&&&&&&&X&&&&&&&&&&&&&&&&&&&Y
Size&&&&&&&&&&&&&&&&&
Bytes&&&&&&&8000000&&&&&&&&&&&&&4004000
Class&&&&double array&&&&&&double array (sparse)
5.使用pack命令
&&&&当内存被分为很多碎片以后,其实本身可能有很大的空间,只是没有作构的连续空间即大的Block而已。如果此时Out of Memory,此时使用pack命令可以很好的解决此问题。
6.如果可行的话,将一个大的矩阵划分为几个小的矩阵,这样每一次使用的内存减少。
7.增大内存
问题三: Increase the size of the swap file.
&&&&wap space的设置与使用的操作系统有关,具体的如下:
&&&&Information about swap space can be procured by typing pstat -s at the UNIX command prompt. For detailed information on changing swap space, ask your system administrator.
&&&&Swap space can be changed by using the mkswap and swapon commands. For more information on the above commands, type man followed by the command name at the Linux prompt.
3. Windows NT
&&&&Follow the steps shown here: Right-click the My Computer icon, and select Properties. Select the Performance tab and click the Change button to change the amount of virtual memory.
4.Windows 2000
&&&&右键“我的电脑”-&属性-&高级-&性能-&设置,从而改变其虚拟内存。
5. Windows XP
&&&&右键“我的电脑”-&属性-&高级-&性能-&设置,从而改变其虚拟内存。&&&%% 试了, 不行
问题四:尽量少时用系统资源(对于Windows)
&&&&Windows中字体、窗口等都是要占用系统资源的,所以在Matlab运行时尽量不要打开不用的窗口。
问题五:Reloading Variables on UNIX Systems
&&&&&&&&On UNIX systems, MATLAB does not return memory to the operating system even after variables have been cleared. This is due to the manner in which UNIX manages memory. UNIX does not accept memory back from a program until the program has terminated.
So, the amount of memory used in a MATLAB session is not returned to the operating system until you exit MATLAB.
To free up the memory used in your MATLAB session, save your workspace variables, exit MATLAB, and then load your variables back in.
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:73679次
排名:千里之外
转载:23篇
(1)(6)(6)(9)(3)

我要回帖

更多关于 matlab扩大内存的方法 的文章

 

随机推荐