MATLAB中內置了哪些函數是本科生常用的?

2021-02-20 方寸與遠方

首先,自我檢討:我把MATLAB用成了C++。(我剛剛自己編了一個求最大值的循環,突然發現MATLAB有max這個函數,我就有了深深的愧疚。)
我想請對這款軟體熟悉的人列舉一些本科生常用的函數和MATLAB中的名字。讓我少走一些彎路,真誠的感謝你。修改

舉報

 • 邀請回答

按投票排序按時間排序

14 個回答

11贊同反對,不會顯示你的姓名

白如冰 ,四月到?月在東南大學無線谷

11 人贊同

我剛試了下就試出來max,min,plot,inv,det,zeros等這幾個算是built-in function。

其實MATLAB下更多的函數都是MATLAB自己的語言編寫的,不信你在命令行裡打個open unique,open fit, open nlinfit, open polyfit看看。

我囉嗦了這麼多其實是想說,很多人都喜歡說自己原來把MATLAB當C++用,可是那些驚豔到他們的MATLAB的功能,很多C++標準庫裡就有。而且也沒見過他們用MATLAB裡的函數指針、面向對象等技術。。。

編輯於 2015-01-27  感謝 

 收藏 • 沒有幫助 • 舉報 • 作者保留權利

12贊同反對,不會顯示你的姓名

古十長

12 人贊同

我知道樓主在這裡肯定要不到想要的答案的,雖然幫不上忙,但是我盡力,所以剛剛花了幾分鐘寫了個py腳本提取了一下自己1900+個m文件的「函數」出現頻率前100的,如下(函數加引號是因為沒法區分出函數和變量來,所以自己人腦區分吧~):
('size', 1147) ('subplot', 1141) ('zeros', 1099) ('ones', 814)
('sym', 670) ('abs', 669) ('title', 652) ('find', 566)
('max', 563) ('figure', 548) ('min', 522) ('subs', 459)
('findsym', 436) ('set', 422) ('fprintf', 381) ('ylabel', 346)
('sqrt', 346) ('exp', 268) ('sin', 250) ('randn', 250)
('imshow', 236) ('cos', 235) ('xlabel', 223) ('reshape', 219)
('floor', 187) ('diag', 176) ('eye', 162) ('wrcoef', 161)
('log', 158) ('num2str', 156) ('rand', 152) ('axis', 149)
('repmat', 147) ('colormap', 144) ('linspace', 136) ('double', 128)
('get', 128) ('norm', 123) ('wcodemat', 120) ('alphaall', 120)
('isempty', 114) ('fftshift', 111) ('imread', 110) ('sort', 109)
('fft', 109) ('log10', 108) ('load', 103) ('uint8', 103)
('isfield', 99) ('strcmp', 99) ('while', 91) ('round', 90)
('inv', 88) ('close', 72) ('transpose', 72) ('real', 71)
('power', 71) ('std', 66) ('elseif', 64) ('fgetl', 64)
('mod', 63) ('contour', 62) ('for', 62) ('sign', 59)
('fft2', 56) ('meshgrid', 56) ('mvnrnd', 53) ('xlim', 50)
('stem', 50) ('sim', 48) ('fopen', 48) ('ceil', 47)
('str2num', 47) ('legend', 46) ('wavedec', 46) ('detcoef2', 43)
('wavefun', 42) ('ifft2', 42) ('uimenu', 40) ('cumsum', 39)
('freqz', 38) ('wavedec2', 38) ('tan', 37) ('wrcoef2', 37)
('text', 34) ('ifft', 34) ('sinh', 32) ('clabel', 32)
('betaall', 32) ('fliplr', 31) ('findobj', 31) ('not', 30)
('imwrite', 30) ('strcat', 30) ('conv', 30) ('randperm', 30)
('fclose', 29) ('intersect', 29) ('setdiff', 29) ('fix', 28)
[Finished in 0.8s]

代碼:

