Matlab 的數(shù)據(jù)結(jié)構(gòu)與運算
數(shù)據(jù)結(jié)構(gòu)與運算
1 基本數(shù)據(jù)結(jié)構(gòu)
(1) 常量、變量與賦值語句
在MATLAB中,變量名區(qū)分大小寫、不超過31位、不能有中文(包括文件名)、系統(tǒng)自動根據(jù)所賦予變量的值或?qū)ψ兞窟M行的操作來確定變量的類型。常量是計算機中不變的量,如i、j、pi、NaN、Inf等,常量可任意調(diào)用。
表A-7 MATLAB的部分特殊變量和常量
特殊變量和常量 | 說 明 |
ans | 如果沒指定輸出到一個變量,系統(tǒng)自動創(chuàng)建ans,存儲輸出結(jié)果 |
eps | 計算機的浮點運算誤差限,即相對精度 |
pi | π,3.14159265358979……,返回圓周率的近似值 |
i,j | 基礎(chǔ)的敘述單元 |
inf | 返回IEEE算法的正無窮大量,如n/0即產(chǎn)生inf(其中Nwei 實數(shù)) |
NaN | 返回IEEE算法的非數(shù)值,如0/0或inf/inf,關(guān)于NaN的算術(shù)運算等 |
MATLAB的賦值語句有兩種結(jié)構(gòu),見表A-8。
表A-8 Matlab 賦值語句結(jié)構(gòu)
類型 | 基本結(jié)構(gòu) | 舉例 |
直接賦值語句 | 賦值變量=賦值表達式 | b=2*a |
函數(shù)調(diào)用語句 | [返回變量列表]=函數(shù)名(輸入變量列表) | [U,S,V]=svd(x,y) |
(2) 矩陣
矩陣是MATLAB數(shù)據(jù)存儲的基本單元,而矩陣的運算是MATLAB語言的核心,在MATLAB語言系統(tǒng)中幾乎一切運算均是以對矩陣的操作為基礎(chǔ)的。
矩陣是MATLAB的基本變量單位,矩陣元素用方括號“[]”括住,每行內(nèi)的元素間用逗號“,”或空格隔開,行與行之間用分號“;”或回車鍵隔開,矩陣的元素可以是數(shù)值或表達式。例如:
矩陣的創(chuàng)建有直接輸入、外部文件讀入法、函數(shù)的生成等方式。對于一些比較特殊的矩陣(單位陣、矩陣中含1或0較多),由于其具有特殊的結(jié)構(gòu),MATLAB提供了一些函數(shù)用于生成這些矩陣。常用的如表A-9 所示。
表A-9 特殊矩陣生成函數(shù)
zeros(m) | 生成m階全0矩陣 | eye(m) | 生成m階單位矩陣 |
ones(m) | 生成m階全1矩陣 | rand(m) | 生成m階均勻分布的隨機陣 |
(3) 多維數(shù)組
MATLAB提供了一個cat()函數(shù)來構(gòu)造多維數(shù)組,該函數(shù)格式為:
A=cat(n,A1,A2,…,Am)
其中,n=1和n=2時分別構(gòu)造[A1;A2;…;Am]和[A1,A2,…,Am],結(jié)果是二維數(shù)組,而n=3可以構(gòu)造出三維數(shù)組。
2 矩陣運算
矩陣運算是Matlab的重要特色之一,以下主要介紹矩陣的基本運算。
(1) 矩陣代數(shù)運算
Matlab中常用的矩陣代數(shù)運算有加、減 、乘、 除和冪。
表A-10 矩陣基本運算符及其意義
符號 | 意義 | 符號 | 意義 | 符號 | 意義 | 符號 | 意義 | 符號 | 意義 |
+ | 矩陣相加 | - | 矩陣相減 | ^ | 矩陣冪 | .^ | 矩陣乘方 | / | 矩陣右除 |
* | 矩陣叉乘 | .* | 矩陣點乘 | \ | 矩陣左除 | .\ | 矩陣左點除 | ./ | 矩陣右點除 |
(2) 矩陣邏輯運算
邏輯運算是MATLAB中數(shù)組運算所特有的一種運算形式,也是幾乎所有的高級語言普遍適用的一種運算。它們分別是&(邏輯與)、|(邏輯或)和~(邏輯非)。
(3) 矩陣比較運算
表A-11 矩陣的比較運算符及其意義
運算符 | 意義 | 運算符 | 意義 |
= = | 等于 | > | 大于 |
~ = | 不等于 | <= | 小于等于 |
< | 小于 | >= | 大于等于 |
圖形繪制
MATLAB還擁有大量簡單、靈活、易用的二維和三維圖形繪制命令以及豐富的圖形表現(xiàn)能力,通過對圖形的線型、顏色、光線、視角等設(shè)置和處理,將計算結(jié)果更好的標示出來。
1 二維繪圖
下面具體描述繪制二維圖形的一般步驟及典型指令。首先,二維數(shù)據(jù)準備:
l 選定所要表現(xiàn)的范圍
l 產(chǎn)生自變量采樣向量
l 計算相應的函數(shù)值向量
>> t = pi*(0:100)/100; %自變量
>> y = sin(t).*sin(9*t); %函數(shù)值
選定圖形窗及子圖位置:
l 默認打開figure No.1,或當前窗、當前子圖
l 可用指令指定圖形窗號和子圖號
>> figure(1) %指定1號窗口
>> subplot(2,2,3) %指定3號子圖
調(diào)用(高層)繪圖指令:線型、色彩、數(shù)據(jù)點型
>> plot(t, y, ’b-’) %用藍色實線畫圖
設(shè)置軸的范圍和刻度、坐標分格線:
>> axis([0,pi,-1,1]) %軸范圍
>> grid on %坐標分格線
圖形注釋:圖名、坐標名、圖例、文字說明
>> title(‘調(diào)制波形’) %圖名
>> xlabel(‘t’); %x軸名
>> ylabel(‘y’); %y軸名
>> legend(‘sin(t)sin(9t)’); %圖例
>> text(2,1,’y=sin(t)shi(9t)’); %文字說明
最后,可以對圖形進行精細修飾(即圖柄操作):
l 利用對象屬性值設(shè)置
l 利用圖形窗工具條操作
>> set(h,’MarkSize’,10) %數(shù)據(jù)點大小
【例1】繪制正弦曲線y=sin(x),結(jié)果如圖A-6所示。
>> x1=0:0.1:2*pi; %x1的范圍為0~2π,步長為0.1
>> y1=sin(x1); %y1為x1的正弦函數(shù)
>>plot(x1,y1); %繪制2維圖形
>> axis([0 4 0 2]) %將坐標軸范圍設(shè)定為0~4和0~2
2 三維繪圖
首先,三維曲線繪圖函數(shù)plot3進行說明。
【例2】三維曲線繪圖,如圖A-7所示。
>> x=0:0.1:20*pi;
>> plot3(x,sin(x),cos(x)) %按系統(tǒng)默認設(shè)置
除了三維曲線繪圖,還有三維曲面、立體繪圖等,下面的表A-12給出了三維繪圖的一般步驟和典型指令。
表A-12 繪制三維圖形的步驟及典型指令
序號 | 步驟 | 典型指令 |
1 | 三維曲線數(shù)據(jù)準備: l 先取一個參變量采樣向量 l 計算各坐標數(shù)據(jù)向量 | t = t0:dt:t1; x=f(t);y=f2(2);z=f3(t); |
三維曲面數(shù)據(jù): l 產(chǎn)生自變量采樣向量 l 產(chǎn)生自變量格點矩陣 l 計算格點矩陣相應的函數(shù)值矩陣 | x=x0:dx:x1; y=y0:dy:y1; [x, y]=meshgrid(x, y); Z=f(x, y); | |
2 | 選定圖形窗及子圖位置 | figure、subplot |
3 | 調(diào)用三維曲線繪圖指令:線型、色彩、數(shù)據(jù)點型 | plot3(x, y, z,’b-’) |
調(diào)用三維曲面繪圖指令 | mesh(X, Y, Z) | |
4 | 設(shè)置軸的范圍和刻度、坐標分格線 | axis([x0,x1,y0, y1, z0, z1]) grid on |
5 | 圖形注釋:圖名、坐標名、圖例、文字說明 | xlabel、ylabel、zlabel、 title、legend、text |
6 | 著色、明暗、燈光、材質(zhì)處理 | colormap、shading、light、material |
7 | 圖形的精細修飾(圖柄操作) | set,get |