MATLAB有許多使用方法,但最基本,也是入門時首先要掌握的是MATLAB命令窗口(Command Window)的使用方法。
MATLAB命令窗口是用于輸入數據,運行MATLAB函數和腳本,并顯示結果的主要工具之一。默認情況下,MATLAB命令窗口位于MATLAB Desktop操作界面的中部。另外命令窗口不僅可以內嵌在MATLAB的Desktop操作界面中,單擊命令窗口上的按鈕,然后選擇還可以浮動命令窗口,結果如圖1-12所示。若希望重新將命令窗口嵌入到MATLAB界面中,可以單擊按鈕,然后選擇命令即可。
命令窗口中的“>>”為運算提示符,表示MATLAB正處在準備狀態(tài)。在提示符后面輸入命令并按Enter鍵后,MATLAB將給出計算結果或者相應的錯誤/警告信息,然后再次進入準備狀態(tài)。當MATLAB在命令窗口中顯示“K>>”提示符時,表示當前處于調試模式,鍵入“dbquit”,則可返回正常模式。在MATLAB學生版中,顯示的提示符為“EDU>>”。
1. 命令行的使用
在命令提示符后面可以輸入數據或者運行函數。
【例1】 數據的輸入示例。
>> A = [1 2 3; 4 5 6; 7 8 10]
輸入完矩陣3*3的矩陣A之后按回車鍵,即可運行相應的命令,并完成數據的輸入,得到如下結果。
A =
1 2 3
4 5 6
7 8 10
需要指出的是:MATLAB對于大小寫是敏感的。比如本例中的矩陣賦給了變量A,并不是變量a。
另外,在MATLAB 2014b中,用戶可以在其他地方(網頁或者電子文檔)中復制命令,并粘貼到命令行運行。這是其他語言都可以實現(xiàn)的,沒有什么特別的,但是顯然MATLAB做的更好,它人性化的會將多行命令中每行最開頭的命令提示符自動去掉(命令提示符后面須有空格以供識別),用戶可以直接運行,而不必每行去復制,不必小心的避開命令提示符,這樣用戶在閱讀其他電子材料過程中如果需要驗證結果時就方便多了。
【例2】 算術運算示例。求運算式29*(2+23/3)-52的結果。
在命令行輸入以下命令,然后按回車鍵,即可得到相應的結果。
>> 29*(2+23/3)-5^2
ans =
255.3333
因為用戶沒有指定返回的變量名,所以MATLAB將結果返回給了默認變量名ans。
如果要運行一個系統(tǒng)自帶的或者自己編寫的函數,該函數必須在當前目錄或者在MATLAB的搜索目錄上。默認情況下,MATLAB自帶的函數都是在搜索目錄上,讀者可以直接運行。關于搜索目錄,后面會有詳細介紹。輸入函數及其變量并按回車鍵,MATLAB即可顯示相應的結果。
【例3】 MATLAB魔方函數的運行示例。
>> magic(3)
ans =
8 1 6
3 5 7
4 9 2
在本例中,magic是MATLAB軟件自帶的一個函數。magic函數可以生成每行每列之和相等的魔方矩陣,輸入的magic(3)為生成的魔方矩陣的行數。
在MATLAB中,每次只可以運行一個命令序列。如果MATLAB正在運行一個函數,那么任何輸入的函數會排入隊列,等之前的命令結束后才可以運行。有時候一個程序可能運行很長時間,如果讀者因為發(fā)現(xiàn)了程序的錯誤或者其他原因想要中途中止程序運行的話,可以使用Ctrl+C快捷鍵。
在MATLAB中,命令行會對錯誤的語法格式進行判斷,然后給出可能的正確表達方式。例如本例中如果輸入
>> magic(3
然后運行,命令行則會給出錯誤信息,并自動給出正確的表達形式。
magic(3
|
Error: Expression or statement is incorrect--possiblyunbalanced (, {, or [.
Did you mean:
>> magic(3)
這時用戶直接回車就可以得到正確的結果了。目前語法的自動更正包括括號),],和}的缺失, 賦值符號++,+=, 和-=等,數學表達式2(x+1),函數名大小寫錯誤等。這一功能對用戶尤其是初學者來說就非常方便。
2. 數值、變量和表達式
前一小節(jié)的例子只是MATLAB最簡單的算術運算和函數的運行。在進一步學習之前,有必要了解一些MATLAB的一些基本規(guī)定。本小節(jié)介紹關于變量的若干規(guī)定。
1.數值的表述
MATLAB的數值采用習慣的十進制表示,可以帶小數點或者負號。以下的表述均為合法。
4 -29 0.114 84.249 1.349e-4 6.3e13
在采用IEEE浮點算法的計算機上,數值的相對精度是eps(=2.2204e-16),即大約保持有效數字16位。數值范圍大致為10e-308~10e308,即1×10-309~1×10309。
2.變量的命名規(guī)則
在MATLAB中,變量不用預先聲明就可以進行賦值。變量名、函數名是對字母大小寫敏感的。如變量FU和變量fu表示的是兩個不同的變量。sin是MATLAB定義的正弦函數,而SIN和Sin則不是。當輸入SIN的話系統(tǒng)會提示錯誤,然后給出建議:
>> SIN(3)
Undefined function'SIN' for input arguments of type 'double'.
Did you mean:
>> sin(3)
在MATLAB中,變量名的第1個字符必須是英文字母。變量名最多可包含63個字符。但為了程序可讀性的需要以及編寫方便,變量名稱不宜過長。
MATLAB系統(tǒng)自帶的變量名一般都符合這個命名規(guī)則,名稱不會太長,但是也不會短到難以從字面了解到函數的功能。命名采用英語單詞的縮寫等,一般所見即所得,從名字即可知道函數的功能。
變量名中不得包含空格、標點,但可以包含下劃線,例如myvar_ga。
3.MATLAB默認的預定義變量
在MATLAB中有一些所謂的預定義變量(Predefined variable)。每當MATLAB啟動,這些變量就會生成。建議讀者在編寫程序時,應盡可能不對表1-1中所列的預定義變量名重新賦值,以免產生混淆,致使計算結果錯誤。
表1-1 MATLAB的預定義變量
預定義變量
含 義
預定義變量
含 義
ans
計算結果的默認變量名
NaN或nan
非數,如0/0,¥/¥
eps
浮點相對精度
nargin
函數輸入的變量數目
續(xù)表
預定義變量
含 義
預定義變量
含 義
Inf或inf
無窮大
nargout
函數輸出的變量數目
i或j
虛數單位i=j=
realmax
最大正實數1.7977e+308
pi
圓周率π
realmin
最小正實數2.2251e-308
4.復數
MATLAB將復數作為一個整體處理,而不必像其他程序語言那樣,把實部和虛部分開處理。虛數單位用預定義變量i或者j表示。
【例4】 復數的輸入與相關函數示例。
>> sd=5+6i
sd =
5.0000 +6.0000i
>> r=real(sd) % 給出復數sd的實部
r =
5
>> im=imag(sd) % 給出復數sd的虛部
im =
6
>> a=abs(sd) % 給出復數sd的模
a =
7.8102
>> an=angle(sd) % 以弧度為單位給出復數sd的相位角
an =
0.8761
本例中,每行命令后面的%表示注釋的意思。MATLAB在執(zhí)行命令的時候,會將本行%之后的語句忽略。本文采用這種注釋的方式,目的是讓讀者更加清楚地明白函數語句的意義,同時節(jié)省篇幅。
【例5】 復數矩陣的生成及運算示例。
>> A=[2,4;1,6]-[3,7;3,9]*i
A =
2.0000 -3.0000i 4.0000 - 7.0000i
1.0000 -3.0000i 6.0000 - 9.0000i
>> B=[2+5i,3+2i;6-9i,3-5i]
B =
2.0000 +5.0000i 3.0000 + 2.0000i
6.0000 -9.0000i 3.0000 - 5.0000i
>> C=B-A
C =
0 + 8.0000i -1.0000 + 9.0000i
5.0000 -6.0000i -3.0000 + 4.0000i
從本例可以看出,復數矩陣的輸入可以有多種形式,讀者可通過后面章節(jié)介紹的矩陣構成方法,根據需要生成相應的矩陣。
【例6】 用MATLAB計算-8的立方根。
>> a=-8; % 在命令行的結尾加上分號';'
% 則運行的結果只保存在工作空間內,而不再在命令窗口中顯示出來
>> r=a^(1/3) % 對a開立方根
r =
1.0000 +1.7321i
可見MATLAB在直接計算的過程中給出的是-8在第一象限的根,并不是我們所熟知的-2。若想得到-8的全部立方根,運行以下命令即可。
>> m=[0,1,2]; % 為3個方根而設
>> R=abs(a)^(1/3); % 模的開3次方
>> theta=(angle(a)+2*pi*m)/3; % -pi的3個相位角
>> r=R*exp(i*theta) % 將得到的結果賦給r
r =
1.0000 +1.7321i -2.0000 + 0.0000i 1.0000 - 1.7321i