#coding=utf-8import osimport refundict = {}invalidlist = set()for filename in os.listdir("./"):    if not filename.endswith("m"):        continue    # 文件名不是系統函數    invalidlist.add(filename[0:-2])    for line in open(filename):        comments = line.find('%')        if comments >= 0:            line = line[0:comments]        # function xxx不是系統函數        result = re.findall(r'function\s([A-Z_a-z0-9]+)\s*\(',line)        if len(result):            invalidlist.add(result[0])            continue        # 被賦過值的是變量不是系統函數        result = re.findall(r'([A-Z_a-z0-9]+)\s=',line)        if len(result):            invalidlist.add(result[0])        result = re.findall(r'([A-Z_a-z0-9]+)\s*\(',line)        if len(result) != 0:            for foo in result:                # 長度小於3,有大寫或_的不是系統函數                if len(foo) <= 2 or len(re.findall('[A-Z_]',foo)) or foo in invalidlist:                    continue                if fundict.has_key(foo):                    fundict[foo] += 1                else:                    fundict[foo] = 1for key in fundict:    if key in invalidlist:        fundict[key] = -1dict= sorted(fundict.iteritems(), key=lambda d:d[1], reverse = True)for i in range(0,100):    if (i+1)%4:        print dict[i],    else:        print dict[i]

編輯於 2015-02-05  感謝 

 收藏 • 沒有幫助 • 舉報 • 作者保留權利

1贊同反對,不會顯示你的姓名

塵中遠 ,保福寺護院武僧

1 人贊同

我猜你c++求max不是用std::max_element而是用循環

發布於 2015-01-27  感謝 

 收藏 • 沒有幫助 • 舉報 • 作者保留權利

0贊同反對,不會顯示你的姓名

李龍翔 ,舉報的問題比回答的問題多

lookfor + 關鍵詞
查查不就行了?

發布於 2015-01-27  感謝 

 收藏 • 沒有幫助 • 舉報 • 作者保留權利

6贊同反對,不會顯示你的姓名

Emily Ma ,juejue||分生。

6 人贊同

matlab用的比較多,但是水平比較渣,寫出來的代碼基本都是小白level的,也就是以能算通為目的,很少做語言和算法上的優化(因為目前處理過的東西都是數據量和計算量不大的東西,沒需求就沒動力做優化=。=)
所以估計一些經驗比較適合題主這種同樣初入門的人。

首先,matlab下寫代碼,牢記關鍵詞 矩陣運算。因為基本上基礎矩陣運算,matlab都自帶函數了,數據存儲也是以向量,矩陣,高維數組or高維矩陣(術語不專業的的話請自行忽略=。=)的形式存在的。所以一切矩陣運算都很方便。比如求解矩陣方程Ax=b,直接用x=A\b, 並且A可以是square或者rectangular,後者會自動求出least squares method的解。比如求矩陣特徵值和特徵向量是eig,對矩陣做SVD分解就是svd。。。
舉這些例子首先是想說明,1,線性代數入門學的那些東西matlab都做了很好的算法了,直接用!2,擅用help命令 前面我舉的這三個函數的例子,發現了沒有,函數名稱或者說代碼寫出來基本和你在數學書上學的很類似,寫代碼的時候,即使你是第一次或者第二次用matlab的新手,我相信只要藉助百度+help,你都能找到對應的正確函數。

關鍵詞 矩陣運算 下的另一個tip就是避免題主問題描述裡的情況,把matlab寫成c++,比如我最開始用matlab的時候也是不管什麼函數都想用for循環(工科渣渣 0 coding基礎大一上手學的c++,還用的是譚浩強課本,請自行腦補=。=),比如最簡單的求和都要寫個sum=0, for ii=1:n sum=sum+a(ii)*b(ii) end這種形式,後來發現這種寫法簡直腦殘,很多情境下的求和都可以變成row*vector。所以,請學會擅用矩陣運算!

matlab自帶函數和算法非常多,因為它的定位就是給工科的人做計算用的,窮舉常用函數是舉不出來的,但是只要牢記 矩陣運算,擅用help命令,以及新手們再佐以萬能的百度,基本入門需求就夠了。

