1. 程式人生 > >matlab基本語法和運算基礎

matlab基本語法和運算基礎

matlab語法比較隨意,但正如其全名 matrix &laboraty(矩陣實驗室)所言,相比於其他語言,它可以非常便捷實現矩陣運算,就像我們標量的加減乘除一樣簡單。對於矩陣運算的強大支援和強大數學和科學計算函式庫也墊定了其可以廣泛應用在各種科學計算中,研究人員可以快速的使用matlab驗證一個演算法,使用matlab驗證演算法相比C/C++/JAVA等工作量小了很多,演算法驗證達到了一個較好的效果,我們也可以比較迅速的使用C、C++等語言把它用到實際工程和產品中去。本文主要介紹一下matlab一些比較重要且和C/C++等語言等常用語言不太一樣的概念和基礎矩陣運算方法。

一·支援的資料型別


matlab是一門以矩陣運算為基礎語言,標量運算也可以看成1*1矩陣之間的運算。
1·元胞陣列:元胞是元胞陣列的基本組成成分,元胞陣列與數字陣列相似,以下標來區分,單元胞陣列和元胞內容兩部分組成。用花括號{}表示元胞陣列的內容,用圓括號()表示元胞元素,與一般數字陣列不同,元胞可以存放任何型別、任何大小的陣列,而且一個元胞陣列各元素的內容可以不同。
2·結構陣列:與元胞陣列類似,結構陣列也能存放各類資料,使用指標方式傳遞數值,結構陣列由結構變數名 和屬性名組成,用操作符.來連線結構變數名和屬性名。parameter.temperaure 表示溫度。
3·物件: 當建立應用軟體時,你所要描述的類別或事物可能是實際的物件,如汽車或是一個有機體,可能是一個虛擬實體,如金融市場,也可能是資訊,如一組測試結果。在面向物件的程式設計中,這些類別以“類”的概念表達。資料元素或狀態表示為類的屬性。matlab也支援面向物件程式設計。
二·關係運算和邏輯運算

1·邏輯運算:&邏輯與,~邏輯非,|邏輯或。
2·關係運算函式:all(A):A向量所有向量為非零元素時為真。xor():異或。any(A):A中任何一向量為非零元素時為真。
3·邏輯運算函式:bitand():按位與 。 bitcmp():位比較。bitor():按位或。bitmax():最大無符號浮點整數。bitxor():位方式邏輯異或 bitshift():將二進位制移位運算。
三·矩陣及其運算
1·一般矩陣生成和特殊矩陣生成函式
1·1一般矩陣生成:矩陣以左方括號“[”開始,以右方括號“]”結束。每一行元素用分號或回車結束,每個元素之間用空格或逗號隔開。此外矩陣建立還可以靠讀入資料。
1·2特殊矩陣生成函式

zeros():生成全為零的矩陣。tril():生成下三角矩陣
ones():生成元素全為1矩陣。eye():生成單位矩陣
rand():生成均勻分佈隨機矩陣。randn():生成正態分佈所及矩陣
magic():生成魔方矩陣。 hilb():生成希爾伯特矩陣
vander():生成vander矩陣。diag():生成對角矩陣
hankel():生成hankel矩陣。 triu():生成上三角矩陣
hadamard():生成hadamard矩陣
2·矩陣運算
A矩陣轉置:A’。A矩陣對數運算:logm(A)。
矩陣的指數運算:expm(A)。矩陣求逆:inv(A)。
矩陣逆時鐘旋轉90度:rot90()。計算矩陣特徵值和特徵向量:eig().
矩陣上下翻動:flipud(). 計算矩陣的秩:rank()。
矩陣左右翻動:fliplr(). 計算矩陣的跡:trace().
矩陣某維元素翻轉:flipdim()。計算矩陣的2範數:norm()。
矩陣元素移位:shiftdim()。計算矩陣特徵方程的根:ploy()。
3·矩陣分解函式
矩陣的特徵值分解:eig().矩陣的奇異值分解:svd().
矩陣的QR分解:qr(). 矩陣的cholesky分解:chol()
矩陣的schur分解:shur()。 矩陣的LU分解:lu().
四·符號運算
1·符號運算基本語法
數值運算必須先對變數賦值再運算,然後才能參與運算。符號運算無須事先的運算物件可以使沒有賦值的符號變數,可以獲得任意精度的解。
1·符號表達式可以代表數字、函式、運算元、變數的matlab字串。
2·建立單個符號量:符號量名 = sym(‘符號表達式’)。
syms 符號表達式1 符號表達式2 符號表達式3 表示式4;
2·符號矩陣
符號矩陣也是一種符號表達式,所以前面介紹符號表達式運算也可以在矩陣意義下進行,但應該注意這些函式作用於符號矩陣時,是分別用於矩陣的每個元素。比如A =sym(‘[a,3*b;3*a,c]’);由於符號矩陣是一個矩陣,所以它可以進行矩陣相關運算(diag,tril,det等函式)。
numeric(A):將符號矩陣轉化為數值矩陣。
tranpose(A):返回A的裝置矩陣
determ(A):返回矩陣的行列式值
3·符號表達式的4則運算
對符號表達式或或符號矩陣A進行因式分解:factor(A);
對符號表達式或符號矩陣A進行展開:expand(A)
對符號表達式或符號矩陣A進行合併同類項:collect(A)
應用函式規則對A進行簡化:simplify(A)
對函式進行綜合簡化:simple(A)
對函式f關於x求n階導數:diff(f,x,n)
求積分最常用函式:int(f,r,x0,x1) 其中f為積分表達,r為積分變數,
x0和x1為積分上下限。沒有上下限則求得的是不定積分。
subs(f,{x},{x的實際值})給表示式中的x賦實際值並計算。

