本章介紹MATLAB軟體的一般命令,數組操作和運算函數;繪圖命令,迴圈和選擇結構;通過執行個體練習解決一些簡單問題.
2.1 引言
MATLAB是MATrix
LABoratory的縮寫,由美國MathWorks公司開發的工程計算軟體,迄今已推出了7.1版.當今數學類科技應用軟體可分為兩類,一類是數值計算型,如MATLAB,Xmath,Gauss等,這類軟體擅長數值計算,對處理大批資料效率高;另一類是數學分析型軟體,如Mathematica,Maple等,這類軟體以符號計算見長,能給出解析解和任意精度解,其缺點是處理大量資料時效率高.
現在, MATLAB已經發展為適合多學科,功能強大的大型軟體,成為進階課程的基本教學工具.如MATLAB可以做:
微積分:微分,積分,求極限,泰勒展開,級數求和;
代數:求逆,特徵值,行列式,代數方程解的簡化,數學運算式的指定精度求值;
數值分析:插值與擬合,數值微分與積分,函數逼近,代數方程和微分方程的數值解和符號解.
統計計算:均值,方差,機率,參數估計,假設檢驗,相關性和迴歸分析,統計繪圖,隨機數產生器等.
最佳化問題的求解:線性規劃,非線性規劃等問題的求解.
動態系統類比模擬等.
它已成為大學生,研究生和博士生必須掌握的基本技能.同時, MATLAB也被研究單位和工業部門廣泛應用,使科學研究和解決各種具體問題的效率大大提高.
MATLABIntegration Environment主要包括五部分: MATLAB語言, MATLAB工作環境, 控制代碼圖形,MATLAB數學函數庫, MATLAB API (Application Program Interface).
MATLAB主要有以下特點:
- 運算子和庫函數極其豐富,語言簡潔,編程效率高. MATLAB除了提供和C語言一樣的運算子外,還提供廣泛的矩陣和向量運算子.
- 圖形功能強大.包括對二維和三維資料視覺效果,影像處理,動畫製作等高低層次的繪圖命令.
- 功能強大的工具箱. 工具箱可分兩類:功能性工具箱和學科性工具箱.前者主要用來擴充其符號計算功能,圖示建模模擬,文文書處理及與硬體即時互動的功能.而學科性工具箱是專業性較強的,如最佳化,統計,控制,小波,影像處理和通訊工具箱等.
- 易於擴充.除內建函式外,所有MATLAB的核心檔案和工具箱檔案都是可讀可改的源檔案,使用者可修改檔案和加入自己的檔案,可與庫檔案一樣被調用.
2.1.1 安裝(Windows操作平台)
- 將源光碟片插入光碟機;
- 在光碟片的根目錄下找到MATLAB的安裝檔案setup.exe;
- 滑鼠雙擊該安裝檔案,按提示逐步完成安裝;
- 安裝完成後,在程式欄裡便有了MATLAB選項.
2.1.2 啟動
在"開始程式MatlabMATLAB"中單擊MATLAB.便會出現MATLAB Command Window(即命令視窗).
2.2 MATLAB環境
MATLAB既是一種語言,又是一個編程環境.
2.2.1 命令視窗
命令視窗是使用者與Matlab進行互動的主要場所. Matlab語句的一般形式為:
變數=運算式
如:鍵入:x=4.5斷行符號,將顯示
x=
4.5
再鍵入:y=sin(x*pi)斷行符號,將顯示:
y
=1
';' ',' '...'的作用:
- 運算式後面跟分號';',將不顯示結果;
- 跟','或不跟任何符號,將顯示運算式的計算結果;
- 當一個運算式沒寫完就需換行時,應在該行末鍵入'...'之後再斷行符號換行.如:
s=1-1/2+1/3+1/4+sin(3*x*y)-cos(x)...
-1/8+1/10+1/20
';' ',' '...'的作用:
用於命令列編輯的修飾鍵和方向鍵
- 按''鍵,會顯示剛才鍵入的命令列;
- 反覆按''鍵,可以回調以前鍵入的所有命令列;
- ''鍵可以移動游標;
- 還有'Home','End','Esc'鍵等. 'Esc'清除一行.
變數
- 以字母開頭,後面可跟字母,數字和下短線;
- 大小寫字母有區別,不超過31個字母.
特殊變數名
ans 用於結果的預設變數名; pi 圓周率
eps 電腦的最小數; inf 無窮大; NaN 不定量
i或j -1的開方; realmin 最小可用正實數 realmax 最大可用正實數
工作區
接受Matlab命令的記憶體地區,儲存著命令編輯區輸入的命令和建立的所有變數值.
查看或儲存工作區變數:
who 或whos 顯示當前工作區中的所有變數
clear 清除工作區中的所有變數
clear(變數名) 清除指定工作區的變數
save(檔案名稱) 將當前工作區的變數儲存在一個MAT-檔案中
load(檔案名稱) 調出一個MAT-檔案
quit斷行符號或單擊右上方的'',退出工作區.
2.2.2 程式編輯器
M檔案:命令檔案和函數檔案
1. M檔案的建立
1) 進入程式編輯器(MATLAB Editor/Debug):從'File'菜單中選擇'New'及'M-file'項.
2) 輸入程式
3) 儲存程式:單擊'save'按鈕,出現一對話方塊,在檔案名稱一框中鍵入一檔案名稱,單擊'儲存'.
2. 命令M檔案及其運行
命令M檔案:一些命令列的組合,沒有輸入參數,也不返回輸出參數.如:
% 檔案名稱exl.m
x=4;y=6;z=2;
items=x+y+z
cost=x*25+y*22+z*99
average_cost=cost/items
- 在程式編輯視窗輸入,以名為exl.m的M檔案存磁碟.
- 在Matlab命令編輯視窗輸入exl,便會順序執行該檔案中的命令.
3. 函數M檔案及其調用
函數M檔案的形式為:
fuction [輸出變數列表]=函數名(輸入變數列表)
函數體語句;
如:
function f=f1(x)
f=100*(x(2)-x(1)^2)^2-(1-x(1))^2;
(注意函數M檔案的檔案名稱必須與其函數名相同)
調用格式:
x=[2 3];
f=f1(x)
結果為:f=
99
2.2.3 檔案管理
what 返回目前的目錄下的M,MAT,MEX檔案的列表
dir 列出目前的目錄下的所有檔案
cd 顯示當前的工作目錄
type test 在命令視窗下顯示test.m的內容
delete test 刪除M檔案test.m
which test 顯示M檔案test.m所在的目
2.3 數組和函數
2.3.1 數組的運算
1) 數組的簡單構造:
數組常採用':'和函數'linspace'兩種輸入方式,如:
x=1:5 (從1到5公差為1的等差數組)
x=0:0.1:1 (從0到1,公差為0.1)
x=linspace(0,pi,11) (11個從0到pi的等間隔數)
2) 數組的運算
設a=[a1 a2 a3],b=[b1 b2 b3],c=標量
標量加法a+b=[ a1+c a2+c a3+c]
乘法 a*c=[ a1*c a2*c a3*c]
數組加法 a+b=[ a1+ b1 a2+ b2 a3+ b3]
乘法 a.*b= [a1*b1 a2*b2 a3*b3]
數組右除 a./b= [a1/b1 a2/b2 a3/b3]
左除 a.\b= [b1 /a1 b2/ a2 b3/ a3]
數組求冪 a.^c=[ a1^c a2^c a3^c]
c. ^a=[ a1^c a2^c a3^c]
a.^b= [a1^b1 a2^b2 a3^b3] sort(v) 按升序排列
max(v) 求最大值 min(v) 求最小值 sum(v) 求和 mean(v) 求平均
2.3.2 矩陣的建立
1) 矩陣的直接定義 鍵入: A=[1 2 3;4 5 6]
或鍵入:A=[1 2 3
4 5 6 ]
2) 特殊矩陣
zeros(m,n) ones(m,n) eye(n) rand(m,n) diag(v) triu(x)
3) 矩陣的剪裁和拼接
鍵入:A=[1 2 3 ;4 5 6; 7 8 9];A(3.:) %A的第三行
輸出:ans= 7 8 9
鍵入:B=A(2:3,:) %A的第二,三行
輸出:B=
4 5 6
7 8 9
鍵入:A(:,1) %A的第一列
輸出:ans=
1
4
7
輸入: C=[B,zeros(2,1)]
輸出: C=
4 5 6 0
7 8 9 0
2.3.3 矩陣的運算
+ 矩陣加法 – 矩陣減法 * 乘法 , 轉置 ^ 乘冪 / 左除 \ 右除
如:A是可逆矩陣,AX=B的解是A左除B,即X=A\B; XA=B的解X= B/A. rank(A) 矩陣秩 inv(A) 矩陣的逆 det(A) 行列式 orth(A) 正交化 poly(A) 特徵多項式
2.3.4 數學函數
sin(x) cos(x) tan(x) cot(x) exp(x) log(x) log10(x) sqrt(x) 平方根
朝零方向取整 fix(x) 朝方向取整floor(x) 朝方向取整 ceil(x) 四捨五入到最近的整數round(x) 符號函數sign(x)
2.4 圖形功能
2.4.1 二維圖形
1) 基本繪圖命令
plot(x, y, 'color-linestyle-marker')
x, y------轉折點; color-linestyle-marker-------連線顏色,線型,資料點表徵圖.
顏色:y黃 r紅 g綠 b 藍 w 白 k 黑 m紫 c 灰 -實線 :點線 --虛線
資料點表徵圖: . 小黑點 +加法 *星號 O小圓圈 pentagram 五角星
x=1:8;y=sin(x);plot(x,y,'k : O')
plot(x,y,' O')
x=0:0.1:2*pi; y=sin(x); plot(x,y, 'r:o');
plot(x,y, 'r :');
2) 座標系的控制
axis([xmin xmax ymin ymax]) [ ]中分別給出X軸和Y軸的最小,最大值;
axis equal X軸和Y軸的單位長度相同. axis squrare 圖框呈方形 axis off 取消座標軸
3) 圖形標註
x=linspace(0,2*pi,30);y=[sin(x);cos(x)];plot(x,y);
grid;xlabel('x');ylabel('y');title('sine and cosine curves');
text(3*pi/4,sin(3*pi/4),'\leftarrowsinx');
text(3*pi/2,cos(3*pi/2),'cosx\rightarrow',...
'HorizontalAlignment','right');
(以上命令列可以形成一個M檔案).hold on 把新的圖形畫在原來圖形上.
grid 在圖形上加網格 xlabel ylabel 對X,Y軸加註 title 給整個圖形加標題
text gtext 在圖形中特定位置加字串.若使用gtext('sinx')代替命令text,則在圖形視窗會出現十字線,其交點是字串位置.移動滑鼠可移動交點,點擊滑鼠即可將字串固定.輸出結果如:
4) 多幅圖形
在同一畫面中的多幅不同座標系的圖形,如何作?
x=linspace(0,2*pi,30);y=sin(x);z=cos(x);u=2*sin(x).*cos(x);v=sin(x)./cos(x);subplot(2,2,1),plot (x,y),title('sin(x)'); subplot(2,2,2),plot (x,z),title('cos(x)');
subplot(2,2,3),plot (x,u),title('2sin(x)cos(x)'); subplot(2,2,4),plot (x,v),title('sin(x)/cos(x)');
2.4.2 三維圖形
1) 空間曲線
例:作螺旋線鍵入: t=0:pi/51:10*pi;plot3(sin(t),cos(t),t);
2) 帶網格的曲面
作曲面.鍵入:
x=-7.5:0.5:7.5;y=x;
[X,Y]=meshgrid(x,y); % 三維圖形的X,Y數組
R=sqrt(X.^2+Y.^2)+eps; % +eps是為防止出現0/0
Z=sin(R)./R;mesh(X,Y,Z); % 三維網格表面
3) 等高線
4) 橫條圖和面積圖: 某產品上半年的銷售利潤profit,每月份售出產品的產值expense.
x=1:1:6;
expense=[ 21 34 89 25 22 90];profit=[ 10 20 60 11 9 70]
sale=[ expense; profit]; area(x,sale)
2.5 M檔案的編寫
2.5.1 M檔案
1) 命令M檔案:一些命令列的組合. 函數M檔案:定義函數的程式,具有一定的特定格式;
如: 命令M檔案:x=[2 3];f=cos(x)
函數M檔案:function f=cost(x)
f=100*(x(2)-x(1)^2)^2…
-(1-x(1))^2;
2) 函數M檔案的形式為:
function [輸出變數列表]=函數名(輸入變數列表)
函數體語句:
2.5.2 四種迴圈和選擇控制結構
1) while
關聯運算式 { statements }
end
s=0;n=1
while s<=100
s=s+n^2;n=n+1;
end
n,s
2) for
for x=x1:step:xn
{ statements }
end
如: for k=1:4
x(k)=1/k;
end
format rat %設定輸出格式為有理數
x
例:建立一個函數M檔案求自然數n的階乘.
function f=jch(n)
f=1;
for i=1:n
f=f*I;
end
3) switch 運算式(標量或字串)
case 值1,
語句體1
case {值2.1,值2.2,…}
語句體2
…
otherwise,
語句體n
end
for x=x1:step:xn
{ statements }
end