編輯於 2015-01-27  感謝 

 收藏 • 沒有幫助 • 舉報 • 作者保留權利

1贊同反對,不會顯示你的姓名

Bound ,IC圖像算法工程師

1 人贊同

沒有本科生的,碩士生的,博士生....專用函數,都是一個工具而已。建議先找一本最薄的書來瀏覽一遍。下面做項目的時候,需要用的功能,Google,help命令,甚至百度也可。
MATLAB使用時應儘量避免使用循環,如果函數庫沒有需要的函數又要用到大量循環的可以考慮用Matlab API,用C++和Matlab混編實現你需要的功能。
MATLAB是功能強大的仿真語言,且簡單有效,相信你稍微學習一下就可以用到很好。

發布於 2015-01-27  感謝 

 收藏 • 沒有幫助 • 舉報 • 作者保留權利

0贊同反對,不會顯示你的姓名

匿名用戶

fsolve
ode45
ode15s
fmincon
fminunc 
以上是我認為工科中比較常用的函數。具體怎麼用詳見help

發布於 2015-11-26  感謝 

 收藏 • 沒有幫助 • 舉報 • 作者保留權利

0贊同反對,不會顯示你的姓名

匿名用戶

要用什麼先百度一下,再看看help

發布於 2015-02-27  感謝 

 收藏 • 沒有幫助 • 舉報 • 作者保留權利

0贊同反對,不會顯示你的姓名

yetwanng ,多年的尷尬症被你治好了

建議題主先去找本書看看,先深入理解一下MATLAB的原理以及應用,先不要急著想能有什麼大用處 。想將一樣東西運用自如,必然是對其充分了解,軟體也是如此。

像MATLAB, mathematica 這一類軟體都有著豐富的函數庫,而且是免編譯直接可調用的,這正是這類軟體的優勢,不然我們直接去編程就是了,還用這軟體幹嘛哦

發布於 2015-02-10  感謝 

 收藏 • 沒有幫助 • 舉報 • 作者保留權利

0贊同反對,不會顯示你的姓名

鵪鶉 ,Freedom,基拉的坐騎

fft

發布於 2015-02-03  感謝 

 收藏 • 沒有幫助 • 舉報 • 作者保留權利

0贊同反對,不會顯示你的姓名

Wayne Sun ,喜歡畫畫的工科狗……

題主這問題太偷懶額,無法授之以魚啊,還是不對題的說方法吧……

首先,基本你在數學課本上學到的函數都有,網上有常用函數手冊down一個放手邊查著用,題主自己找吧,要那種簡潔的,只有函數名和用途的(因為這樣比較薄),需要用的時候查help看用法,matlab會用help很重要。
然後捏,matlab有很多加速的技巧,千萬別用c或c++的思維來寫程序,那樣會死的很慘,一個小程序跑你個幾小時都是可能的。能用向量就不要用循環,能用矩陣運算就不要用元素運算,矩陣運算用好了簡直快的飛起啊 ……總之呢,每當你想寫邏輯語句的時候,都要慎重……

編輯於 2015-01-27  感謝 

 收藏 • 沒有幫助 • 舉報 • 作者保留權利

0贊同反對,不會顯示你的姓名

CH3COOH ,作業補交磚家

matlab自帶幫助而且有搜索的功能。

發布於 2015-01-27  感謝 

 收藏 • 沒有幫助 • 舉報 • 作者保留權利

0贊同反對,不會顯示你的姓名

落在起風的地方 ,Web渣/喜歡四處蹭飯

當你覺得你得用循環、建函數來實現某種功能時,就要搜搜有沒有符合你描述的函數或命令了。matlab裡對數值運算提供的功能很多,尤其是涉及矩陣運算時再去用數組、循環什麼的運行效率就低很多了。題注也可多翻翻手冊,那些個功能很多都是初學編程時要用c啊c++啊實現的,很容易理解。

發布於 2015-01-27  感謝 

 收藏 • 沒有幫助 • 舉報 • 作者保留權利

1贊同反對,不會顯示你的姓名

