天天看點

MATLAB 資料分析方法(第2版)1.3 MATLAB基本文法

<b>1.3 matlab基本文法</b>

1.3.1 資料類型

matlab中的基本資料類型有15種,主要是整型、浮點、邏輯、字元、日期和時間、結構數組、單元格數組以及函數句柄等。不論資料是怎樣的類型,在計算機程式中總是以常量與變量的形式出現。

1.常量

在程式執行過程中,其值不能被改變的量為常量。matlab中的常量也稱為數值量,簡單地可了解為具體的數值。例如:

1)整型常量:如12、78、109。

2)實數(浮點)型常量:如5、+5、-5.55、0.0056、6.5e-5、100e60、-0.060e-0123。

3)字元型常量:‘a’、‘b’、‘matlab’、‘my name is libin.’等。

可以對常量進行運算,如算術運算、關系運算和邏輯運算等。

matlab預設的數值計算是雙精度型的,且所有數值量在記憶體中也都是以雙精度儲存的,但其顯示格式可有不同形式,通常使用者可在指令行視窗中用格式(format)指令臨時改變顯示方式。比如使用者希望以有理數(rational)形式顯示,則可在指令行視窗中輸入指令“format rational”。例如:

format rational    %改變目前顯示格式為有理數格式

x=0.75%輸入實數0.75

輸出:

x=

 3/4

數“0.75”的有理顯示形式為“3/4”。其他顯示格式還有短格式(short,預設格式)和長格式(long),更多格式參見表1-1所示。

表1-1 資料的輸出格式控制

格式

中文解釋

說明

format

短格式(預設格式)

預設時為預設短格式方式與format short相同

format short

短格式

顯示5位定點十進制數

format long

長格式

顯示15位定點十進制數

format short e

短格式e方式

顯示5位浮點十進制數

format long e

長格式e方式

顯示15位浮點十進制數

format short g

短格式g方式

顯示5位定點或5位浮點十進制數

format long g

長格式g方式

顯示15位定點或15位浮點十進制數

format hex

十六進制格式

以十六進制格式顯示

format+

+格式

以+、-和空格分别表示矩陣中的正數、負數和零元素

format bank

銀行格式

按元、角、分(小數點後具有兩位)的固定格式顯示

format rat

有理數格式

用有理數逼近顯示資料

format compact

壓縮格式

資料之間無空行

format loose

自由格式

資料之間有空行

  

讀者可在指令行視窗中輸入:x=pi然後在不同的輸出格式下輸出x的結果,觀察結果顯示的不同。

2.變量

在程式執行過程中,其值可以被改變的量為變量。每一個變量需有一個變量名,它在記憶體中占有一個記憶體單元。matlab中的變量可用來存放資料,也可用來存放向量或矩陣,并進行各種運算。

變量的命名規則是:①變量名區分字母大小寫;②變量名以字母開頭,可以由字母、數字、下劃線組成,但不能使用标點;③變量名長度不超過63位,最多隻能含有63個字元,後面的字元無效。

為了便于閱讀程式,對變量或程式可作注釋,“%”是注釋符,“%”後面的内容為注釋,對matlab的計算不産生任何影響。

同常量一樣,變量可分為整型、實型(浮點)、字元型等。在指令行視窗的狀态下,所有的變量均存在于工作區中,且不同類型的變量在工作區中一般用不同圖示差別,如字元型變量用圖示“abc”表示等。

3.永久變量

永久變量是變量的一種特殊情況,它在工作區中看不到,但是使用者可直接調用。表1-2列出了永久變量及其含義。

表1-2 永久變量表

名稱

取值

ans 計算結果的預設變量名

pi 圓周率π的近似值(3.1416)

eps 數學中無窮小(epsilon)的近似值(2.2204e-016)

inf 無窮大,如1/0=inf(infinity)

nan 非數,如0/0=nan(not a number),inf/inf=nan

i,j 虛數機關:i=j=-1

realmax 系統所能表示的最大數值

realmin 系統所能表示的最小數值

nargin 函數的輸入參數個數

nargout 函數的輸出參數個數

在matlab中定義變量時應避免與永久變量名重複,以免改變這些常量的值,如果已改變了某個常量的值,可以通過“clear+常量名”指令恢複該常量的初始設定值(當然,也可通過重新啟動matlab系統來恢複這些常量值)。

4.符号變量

matlab提供了符号計算功能。符号計算又稱計算機代數,通俗地說就是用計算機推導數學公式,如對表達式進行因式分解、化簡、微分、積分、解代數方程、求解常微分方程等。符号計算是絕對精确的計算。在matlab中進行符号運算時需要先用syms指令建立符号變量和表達式,如:

&gt;&gt; syms x             %聲明一個符号變量x

syms不僅可以聲明一個變量,還可以指定多個變量及其數學特性,比如:

&gt;&gt; syms x y real%聲明符号變量x、y為實數類型

&gt;&gt; syms x y positive%聲明符号變量x、y為整數類型

建立符号表達式:

syms x y%聲明符号變量x、y

z=x^2+y^2%建立符号表達式