五·複數運算
*1·基本運算操作
複數表示式構造利用i,j直接寫,也可以額利用符號函式來構造。也可以寫成極座標的形式。
polar(theta,rho)畫出極座標圖,其中theta為極座標極角,rho為極座標失徑。
real(A)求複數A的實部 conj(A) 求A的共軛
imag(A) 求複數A的虛部 abs(A)求A的模
angle(A) 求A的相角
[r,p,k]= residue([an-1,…,a0],[bn-1,…,b0]);求解有理分式的留數。其中r為留數,p對應的各奇點。
2·泰勒展開和Fourier變換
taylor(f):返回函式f的五次多項式近似,函式f的自變數有函式findsym決定。
taylor(f,n):返回n-1次冪多項式,函式f自變數由findsym決定。
taylor(f,a):返回a點附近的五次冪多項式近似。
taylor(f,x):返回指定變數x的五次冪多項式近似。

fourier(f):返回以預設變數x為數量符號f的Fourier變換,其中變換後函式預設以w為自變數。
fourier(f,v):以v替代w為變換後的函式自變數。
fourier(f,u,v):以v替代w,以u提到x
ifourier也是類似的。
拉普拉斯變換用法:laplace 和ilaplace都是類似的。
Z變換用法:ztrans和iztrans也是類似的。
六·matlab的繪圖
1·plot(x1,y1,option1,x2,y2,option2);畫二維曲線
2·plot3(x1,y1,z1,option1,x2,y2,z2,option2);畫三維 曲線
3·mesh(X,Y,Z,C);畫三維網格曲面X,Y,Z為矩陣
4·surf(X,Y,Z,C);畫三維陰影曲面,X,Y,Z為矩陣
5·[X,Y]=meshgird(x,y);將矩陣X的每一行都為向量x
6·view(beta,theta),選擇三維圖角度,其中beta為方位角,theta為視角。
7·hist(Y,X)以X為統計範圍統計,繪製出Y分佈直方圖
8·rose(thera,x)以向量x為統計範圍,在極座標下統計thera的直方圖分佈。
9·bar(data,’mode’)用來畫柱狀圖,mode預設是‘grouped’模式,這時bar函式把陣列data每一行看作一組,畫在一個水平座標位置。若指定為‘stacked’則把每一組資料疊加起來繪圖。barh水平放置的柱狀圖。
三維柱狀圖bar3() bar3h()也是類似。
10·面積圖 area()函式用於繪製面積圖,和累疊模式柱狀圖類似,面積圖也是把每一組資料點累疊繪製。不過它把每一個數據集合的相鄰點用線條連起來,並且把每一個數據集合所在區域用不同顏色填充。
11·pie()繪製二維餅圖。pie3()繪製三維餅圖。
13·火柴乾圖:把每個資料點用一個垂直於橫軸的火柴棒表示,stem(),stem3()。
14·繪製階梯圖stairs()。
15·等高線圖:用於顯示多元函式的函式值變化趨勢,contour()來繪製等高線,clabel()標註等高線函式值,contourf繪製顏色填充模式。
16·axis[xmin xmax ymin ymax]:分別限定x軸和y軸的範圍
axis equal:橫縱座標單位長度相同
axis square:圖框呈方形
axis off:清除座標刻度
semilogx:x軸為對數座標
semilogy:y軸為對數座標
loglog:全對數座標
text(x,y,’標識文字’)在指定座標標識對應的資料點
gtext(‘標識文字’)繪圖後用滑鼠來標識對應的位置
title(”)圖形標題,xlabel(”)標識x軸,ylabel(”)表示y軸
legend(‘圖例一’,圖例二’)給曲線新增圖例
grid on 給當前座標加上珊格線
grid off 從當前座標中刪去珊格線
hold on 保持影象,便於繪製多條曲線
hold off 取消保持