Tao Tao ,金融

1 人贊同

可以看手冊,或者經常看看matlab相關的論壇,上面有總結的

相關焦點

  • MATLAB中的數據插值函數
    method參數表示用於插值的方法,常用的取值由以下幾種方法:(1) linear: 線形插值,默認方法。將與插值點靠近的兩個數據點用直線連接,然後在直線上選取對應插值點的數據。(2) nearest: 最近點插值。選擇最近樣本點的值作為插值數據。(3) pchip: 分段3次埃爾米特插值。
  • 代碼詳解——MATLAB出圖:常用函數
    通過仿真獲得數據後,還需要通過MATLAB將數據繪製成圖片插入論文中,本期代碼詳解將著重介紹路徑跟蹤控制繪圖常用的函數。
  • MATLAB 中有哪些命令,讓人相見恨晚?
    for循環另,matlab裡所有以fun為後綴的命令都很好用,arrayfun,cellfun,structfun,等等@() 匿名函數使用函數式編程,在編寫以數學公式為主的程序中比傳統編程方法好得多set(gca,...)等所有與畫圖相關的命令都包含了千奇百怪的屬性和參數,非常實用,如著名的 set(gca,...)
  • matlab基礎語法3_數值計算器_矩陣的運算_矩陣操作函數
    收錄於話題 #matlab        工作可能越偏控制一點了,後面會邊學習邊總結一些控制理論。
  • MATLAB簡單粗暴教程(十三)——MATLAB裡畫圖的一些基本函數
    值班間隙抓緊時間碼字,怕是再不抓緊時間,後面就要斷檔了…本文主要介紹matlab中常用常見的一些畫圖函數(不包括地圖工具箱和圖片處理神馬的)的最簡單用法。不敢說面面俱到,但是基本上涵蓋的也差不多了,大家經常提問的也都在這裡出現了。
  • Matlab:符號變量、符號函數、泰勒級數
    符號變量在介紹matlab一文中,我們寫道在matlab中使用變量時不需要預先定義,但是在特殊情況下我們是需要先定義變量然後才能使用的,這種情況就是符號變量。在matlab中用 syms 聲明一個符號變量。聲明了符號變量後就可以構造一個函數了,然後可以在基礎上應用,例如簡單的函數求值。
  • Matlab函數大全
    啟動和推出 matlab matlabrc :Matlab 的啟動 M 文件 exit quit :退出 Matlab startup :運行 matlab 啟動文件 10.
  • MATLAB的lsqcurvefit函數擬合非線性式子中的未知參數
    往往在實際問題中都存在exp(x)、lnx、sinx等多種函數組合的非線性經驗公式。對此我們就可以通過lsqcurvefit函數進行求解,該函數的方法被稱為非線性最小二乘,損失函數一樣,只不過類似於優化算法,給定參數初始值,然後優化參數,非線性最小二乘模型如下,即目標函數。
  • Matlab中幾個數值積分函數的比較和優缺點
    自適應Gauss-Kronrod數值積分,適用於高精度和震蕩數值積分,支持無窮區間,並且能夠處理端點包含奇點的情況,同時還支持沿著不連續函數積分,複數域線性路徑的圍道積分法注意事項:1.積分限[a,b]可以是[-inf,inf],但必須快速衰減2.被積函數在端點可以有奇點,如果區間內部有奇點,將以奇點區間劃分成多個,也就是說奇點只能出現在端點上
  • Matlab常用函數與常用指令大全
    順帶分享一個Matlab 2010b 下載地址http://pan.baidu.com/s/1mhEm5a4matlab常用函數- -1、特殊變量與常數ans 計算結果的變量名computer 確定運行的計算機eps 浮點相對精度Inf 無窮大I 虛數單位inputname 輸入參數名NaN 非數
  • 在Matlab中使用frestimate函數來進行頻率響應分析 視頻版
    前幾天藍總告訴了我matlab的一個功能,可以直接掃描系統的頻率響應,再根據頻率響應數據來得到傳遞函數的辦法。於是我跟著Help文件研究了一下,下文是基本實現。圖文版可以參考這篇文章:在matlab中使用frestimate函數來進行頻率響應分析。  那麼我為什麼要做這視頻呢?是因為我覺得這個功能非常強大,非常有推廣的意義。
  • Matlab編程並繪製函數或者信號包絡線
    MATLAB的輸入輸出input函數matlab詳細介紹畫柱形圖matlab中矩陣的入門知識matlab中legend函數的用法matlab繪圖--線性規劃圖解法示意Matlab 進度條的製作Matlab對fig文件導出數據Matlab中plot函數全功能解析Matlab的fmincon
  • Python 初學者必備的常用內置函數
    常用上下文管理器 with 打開文件,f.read( ) 讀取全部內容,f.readline() 讀取一行內容。中,將函數返回的數值作為判斷對象大小的依據。reverve 參數表示逆置操作,key 與之前 len 中的 key 參數類似,是函數排序的依據。
  • MATLAB中圖像處理的一些簡單函數
    2.MATLAB中圖像文件的顯示 imshow imshow函數是最常用的顯示各種圖像的函數,其語法如下: imshow(1) 二進位(二值)圖像顯示方法,在MATLAB中一幅二值圖像是uint8或雙精度的,該矩陣僅包含0和1。如果希望工具箱中的函數能將圖像理解為二進位的,那麼所有數據都要是邏輯數據,必須對其進行設置(將所有數據標誌均設置on).可以對數據利用「~」取反操作實現圖像逆轉即黑白反色。(2) 灰度圖像的顯示方法,正常情況下無需指定灰度圖像的調色板格式。
  • MATLAB矩陣及其運算(一)
    1、矩陣的創建matlab矩陣的創建方式有如下幾種:直接輸入、讀取外部數據、內置函數、M文件編程(a) 直接輸入:直接創建矩陣要注意如下規則:矩陣元素必須在方括號[ ]內;矩陣同行元素之間用空格或逗號(,)隔開;矩陣的行與列之間用分號(;)隔開。
  • 32個實用matlab編程技巧
    8、在程序運行結束後,使用clearvars可以清掉不需要的變量而保留結果變量,例如,clearvars -except varA varB,意思是清除變量空間中除了變量varA,varB以外的所有變量。9、使用Ctrl+C可以中止正在運行的程序。10、doc + 函數名,直接打開相應函數的matlab幫助文檔。
  • Python內置函數一覽表
    內置函數和標準庫函數是不一樣的。Python 解釋器也是一個程序,它給用戶提供了一些常用功能,並給它們起了獨一無二的名字,這些常用功能就是內置函數。Python 解釋器啟動以後,內置函數也生效了,可以直接拿來使用。Python 標準庫相當於解釋器的外部擴展,它並不會隨著解釋器的啟動而啟動,要想使用這些外部擴展,必須提前導入。
  • DSGE建模與編程入門(54):Matlab入門
    在光標後,我們可以輸入:加「+」、減「-」、乘「*」、 除「/」、指數「」 和小括號"()"等等我們常用的數學和計算符號,函數等命令。為了調用sqr.m文件,我們只需要在matlab命令窗口輸入:此外,我們還可以利用所謂的「in-line」函數在matlab的命令窗口中直接編寫簡單的函數:
  • Python 3.x中內置函數range()函數的用法
    range()是Python開發中非常常用的一個內置函數,語法格式為range([start,] end [, step] ),有range(stop
  • Matlab 中的線性規劃函數使用方法
    線性規劃 LP(Linear programming,線性規劃)是一種優化方法,在優化問題中目標函數和約束函數均為向量變量的線性函數,LP問題可描述為:min  xs.t.在MATLAB中,用於LP的求解函數為linprog.其調用格式為:[x,fval,lambda]=linprog(f,A,b,Aeq,beq,vlb,vub,x0,options)其中f,A,b,是不可預設的輸入變量,x是不可預設的輸出變量,它是問題的解.vlb,vub均是向量,分別表示x的下界和上界,x0為x的起始點,options為optimset