关于Matlab编程的思考(待续)
Matlab編程的規范化思考
1.并行化
2.釋放內存
3.需要調參的變量太多,可考慮將變量都放到一個結構體里面。
4.find(y),就是要找到y中那些非零項的指引
5.代碼運行出現問題的時候,在命令行輸入why就可以得到答案
6.輸入bench可以給電腦跑分。
7.home 將光標移至命令窗口的左上角
8.查看matlab命令歷史記錄可找history.m,
prefdircd 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 a14 添加當前文件夾及其子文件到路徑
currentfold = pwd; addpath(genpath(currentfold))15 新建帶有時間標志的文件夾來儲存文件
savetime = fix(clock); savetimestr = num2str(savetime); savetimestr(isspace(savetimestr)) = []; %去除所有空格 selectedimagefullname = ['10foldHandCraft' savetimestr]; % 判斷是否存在文件夾 if exist(selectedimagefullname,'dir') == 0mkdir (selectedimagefullname) elsecd selectedimagefullnamedelete *cd .. end %儲存文件 save(['.\' selectedimagefullname '\train.mat'],'FTtrain'); save(['.\' selectedimagefullname '\test.mat'],'FTtest'); copyfile('Data*.mat',['.\' selectedimagefullname] ) delete Data*.mat16.如何查看內存使用情況
feature('memstats')17.matlab安裝新工具包
matlabroot % 進入matlab安裝根目錄 winopen(ans) % 打開matlab安裝根目錄 將mathmodl工具箱復制到toolbox中 addpath(genpath('Your_ToolBox_Full_Path'))%注意必須是文件夾路徑 savepath或者界面方式 pathtool 點擊添加目錄及子目錄為路徑,并保存重啟matlab 或者 rehash toolbox18 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 onprofile off然后,在common line中輸入profile viewer即可觀察到這段程序的效率總結
以上是生活随笔為你收集整理的关于Matlab编程的思考(待续)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 逆水寒0906更新公告 版本更新公告
- 下一篇: 李宏毅机器学习课程-Transfer L