七·matlab函式及呼叫
1·匿名函式:匿名函式可以接受多個輸入和輸出引數,適用於命令列操作。fhandle = @(arglist) expression
2·私有函式:具有訪問限制性訪問許可權的函式,他們對應的M檔案儲存在名為private的資料夾下,但它只能被private檔案下M檔案呼叫。
**3·輸入輸出引數目錄:**nargin:輸入引數數目,nargout:輸出引數數目。
**4·可變輸入引數:**varargin:可變輸入引數。varargout 可變輸出引數。
5·全域性變數:用global來宣告和呼叫
6·函式控制代碼:函式控制代碼提供了一種間接呼叫函式的方法,建立函式控制代碼需要用到@,匿名函式其實也是一種控制代碼,而對M檔案的各種函式都可以建立函式控制代碼,從而可以通過函式控制代碼對這些函式實現間接呼叫。fhandle [email protected]_filename;
feval(fhandle,parameters);呼叫函式控制代碼
八·matlab除錯方法和程式設計技巧
1·去掉分號輸出中間結果。
2·設定斷點逐步除錯,觀測變數值的變化。
3·Code Analyzer:可以分析M檔案的效能和錯誤。
4·Profiler:MATLAB提供的一個功能強大的程式碼分析工具,一般來說,應該儘量避免不必要的變數輸出、迴圈賦值前預定義陣列尺寸,多采用向量化的,matlab函式,少採用陣列,提高matlab的效能。
5·一個程式的執行速度取決於它所呼叫的子程式個數以及所採用的演算法 ,通常希望程式越少越好,演算法效率越高越好。可以使用巢狀計算減小乘法次數。tic初始化時鐘開始計時,toc時鐘停止,獲得執行時間。
6·matlab要儘量避免使用迴圈,為了得到最快的執行速度,在for迴圈執行之前,應該預先分配陣列。矩陣運算優先考慮行內函數。
7·程式應該具有一定容錯能力,當用戶輸入錯誤時,應該使用error()函式來提示出國原因。

相關推薦

matlab基本語法運算基礎

matlab語法比較隨意,但正如其全名 matrix &laboraty(矩陣實驗室)所言,相比於其他語言,它可以非常便捷實現矩陣運算,就像我們標量的加減乘除一樣簡單。對於矩陣運算的強大支援和強大數學和科學計算函式庫也墊定了其可以廣泛應用在各種科學計算中

Matlab基本語法基本操作

a = 1 2 3 4 5 6 7 8 9 a = 1 3 5 7 9 ans = 0 0 0 0 0 0 Your

Matlab常用語法基本運算

(一)Matlab基本操作    1> 實數的加減乘除乘方等運算       可直接在Matlab的控制檯下進行對應的操作,如下。 >> 5+6 ans = 11 >> 3-2 ans

Xml一(基本語法約束)、

字符 一行 語言 oca cas 書寫 xsd ati 寫法 XML:eXtensible Markup Language 可擴展標記語言 version="1.0"     * 可擴展:所有的標簽都是自定義的。     * 功能:數據存儲     * 配置文件  

花了兩天時間學習了 sass, less, stylus的基本語法簡單使用, 談談感受.

列表 stylus 單點 blank 明顯 一點 css 自動編譯 數據 花了兩天時間學習了 sass, less, stylus的基本語法和簡單使用, 談談感受. 1. 變量的問題 1.1變量的表示 sass有個$var, [email protected]/

Kotlin基本語法使用