5.變量的查詢與清除

在指令行視窗中,隻要輸入“who”,就可以看到工作區中所有曾經設定并至今有效的變量。如果輸入“whos”,不但會顯示所有的變量,而且會将該變量的名稱、性質等都顯示出來,即顯示變量的詳細資料。在指令行視窗中輸入“clear”,就清除了工作區中的所有變量。如果輸入“clear+變量名”,隻清除工作區中指定變量名的變量。

1.3.2 操作符與運算符

資料變量間的運算是按一定的運算規則進行的,有些規則是由運算符決定的,有些是由matlab指令函數決定的,以下是操作符與運算符的使用規則。

1.操作符

在編輯程式或指令中,當标點或其他符号表示特定的操作功能時就稱其為操作符。表1-3列出了操作符。

表1-3 操作符

操作符

使用說明

 冒号。①m:n産生一個數組\[m,m+1,…,n\];②m:k:n産生一個數組\[m,m+k,…,n\];③a(:,j)取矩陣a的第j列;④a(k,:)取矩陣a的第k行

 分号。①在矩陣定義中表示一行的結束;②在指令語句的結尾表示不顯示這行語句的執行結果

 連續點。一個指令語句非常長,一行寫不完可以分幾行寫,此時在行的末尾加上連續點,表示是一個指令語句

%

 百分号。在程式設計時引導注釋行,而系統解釋執行程式時,%後面的内容不作處理

2.運算符

運算符可分為三類:算術運算符、關系運算符與邏輯運算符。算術運算符是構成運算的最基本的操作指令,可以在matlab的指令行視窗中直接運作。不同的運算符及功能說明見表1-4、表1-5、表1-6。

表1-4 算術運算符

運算符

功能說明

+

 加法運算。兩個數相加或兩個同階矩陣相加。如果是一個矩陣和一個數字相加,則這個數字自動擴充為與矩陣同維的一個矩陣

-

 減法運算。兩個數相減或兩個同階矩陣相減

*

 乘法運算。兩個數相乘或兩個可乘矩陣相乘

/

 除法運算。兩個數或兩個可除矩陣相除(a/b表示a乘以b的逆)

 乘幂運算。數的方幂或一個方陣的多少次方

 左除運算。兩個數ab表示b÷a,兩個可除矩陣相除(ab表示b乘以a的逆)

.*

 點乘運算。兩個同階矩陣對應元素相乘

./

 點除運算。兩個同階矩陣對應元素相除

.

 點乘幂運算。一個矩陣中各個元素的多少次方

 點左除運算。兩個同階矩陣對應元素左除

表1-5 關系運算符

&gt;判斷大于關系

&lt;判斷小于關系

==判斷等于關系

&gt;=判斷大于等于關系

&lt;=判斷小于等于關系

~=判斷不等于關系  

關系運算符主要用于比較數、字元串、矩陣之間的大小或不等關系,其傳回值是0或1。

表1-6 邏輯運算符

&amp;與運算

或運算

~非運算

xor(a,b)異或運算  

邏輯運算符主要用于邏輯表達式和進行邏輯運算,參與運算的邏輯量以0代表“假”,以任意非0數代表“真”。邏輯表達式和邏輯函數的值以0表示“假”,以1表示“真”。

1.3.3 matlab指令函數

matlab系統提供了近20類基本指令函數,它們中一部分是matlab的内部指令,一部分是以m檔案形式出現的函數。這些m檔案形式的函數擴充了matlab的功能,對于這些指令函數可以通過在指令行裡面輸入“help fun”來獲得有關這個指令函數使用的詳細說明,這裡fun是要查詢的指令函數的名字。表1-7列出了基本的數學函數。

表1-7 基本的數學函數表

函數名

sin(x)正弦函數

cos(x)餘弦函數

tan(x)正切函數

exp(x)以e為底的指數

log(x)自然對數

abs(x)絕對值或向量的長度

min(x)最小值

sign(x)符号函數

ceil(x)朝正無窮方向取整

fix(x)朝零方向取整

asin(x)反正弦函數

acos(x)反餘弦函數

atan(x)反正切函數

log10(x)以10為底數的對數

sqrt(x)開平方

max(x)最大值

sum(x)元素求和

round(x)四舍五入到最近的整數

floor(x)朝負無窮方向取整

gcd(x,y)求兩整數最大公約數

數學函數都有一個共同的特點:若自變量x為矩陣,則函數值也為x的同階矩陣,即對x的每一進制素分别求函數值;若自變量x為通常情況下的一個數值,則函數值是對應于x的一個數值。如計算“sin(x)”的一個函數值與一組函數值時,在指令行視窗中寫程式如下:

&gt;&gt; x=pi/3;            %輸入一個數x

&gt;&gt; y=sin(x)%計算函數值y=sin(x)

y =

  0.8660%顯示函數值

&gt;&gt; t=0:pi/3:2*pi;%輸入一組數t

&gt;&gt; z=sin(t)%輸出一組函數值z=sin(t)

z =

  0  0.8660  0.8660  0.0000 -0.8660 -0.8660 -0.0000

繼續閱讀