matlab思考,关于Matlab编程的思考(待续)

Matlab编程的规范化思考

1.并行化

2.释放内存

3.需要调参的变量太多,可考虑将变量都放到一个结构体里面。

4.find(y),就是要找到y中那些非零项的指引

5.代码运行出现问题的时候,在命令行输入why就可以得到答案

6.输入bench可以给电脑跑分。

7.home 将光标移至命令窗口的左上角

8.查看matlab命令历史记录可找history.m,

prefdir

cd prefdir

%%%%%%%%%%%%%%%%%%%%%

%%%%方法2

history = com.mathworks.mlservices.MLCommandHistoryServices.getSessionHistory;

historyText = char(history);

9,clear all 与 clear的区别

clear all,清除所有的变量,包括全局变量 global。

若是串行的程序,主函数main分别调用子函数 1,2,……,n,

那么任何一个子程序中都不要clear all,因为,主程序在调用子程序之前,应该有了变量定义和赋值,子程序一clear all,那些值就没有了。

若只有一个main函数,分别要做几个运算,一般应该互相独立的,完成一个运算后,clear all;清除所有变量,然后进入下一个运算,变量名也可以重复使用,免得不小心用到前面定义过的变量出问题。

这就说明在定义子函数的时候,不要忘记使用clear all

clear,清除不了全局变量,只能清除普通变量。

10.rng default

恢复matlab启动时默认的全局随机流。在matlab启动时,会用一个默认的随机数生成器产生很多从0到1之间的伪随机数,即全局随机流,任何分布的随机数组都是该全局随机流中的数据。

11.关于双图标题

figure;

imshow(uint8([t1,t2]));

title([‘余弦值为:’,num2str(cos1),’ ‘,’余弦夹角为:’,num2str(v),’°’]);

12.一定要测试运行时间,便于优化代码

13.如何删除workspace中除某个变量之外的所有变量。

who %目前的變量

Your variables are:

a b c

K>> clear -regexp [^a]

K>> who %目前的變量

Your variables are:

a

第二种方法 clearvars -except a

14 添加当前文件夹及其子文件到路径

currentfold = pwd;

addpath(genpath(currentfold))

15 新建带有时间标志的文件夹来储存文件

savetime = fix(clock);

savetimestr = num2str(savetime);

savetimestr(isspace(savetimestr)) = []; %去除所有空格

selectedimagefullname = ['10foldHandCraft' savetimestr];

% 判断是否存在文件夹

if exist(selectedimagefullname,'dir') == 0

mkdir (selectedimagefullname)

else

cd selectedimagefullname

delete *

cd ..

end

%储存文件

save(['.\' selectedimagefullname '\train.mat'],'FTtrain'); save(['.\' selectedimagefullname '\test.mat'],'FTtest'); copyfile('Data*.mat',['.\' selectedimagefullname] ) delete Data*.mat

16.如何查看内存使用情况

feature('memstats')

17.matlab安装新工具包

matlabroot % 进入matlab安装根目录

winopen(ans) % 打开matlab安装根目录

将mathmodl工具箱复制到toolbox中

addpath(genpath('Your_ToolBox_Full_Path'))%注意必须是文件夹路径

savepath

或者界面方式

pathtool

点击添加目录及子目录为路径,并保存

重启matlab

或者 rehash toolbox

18 mex

mex.getCompilerConfigurations('c','selected')

查看mex编辑器选择的语言

19内存预分配可提高matlab运行速度

未进行内存预分配

y = 0;

tic;

for i=2:100000;

y(i+1) = y(i)+ randn;

end;

toc

时间已过 0.031222 秒。

进行内存预分配

y = zeros(100001,1);

tic;

for i=2:100000;

y(i+1) = y(i)+ randn;

end;

toc

时间已过 0.007672 秒。

节约时间=(0.031222-0.007672 )/ 0.031222 =75%

进行矩阵计算

y = zeros(100001,1);

tic;

y= cumsum([0;y]);

toc

时间已过 0.000445秒。

节约时间=(0.031222-0.000445 )/ 0.031222 =98.6%

20分析matlab程序的主要效率

在需要分析效率的程序段前后加入

profile on

profile off

然后,在common line中输入profile viewer即可观察到这段程序的效率

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值