Matlab性能优化——利用cell预分配内存(内容有误,更正)
来源:互联网 发布:mac如何写入ntfs 编辑:程序博客网 时间:2024/05/16 17:14
做模式识别实验遇到的一个问题:每次循环生成的向量维数都是随机的,如何把生成的向量最后合并成一个,用sum=[sum d]合并效率极低,原因在于matlab在循环中动态扩充数组会不断分配新的内存空间,并把原来的所有数据复制过去。
function [output]=dashu(n)% 验证大数定理% n是模拟次数sum_d=[];for m=1:ns=randi([-100,100],1,2);a=min(s);b=max(s); while a==b s=randi([-100,100],1,2); a=min(s); b=max(s); endc=randi([1,1000],1);d=randi([a,b],1,c);sum_d=[sum_d d]endx=mean(sum_d);y=var(sum_d);output=[x y];hist(sum_d,20);
语法没问题,可是太耗时间,如果1000次要几十分钟,分析报告显示:sum_d=[sum_d d];耗费了96%的时间,后来改为用元胞数组
function [output]=dashu(n)% 验证大数定理% n是模拟次数sum_d{1,n}=[];for m=1:ns=randi([-100,100],1,2);a=min(s);b=max(s); while a==b s=randi([-100,100],1,2); a=min(s); b=max(s); endc=randi([1,1000],1);d=randi([a,b],1,c);sum_d{m}=d;endsumm=cell2mat(sum_d);x=mean(summ);y=var(summ);output=[x y];hist(summ,20);
今天发现那份原先代码运行慢的原因并非sum=[sum d]效率低,而是sum=[sum d] 表达式后面没加 分号,导致命令行窗口不断输出这个表达式的运算结果,导致很慢,加了分号后运行很快,甚至比用cell方案更快。
0 0
- Matlab性能优化——利用cell预分配内存(内容有误,更正)
- Matlab预分配内存优化for循环
- Matlab预分配内存
- tableView性能优化cell循环利用 && 自定义cell
- 程序性能优化之 内存分配影响
- matlab矩阵内存预分配
- tableView- 性能优化,cell的循环利用三种方式
- 性能优化—内存泄漏
- 性能优化——内存优化(1)
- 性能优化——内存优化(2)
- 性能优化——内存优化建议(RAM)
- Android性能优化——内存优化
- 性能优化——Android内存优化
- Android性能优化——内存优化
- Android性能优化——内存优化
- Android性能优化——内存优化
- 安卓性能优化—内存优化
- Lua性能优化—Lua内存优化
- 中国人愿为国而战 千万中国人很团结
- #leetcode#Reverse Bits
- 杭电 HDU 1032 The 3n + 1 problem
- 在DevExpress GridControl的一列中显示图片
- Opencv运动目标检测常用方法
- Matlab性能优化——利用cell预分配内存(内容有误,更正)
- Android提示信息的工具类
- Oracle RESETLOGS 和 NORESETLOGS 区别说明
- ADF4002,HMC704 配置
- SeaJs
- adnroid 选择对话框
- 写一个函数,将一个3*3的矩阵转置
- Android系统更新防互刷功能实现与分析
- 删除数据库中重复数据的几个方法