MATLAB之基本語法與基礎函式
常用命令
dir:列出當前目錄下的所有檔案
clc:清除命令窗
clear all:清除環境(從記憶體中清除所有變數)
who:將記憶體中的當前變數以簡單形式列出
close all: 關閉所有的 Figure 視窗
變數設定
(1).變數命名
MATLAB 的變數名以字母打頭,後最多可跟 19 個字母或數字,如 x,y,ae3 和 d3er45 等都是合法的變數名,不能使用內部函式或命令名作為變數名。
MATLAB 中的變數名區分大小,ab 與 Ab 表示兩個不同的變數。
(2).變數賦值
l 表示式賦值
>>a=(100*0.02)/4.0
a=0.0500
l 矩陣賦值
數值通常按行輸入,行之間用分號隔開。
>> C=[-1,0,0;1,-1,0;0,0,2];(省略最後的分號,MATLAB 會回顯矩陣值)
l 通過引用特定的位置可以單獨改變某個矩陣元素
如 S=[5, 6, 4],用命令 S(2)=8 把矩陣 S 的第二個元素值由 6 改成 8。
l 可以引用已定義的矩陣,重新定義一個新矩陣。
如 S=[5,6,4],可定義一個新矩陣。
>>B=[3 S 2]
B=35642
整數操作
l fix(x):截尾取整
>> fix( [3.12 -3.12])
ans =3 -3
l floor(x):不超過 x 的最大整數(高斯取整)
>> floor( [3.12 -3.12])
ans =3 -4
l ceil(x) :大於 x 的最小整數
>> ceil( [3.12 -3.12])
ans =4 -3
隨機序列常用命令
l rand:均勻分佈隨機矩陣
rand %無變數輸入時只產生一個隨機數
y= rand(n) %生成 n×n 隨機矩陣,其元素在(0,1)內
y = rand(m,n) %生成 m×n 隨機矩陣,其元素在(0,1)內
例 1.1:產生一個 3×4 隨機矩陣,MATLAB 命令為:R=rand(3,4)
l randn:正態分佈隨機矩陣
randn %無變數輸入時只產生一個正態分佈隨機數
y = randn(n) %生成 n×n 正態分佈隨機矩陣
y = randn(m,n) %生成 m×n 正態分佈隨機矩陣
例 1.2:產生均值為 0.6,方差為 0.1 的 4 階矩陣
MATLAB 命令為:>> mu=0.6;sigma=0.1;>> x=mu+sqrt(sigma)*randn(4)。
l randsrc:產生均勻分佈陣列
randsrc %無變數輸入時只產生一個隨機數 1 或者-1
y= randsrc(n) %生成 n×n 隨機陣列,其元素為 1 或者-1
y = randsrc(m,n) %生成 m×n 隨機陣列,其元素為 1 或者-1
例1.3:產生一個 2*3 隨機矩陣,MATLAB 命令為:R=randsrc(2,3)
矩陣常用操作命令
MATLAB 的基本單位是矩陣,掌握矩陣的輸入、各種數值運算以及矩陣函
數是學好 MATLAB 的關鍵。
(1).矩陣的輸入
l 直接輸入建立矩陣
以“[”和“ ]”作為首尾,同行的元素用“,”或空格隔開,不同行的元素用“;” 或按 Enter 鍵來分隔;矩陣的元素可以是數字也可以是表示式,如果是數值計算,表示式中不可包含未知變數。
l 用矩陣函式來生成矩陣
MATLAB 提供了大量的函式來建立特殊矩陣,表 1.1 給出 MATLAB 常用的矩陣函式。
(2).操作符“:”的說明
j:k表示步長為 1 的等差數列構成的陣列:[j, j+1, j+2,…, k]。
j:i:k表示步長為 i 的等差數列構成的陣列:[j,j+i,j+2*i,…, k]。
A(i:j)表示 A(i),A(i+1),…,A(j)。
(3).對矩陣元素的操作
設 A 是一個矩陣,則在 MATLAB 中用如下符號表示它的元素:
A(i,j)表示矩陣 A 的第 i 行第 j 列元素。
A(:,j)表示矩陣 A 的第 j 列。
A(i,:)表示矩陣 A 的第 i 行。
A(:,:)表示 A 的所有元素構造 2 維矩陣
A(:)表示以矩陣 A 的所有元素按列構成的一個列矩陣。
A(i)表示矩陣 A(:)的第 i 個元素。
[]表示空矩陣。
(4).矩陣的運算
(5).陣列
在 MATLAB 中陣列是一行或者一列的矩陣,對矩陣輸入、修改和儲存都適用於陣列,同時 MATLAB 還提供了一些建立陣列的特殊指令。
l 特殊陣列的建立
linspace(a,b,n) 給出區間[a,b]的 n 個等分點資料
例 1.7:給出區間[0,1] 的 6 個等分點資料。
MATLAB 命令為:>> linspace(0,1,6)
l 陣列運算
位操作
l bitand:按位與
C=bitand(A,B)命令將返回兩個非負整數陣列 A 和 B 的相應元素按位與操作的結果。為了確保 A 和 B 的元素都是整數,可以使用 ceil、fix、floor 和 round函式來生成 A 和 B。
例 1.9:>>C=bitand(1,2)
結果為:C=0
l bitor:按位或
C=bitor(A,B)命令將返回兩個非負整數陣列 A 和 B 的相應元素按位或操作的結果。為了確保 A 和 B 的元素都是整數,可以使用 ceil、fix、floor 和 round 函式來生成 A 和 B。
例 1.10:>>C=bitor(1,2)
結果為:C=3
l bitxor:按位異或
C=bitxor(A,B)返回兩個非負整數陣列 A 和 B 的相應元素進行按位異或的結果,為了確保 A 和 B 的元素都是整數,可以使用 ceil、fix、floor 和 round 函式來生成 A 和 B。
例 1.11:>>C=bitxor(1,2)
結果為:C=3
l bitset:設定指定位的值
C=bitset(A,bit,v)命令將 A 中元素第 bit 位設為 v,其中 v 必須為 0 或 1,A 中的元素必須為非負整數,bit 必須為 1 到 A 中元素浮點整數表示法的位數之間的一個數字。
例 1.12:>>C=bitset(1,2,1)
結果為:C=3
l bitget:獲取指定位的值
C=bitget(A,bit)命令將返回 A 中元素用 bit 指定位的值,A 中的元素必須為非負整數,bit 必須為 1 到 A 中元素浮點整數表示法位數之間的一個數字。
例 1.12:
>>C=bitget(1,2)
結果為:C= 0
繪圖操作
(1)圖形標註
title(‘string’,’屬性名’,’屬性值’,…) —— 給圖形加標題
xlabel (‘string’,’屬性名’,’屬性值’,…) —— 給 x 軸加標註
ylabel (‘string’,’屬性名’,’屬性值’,…) —— 給 y 軸加標註
legend (‘string1’,’string2’,…)—— 新增圖例,其順序對應於繪圖指令中的順序
axis ([xmin,xmax,ymin,ymax])—— 控制座標軸的刻度範圍
(2)二維圖形
l plot(x,y)
功能:以向量 x,y 為軸,繪製曲線。
注: plot(x,y)命令可用來繪製函式 f(x)圖形, 此時可通過向量 x 常用命令 x=a:h:b的形式獲得 f(x)函式在繪圖區間[a,b]上的自變數點向量資料,對應的函式向量值取為 y= f(x)。步長 h 可以任意選取,一般步長越小,曲線越光滑,但是步長太小,會增加計算量,運算速度也要降低。通常步長 h 取值 0.1 可達到較好的繪圖效果。
l plot(x1,y1,x2,y2,x3,y3…)
功能:在同一圖形視窗繪製多條不同顏色曲線,曲線關係為
y1=f(x1),y2=f(x2),y3=f(x3)
(3)二維特殊圖形
l bar
例 1.15:
>> x=1:5;
>> bar(x),title('直方圖')
l Hist 表示生成直方圖
M=hist(N)表示將 N 中的最大最小值找出來,然後,平均取十個等間隔點,看以每個間隔點為中心,向兩邊各擴充套件 1/2 間隔的範圍內,包括 N 的元素個數,因此 M 返回值都是 1*10 大小。
例 1.16:>> b1=[0,1,2,3,4,5,6,7,8,9];b2=[4,5,7];
>>M=hist(b2)
>>M=hist(b1)
檔案操作
(1)fopen 開啟檔案
fopen 函式的呼叫格式為:fid= fopen(檔名,開啟方式)
其中檔名用字串形式,表示待開啟的資料檔案。常見的開啟方式有:‘r’表示對開啟的檔案讀資料,‘w’表示對開啟的檔案寫資料,‘a’表示在開啟的檔案末尾新增資料。fid 用於儲存檔案控制代碼值,控制代碼值用來標識該資料檔案,其他函式可利用它對該資料檔案進行操作。檔案資料格式有兩種形式,一種是二進位制檔案,另一種是文字檔案。在開啟檔案時需要進一步指定檔案格式型別,即指定是二進位制檔案還是文字檔案。
(2) fclose 關閉檔案
檔案讀、寫等操作完成後,應及時關閉。關閉檔案用 fclose 函式,呼叫格式為:sta=fclose(fid),該函式關閉 fid 所表示的檔案。sta 表示關閉檔案操作的返回程式碼,若關閉成功,返回 0,否則返回–1。
(3) 二進位制檔案的讀寫操作
l fread 讀二進位制檔案
fread 函式可以讀取二進位制檔案的資料,並將資料存入矩陣。其呼叫格式為:[A,COUNT]=fread(fid,size, precision)。
其中 A 用於存放讀取的資料,COUNT 返回所讀取的資料元素個數。fid 為檔案控制代碼,size 為可選項,若不選用則表示讀取整個檔案內容,若選用則它的值可為以下選項:N 表示讀取 N 個元素到一個列向量;Inf 表示讀取整個檔案;[M,N]表示讀資料到 M×N 的矩陣中,資料按列存放。precision 代表讀寫資料的型別。
l fwrite 寫二進位制檔案
fwrite 函式按照指定的資料型別將矩陣中的元素寫入到檔案中。其呼叫格式為:COUNT=fwrite (fid, A, precision),其中 COUNT 返回所寫的資料元素個數,fid為檔案控制代碼,A 用來存放寫入檔案的資料,precision 用於控制所寫資料的型別,其形式與 fread 函式相同。
M 檔案的建立與使用
M 檔案有命令檔案和函式檔案兩種形式,這兩種檔案的副檔名相同,都是.m。當用戶要執行的命令較多時,直接從鍵盤上逐條輸入較為繁瑣,可利用命令檔案來解決多行輸入問題。使用者可將一組相關命令編輯在同一個命令檔案中,執行時只需輸入檔名字,MATLAB 就會自動按順序執行檔案中的命令。函式檔案是另一種形式的 M 檔案,它的第一句可執行語句是以 function 引導的定義語句,在函式檔案中的變數都是區域性變數。
(1)命令檔案
命令檔案的一般形式為:<M 檔名>.m 如 a1.m, pp.m 等都是合法的 M 檔名。M 檔案有兩種執行方式:一是在命令視窗直接輸入檔名,按 Enter 鍵; 二是在編輯視窗開啟選單 Tools,再單擊 Run。M 檔案儲存的路徑一定要在搜尋路徑上,否則 M 檔案不能執行。
例 1.17:用 M 命令檔案繪製 lena.bmp 影象。
(2)函式檔案
M 函式檔案的一般形式為:function <因變數>=<函式名>(<自變數>)
M 函式檔案可以有多個因變數和多個自變數,當有多個因變數時用[]括起來。
&n