MATLAB 中有哪些命令,讓人相見恨晚?
(1)bsxfun
強大的、萬能的、不同維數的矩陣擴展混合運算,從此告別矩陣運算中的for循環,另matlab里所有以fun為后綴的命令都很好用,arrayfun,cellfun,structfun,等等
(2)@() 匿名函數
使用函數式編程,在編寫以數學公式為主的程序中比傳統編程方法好得多
(3)set(gca,...)等
所有與畫圖相關的命令都包含了千奇百怪的屬性和參數,非常實用,如著名的set(gca,...)
(4)$ $
畫圖中的標題、注釋等文字內容是可以直接使用latex格式的,只須在包含latex命令的部分前后用$框起來即可
(5)slice
高維切片,要在三維空間中表現三個以上變量的函數關系,必備此命令
(6)轉置但不共軛
b = a.'
(7)得到列向量
b = a(:)
相應的,得到行向量就是
b = a(:).'
(8)清除并更新所有class 的定義
clearclasses
當你修改了某些 class 的定義時,需要調用此命令——僅僅clear all 是不夠的。
(9)忽略某些返回參數
[~, idx] = max(a)
忽略最大值,只返回最大值的索引。
【注】這種語法是在Matlab 7.9 (2009b) 中引入的,在此之前的版本不支持這種用法。如果你使用早期版本,可以使用如下寫法:
[tmp,idx]=max(a);cleartmp
或者一句話搞定
[idx, idx] = max(a)
不過第二種寫法不見得每個人都會喜歡。
(10)去除長度為1 的維度(常用于3D 矩陣轉為2D)
b=squeeze(a)
Simulink 的 save to workspace 模塊經常得到一個 [m x 1x n] 的三維矩陣,直接使用非常不便。使用squeeze 后,會將其轉換為 [m xn] 的二維矩陣。(11)代碼運行耗時顯示
tic;some_code_to_run();toc
tic/toc 會在 Matlab 命令行中打印出兩條命令之間的代碼的運行耗時。更詳細的代碼效率分析,可以使用profile 命令。
(12)電腦跑分
bench
只能用于相同版本的 Matlab 下電腦之間的比較。
(13)記錄命令行命令
diaryon% Lots of my Matlab commands here.
diaryoff
使用 diary 好處是運行結果也會被記錄下來,并且以純文本方式存儲,方便編輯。更正式的報告,則推薦使用publish。
(14)反轉向量
b=fliplr(a) % For row-vector a.
b=flipud(a) % For column-vector a.
b=wrev(a) % For any vector a.
b=a(end:-1:1);% This is the implementation of function wrev.
(15)去除數據中的NaN
a(isnan(a)) = []
對于 inf 和 -inf,使用 isinf 命令。
來源: Matlab工作坊
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















