加速你的MATLAB開發(1): 自動生成MATLAB代碼
%%前言
博主決定挖一個新坑,簡單介紹如何加快MATLAB的開發和運行速度。這一類文章將涉及使用Profiler檢測性能瓶頸,自動代碼生成(MATLAB/C/C++), 使用Parallel Computing Toolbox讓你的代碼並行化或是跑在GPU上,甚至是雲端,以及個人經常使用的一些加速技巧。
開篇我們先來分享下很多人容易忽略的一個技巧,就是利用MATLAB中很多App自帶的代碼生成功能來加快開發速度。
%%正題
我問我們的俄羅斯實習生myc,寫C/C++和Java的時候最痛苦的是什麼?
讀寫文件
作為沒有受過CS專業訓練的工科生,我感同身受。下面是我每次需要寫FILE I/O時的流程圖
1. Google File I/O C++
2. 打開第一個搜索結果Input/output with files
3. 複製代碼,修改,編譯,運行
4. 發現自己的文件數據格式和教程裡面的不一樣
5. 再次Google,找有類似數據的教程
我又問myc, MATLAB裡面讀寫文件不也是類似的情況嗎?myc說,
nyet nyet nyet
我讀寫數據全靠滑鼠點
為了給我演示他的工作流程,myc從這裡下載了Uber 14年7月在紐約的所有接車記錄,一共796121行數據,格式如下
1. 點擊Import Data
2. 載入數據文件
3. 選取合適的數據結構%%結語
MATLAB的很多App都會自帶生成MATLAB代碼的功能,比如
這裡
這裡甚至這裡看看生成的代碼和我們自己寫的有啥區別?
自己寫的
>>surf(peaks)n>>shading interpn
自動生成的
function createfigure(zdata1)n%CREATEFIGURE(ZDATA1)n% ZDATA1: surface zdatann% Auto-generated by MATLAB on 05-Apr-2016 10:03:24nn% Create figurenfigure1 = figure;nn% Create axesnaxes1 = axes(Parent,figure1);nhold(axes1,on);nn% Create surfnsurf(zdata1,Parent,axes1,FaceColor,interp,EdgeColor,none);nnview(axes1,[-37.5 30]);ngrid(axes1,on);n
可以看到自動生成的代碼是很具有普遍性的。
善用MATLAB代碼自動生成的功能可以加快雛形的開發,我們在開發演算法的過程中很容易忽略自己的開發效率。如果花1小時敲鍵盤,反覆試錯的時間可以轉換為幾次滑鼠點擊就能解決的任務,公司也就不會需要實習生了
myc: ???????
推薦閱讀:
※機器學習筆記6 —— Matlab編程基礎
※漫談Simulink: 隱式和顯式的Solver
※MATLAB神經網路(六):GRNN
TAG:MATLAB | performance |