activit ext eset ans 默認 構造器 span 變量 tag Kotlin 是一個基於 JVM 的新的編程語言,由 JetBrains 開發。與Java相比,Kotlin的語法更簡潔、更具表達性,而且提供了更多的特性。 Kotlin是使

scala基本語法單詞統計

引用 包裝類 tab 組成 oop imp 2個 err 方法調用 scala 基本語法 1.聲明變量 (1)val i = 1 使用val聲明的變量值是不可變的,相當於java裏final修飾的變量,推薦使用。(2)var i = "hello" 使用var聲明的變量值是

java基本語法運算符)

|| ++ println style 結果 小數 else 功能 自動 如果是對負數取模,可以把模數符號忽略不計, 如:5%-2 = 1 對於/,整數除和小數除是有區別的,整數之間作除法,保留整數去除余數 +除了字符串相加功能外,還能把非字符串轉換成字符串

tensorflow學習筆記(1)-基本語法前向傳播

pla oba -a 訓練 style lac 好的 ini 神經元                  tensorflow學習筆記(1)   (1)tf中的圖      圖中就是一個計算圖,一個計算過程。

Java 基本語法---Java運算

簡單的 表達式 位或 表達 alt 舉例 賦值運算 狀態 str Java 基本語法---Java運算符 0. 概述 Java中的運算符主要分為以下幾種: 算術運算符 賦值運算符 關系運算符 邏輯運算符 條件運算符 位運算符 其他運算符 1. 算術運算符 操作

檔案的基本操作各種基礎型別的轉換

s2_day2 一、檔案操作 r 讀 w 寫 a 追加​​​ 函式: f =open('字串',mode = '對檔案的操作模式',encoding = '編碼方式')​​       #f就是檔案控制代碼 with open

Kotlin 基本語法寫法

定義包 package my.demo import java.util.* 目錄與包的結構無需匹配:原始碼可以在檔案系統的任意位置。 定義函式 帶有兩個 Int 引數、返回 Int 的函式: fun sum(a: Int, b: Int): Int { r

lua 1 基本語法注意事項

筆記總結自: http://www.runoob.com/lua/lua-data-types.html   基本資料型別: 資料型別 描述 nil 這個最簡單,只有值nil屬於該類,表示一個無效值(在條件表示式中相當於false)。

HTML基本語法語義寫法規則與例項

DOCTYPE DOCTYPE(Document Type) 該宣告位於文件中最前面的位置,處於html標籤之前,此標籤告知瀏覽器文件使用哪種HTML或者 XHTML規範。 DTD(Document Type Definition) 宣告以<!DOCTYPE>開始,不區分大小寫,前面沒有任何內容

CSS基本語法選擇器

CSS是指層疊樣式表(cascading style sheets),樣式定義如何顯示HTML元素,是真正能夠做到網頁表現和內容分類的一種語言。 【1】CSS基本語法 【2】CSS兩種結合方式 【3】

Makefile (3) 基本語法使用

make是用來管理一個工程專案的工具 . Makefile就是這個專案檔案 . 1.Makefile 是由若干條規則組成的,每個規則的語法如下所示 : #規則 targets: prerequisites command #舉例 main.c func1.c

正則表示式的基本語法在Python下的使用

正則表示式基本語法 常用正則表示式符號 符號 說明 舉例 literal 匹配字串的值 Foo re1|re2 匹配正則表示式re1或re2 fo

Oracle的基本語法操作

 ORACLE中的幾大基本操作指令及其含義    資料定義語言(DDL):用於建立、修改、刪除資料庫的物件(對列操作)       1.CREATE:建立表或其他物件的結構       2.ALTER:修改表或其他物件的結構       3.DROP:刪除表或其他物件的結構

matlab基本語法

1:matlab變數 變數名最多namelengthmax長度,在matlab2016a裡面顯示是63個字元,變數宣告沒有顯式的型別宣告,和python一樣,比如說a=10.0。 Matlab的基本資料結構是矩陣,矩陣中的元素可以是數、字元、邏輯表示式(logic stat

MATLAB基本語法介紹(上)

一、安裝 略 二、介紹 MATLAB和Mathematica、Maple並稱為三大數學軟體。它在數學類科技應用軟體中在數值計算方面首屈一指。MATLAB可以進行矩陣運算、繪製函式和資料、實現演算法、建立使用者介面、連線其他程式語言的程式等,主要應用於工程計算、控制設計、