抖音资讯

douyinzx

matlab内存不足的解决方法(matlab内存分配错误)

iseeyu2年前 (2024-04-30)抖音资讯134

MATLAB的内存管理是自动完成的,但内存使用不当会造成程序运行效率低下。许多初学者抱怨MATLAB程序慢(效率低),主要原因可能是不了解MATLAB的内存自动管理机制造成的。

MATLAB是以数组(Array)为基本数据单元的一门语言,程序中的一切数据都是数组。MATLAB用连续的内存来存储数值型数组,当数组大小发生变化时会重新分配一块合适的内存,把数据复制过去并回收原来的内存。如果数组是在程序运行过程中逐渐“长大”的,MATLAB会反复分配和回收内存,严重影响程序的运行效率。为了避免这种情况,可以用zeros函数预先为数组分配合适的内存,然后再对其进行赋值。

另外,MATLAB数组在内存中是按“列优先”的顺序存放数组中的元素的。对于多维数组,是按从低到高的维度顺序依次存储数组中的元素的,如下图所示

 

图中红色的序号即为数组在内存中的存储顺序。在程序中对数组进行索引或赋值时,如果能够按照这种顺序来存储,一方面可以利用计算机的缓存机制,另一方面可以避免程序在内存中的不断跳转,从而可以显著地提高程序的运行效率。如果通过多重循环来存取数据,遵照此原则,最内层循环应该遍历最低维(列),从内向外,依次向高维过渡。

下面的程序可以比较预分配内存和索引顺序对程序运行时间的影响:

%  数组索引效率比较
clear
preAllocate = 'on'; %设为off关闭预分配内存
r = 10000;c = 10000;
tic
if isequal(preAllocate,'on')
    A = zeros(r,c); %预分配内存
else
    preAllocate = 'off';
end
for m=1:r %行优先
    for n=1:c
        A(m,n) = m+n;
    end
end
fprintf('行优先,预分配内存 %s, 耗时 \t%f\n',upper(preAllocate),toc)

tic
if isequal(preAllocate,'on')
    B = zeros(r,c); %预分配内存
end
for n=1:c %列优先
    for m=1:r
        B(m,n) = m+n;
    end
end
fprintf('列优先,预分配内存 %s, 耗时 \t%f\n',upper(preAllocate),toc)

看一下不同情况下的耗时对比

行优先,预分配内存 OFF, 耗时  407.735436
列优先,预分配内存 OFF, 耗时  1.346732
行优先,预分配内存 ON,  耗时  1.149516
列优先,预分配内存 ON,  耗时  0.412534

可以看出,内存使用不当可以造成近千倍的效率差别。是因为MATLAB慢吗?

一言以蔽之,为数组预分配内存并遵循“列优先”的原则使用数组中的数据,是提高MATLAB效率的有效途径。

 


几点说明:

  1. 不同类型的数组在内存中的存储方式也不尽相同,单一数据类型的数组,如数值型数组和字符型数组,在内存中是连续存储的。而容器型数据的底层单元则可以分开存储,例如,结构数组一般每个域用连续的内存存储,不同的域则可以存在不同的位置。这是容器型数据的优势,局部改动不会影响其他部分。
  2. 稀疏矩阵仅保存非零元素及其下标。
  3. 不同类型的数组预分配内存的方式也不一样。例如数值型数组一般用zeros函数;字符串型数组用strings函数;元胞数组用cell函数;表则用table函数。详情可在命令行doc preallocation。

扫描二维码推送至手机访问。

版权声明:本文由西安泽虎代运营发布,如需转载请注明出处。

转载请注明出处https://www.0291.com.cn/post/47976.html

相关文章

360推广开户流程步骤?申请360推广需要准备什么材料?

360推广开户流程步骤?申请360推广需要准备什么材料?

360推广开户流程步骤 1、注册360推广账户。 2、等待360工作人员联系,然后登陆360推广管理系统,提交相关资质证明,签订服务合同,缴纳推广费用。 3、添加关键词。请在360推广用户管理系统中添加关键词,撰写网页标题及描述等信息,开始推广。 360在收到合同、资质证明和相关...

Google广告投放:五大移动营销策略

Google广告投放:五大移动营销策略

Google搜索引擎后台统计,半数以上用户在使用搜索时为为移动搜索,而对于许多谷歌广告客户而言,其大部分流量来自使用手机的用户。但是您的客户并非只是用手机来搜索您的网站。Google移动广告能够吸引用户致电、下载应用、访问移动网站及通过其他方式实现转化。下面提供的资源涉及创建移动网站和统计点击通话等...

抖音里突然多了抖音商城(抖音商城官网入口)

抖音里突然多了抖音商城(抖音商城官网入口)

据报道称,抖音近期有测试了新的商城入口,该入口调整后,位于App首页底部导航栏内,取代了以前的“朋友”,而原先的“朋友”则调整为一个频道,放置于首页上方。   新入口内的商城在设计上并没有发生变化,只是入口位置变了。用户通过这个入口,可以更快捷地购物。而不用再点击“我...

抖音文字编辑怎么调大小字体(抖音视频编辑文字大小)

抖音文字编辑怎么调大小字体(抖音视频编辑文字大小)

抖音字体大小设置方法?抖音短视频app是现在很多人会喜欢使用的一款手机视频软件,简直让你爱不释手了,那么大家知道抖音字体大小设置方法是什么吗?相信还有很多用户还不是很清楚吗,下面就快和小编一起看看吧! 抖音字体大小设置方法 1、其实抖音是不能直接设置字体大小的哦,我们可以...

音频视频合并软件手机(合并视频的软件白推荐)

音频视频合并软件手机(合并视频的软件白推荐)

合并视频和音频,就是用音频给视频配音或者在视频中插入音频嘛,这个不难,一般的剪辑软件或者视频处理软件都可以做到。 根据我的使用习惯给大家分享一些。 1.PR 这应该不用我详细说了,剪辑视频还能没用过PR嘛,用它来做视频、音频合并当然没问题了! 在PR剪辑视频时,双击项目面板,导入...

腾讯广告案例分析!腾讯广告应该怎么做?

腾讯广告案例分析!腾讯广告应该怎么做?

前几期我们讲到了腾讯广告账户的一些操作策略,以及遇到各种消耗转化情况时应该解决的因素和策略,眼过千遍不如手过一遍,那么本期我们就来带大家一起看实操账户和一些具体案例分析吧! 先来看看直营电商行业的案例,计划投放效果,下单成本低于预期5%,单条广告日均300+下单量。案例分析第一步,先来看看广告主基...

现在,非常期待与您的又一次邂逅

我们努力让每一部企业宣传片和抖音短视频成为商业大片