1-1、基本運算與函數(shù)???
>> (5*2+1.3-0.8)*10/25??
ans =4.2000??
MATLAB會將運算結(jié)果直接存入一變數(shù)ans,代表MATLAB運算後的答案(Answer)并顯示其數(shù)值於螢幕上。
小提示: ">>"是MATLAB的提示符號(Prompt),但在PC中文視窗系統(tǒng)下,由於編碼方式不同,此提示符號常會消失不見,但這并不會影響到MATLAB的運算結(jié)果。??
我們也可將上述運算式的結(jié)果設定給另一個變數(shù)x:??
x = (5*2+1.3-0.8)*10^2/25??
x = 42?
此時MATLAB會直接顯示x的值。由上例可知,MATLAB認識所有一般常用到的加(+)、減(-)、乘(*)、除(/)的數(shù)學運算符號,以及冪次運算(^)。??
小提示: MATLAB將所有變數(shù)均存成double的形式,所以不需經(jīng)過變數(shù)宣告(Variable declaration)。MATLAB同時也會自動進行記憶體的使用和回收,而不必像C語言,必須由使用者一一指定.這些功能使的MATLAB易學易用,使用者可專心致力於撰寫程式,而不必被軟體枝節(jié)問題所干擾。???
若不想讓MATLAB每次都顯示運算結(jié)果,只需在運算式最後加上分號(;)即可,如下例:
y = sin(10)*exp(-0.3*4^2);??
若要顯示變數(shù)y的值,直接鍵入y即可:??
>>y??
y =-0.0045??
在上例中,sin是正弦函數(shù),exp是指數(shù)函數(shù),這些都是MATLAB常用到的數(shù)學函數(shù)。
下表即為MATLAB常用的基本數(shù)學函數(shù)及三角函數(shù):??
小整理:MATLAB常用的基本數(shù)學函數(shù)
abs(x):純量的絕對值或向量的長度
angle(z):復數(shù)z的相角(Phase angle)
sqrt(x):開平方
real(z):復數(shù)z的實部
imag(z):復數(shù)z的虛部
conj(z):復數(shù)z的共軛復數(shù)
round(x):四舍五入至最近整數(shù)
fix(x):無論正負,舍去小數(shù)至最近整數(shù)
floor(x):地板函數(shù),即舍去正小數(shù)至最近整數(shù)
ceil(x):天花板函數(shù),即加入正小數(shù)至最近整數(shù)
rat(x):將實數(shù)x化為分數(shù)表示
rats(x):將實數(shù)x化為多項分數(shù)展開
sign(x):符號函數(shù) (Signum function)。??
當x<0時,sign(x)=-1;??
當x=0時,sign(x)=0;??
當x>0時,sign(x)=1。??
> 小整理:MATLAB常用的三角函數(shù)
sin(x):正弦函數(shù)
cos(x):馀弦函數(shù)
tan(x):正切函數(shù)
asin(x):反正弦函數(shù)
acos(x):反馀弦函數(shù)
atan(x):反正切函數(shù)
atan2(x,y):四象限的反正切函數(shù)
sinh(x):超越正弦函數(shù)
cosh(x):超越馀弦函數(shù)
tanh(x):超越正切函數(shù)
asinh(x):反超越正弦函數(shù)
acosh(x):反超越馀弦函數(shù)
atanh(x):反超越正切函數(shù)??
變數(shù)也可用來存放向量或矩陣,并進行各種運算,如下例的列向量(Row vector)運算:
x = [1 3 5 2];??
y = 2*x+1??
y = 3 7 11 5??
小提示:變數(shù)命名的規(guī)則??
1.第一個字母必須是英文字母 2.字母間不可留空格 3.最多只能有19個字母,MATLAB會忽略多馀字母??
我們可以隨意更改、增加或刪除向量的元素:?
y(3) = 2 % 更改第三個元素??
y =3 7 2 5??
y(6) = 10 % 加入第六個元素??
y = 3 7 2 5 0 10??
y(4) = [] % 刪除第四個元素,??
y = 3 7 2 0 10??
在上例中,MATLAB會忽略所有在百分比符號(%)之後的文字,因此百分比之後的文字均可視為程式的注解(Comments)。MATLAB亦可取出向量的一個元素或一部份來做運算:?
x(2)*3+y(4) % 取出x的第二個元素和y的第四個元素來做運算??
ans = 9??
y(2:4)-1 % 取出y的第二至第四個元素來做運算??
ans = 6 1 -1??
在上例中,2:4代表一個由2、3、4組成的向量
?
若對MATLAB函數(shù)用法有疑問,可隨時使用help來尋求線上支援(on-line help):help linspace??
小整理:MATLAB的查詢命令
help:用來查詢已知命令的用法。例如已知inv是用來計算反矩陣,鍵入help inv即可得知有關(guān)inv命令的用法。(鍵入help help則顯示help的用法,請試看看!) lookfor:用來尋找未知的命令。例如要尋找計算反矩陣的命令,可鍵入 lookfor inverse,MATLAB即會列出所有和關(guān)鍵字inverse相關(guān)的指令。找到所需的命令後,即可用help進一步找出其用法。(lookfor事實上是對所有在搜尋路徑下的M檔案進行關(guān)鍵字對第一注解行的比對,詳見後敘。)??
將列向量轉(zhuǎn)置(Transpose)後,即可得到行向量(Column vector):??
z = x'??
z = 4.0000??
?? 5.2000??
?? 6.4000??
?? 7.6000??
?? 8.8000??
?? 10.0000???
不論是行向量或列向量,我們均可用相同的函數(shù)找出其元素個數(shù)、最大值、最小值等:?
length(z) % z的元素個數(shù)??
ans = 6??
max(z) % z的最大值??
ans = 10??
min(z) % z的最小值??
ans =?? 4??
小整理:適用於向量的常用函數(shù)有:
min(x): 向量x的元素的最小值
max(x): 向量x的元素的最大值
mean(x): 向量x的元素的平均值
median(x): 向量x的元素的中位數(shù)
std(x): 向量x的元素的標準差
diff(x): 向量x的相鄰元素的差
sort(x): 對向量x的元素進行排序(Sorting)
length(x): 向量x的元素個數(shù)
norm(x): 向量x的歐氏(Euclidean)長度
sum(x): 向量x的元素總和
prod(x): 向量x的元素總乘積
cumsum(x): 向量x的累計元素總和
cumprod(x): 向量x的累計元素總乘積
dot(x, y): 向量x和y的內(nèi)積
cross(x, y): 向量x和y的外積(大部份的向量函數(shù)也可適用於矩陣,詳見下述。)?
?
若要輸入矩陣,則必須在每一列結(jié)尾加上分號(;),如下例:??
A = [1 2 3 4; 5 6 7 8; 9 10 11 12];???
A =???
1?2?3?4???
5?6?7?8???
9?10 11?12??
同樣地,我們可以對矩陣進行各種處理:??
A(2,3) = 5 % 改變位於第二列,第三行的元素值??
A =???
1?2?3?4??
5?6?5?8???
9?10 11?12???
B = A(2,1:3) % 取出部份矩陣B??
B = 5 6 5??
A = [A B'] % 將B轉(zhuǎn)置後以行向量并入A??
A =???
1?2?3?? 4?5???
5?6?5?? 8?6???
9?10 11?12?5??
A(:, 2) = [] % 刪除第二行(:代表所有列)??
A =???
1?3?4?5???
5?5?8?6???
9?11 12?5??
A = [A; 4 3 2 1] % 加入第四列???
A =???
1?3?? 4?? 5???
5?5?? 8?? 6???
9?11?12?5??
4?3?? 2?? 1??
A([1 4], :) = [] % 刪除第一和第四列(:代表所有行)??
A =???
5?5?? 8?? 6???
9?11?12?5??
這幾種矩陣處理的方式可以相互疊代運用,產(chǎn)生各種意想不到的效果,就看各位的巧思和創(chuàng)意。??
小提示:在MATLAB的內(nèi)部資料結(jié)構(gòu)中,每一個矩陣都是一個以行為主(Column-oriented )的陣列(Array)因此對於矩陣元素的存取,我們可用一維或二維的索引(Index)來定址。舉例來說,在上述矩陣A中,位於第二列、第三行的元素可寫為A(2,3) (二維索引)或A(6)(一維索引,即將所有直行進行堆疊後的第六個元素)。??
此外,若要重新安排矩陣的形狀,可用reshape命令:??
B = reshape(A, 4, 2) % 4是新矩陣的列數(shù),2是新矩陣的行數(shù)??
B =??
5?? 8???
9?? 12???
5?? 6??
11?5??
小提示: A(:)就是將矩陣A每一列堆疊起來,成為一個行向量,而這也是MATLAB變數(shù)的內(nèi)部儲存方式。以前例而言,reshape(A, 8, 1)和A(:)同樣都會產(chǎn)生一個8x1的矩陣。?
MATLAB可在同時執(zhí)行數(shù)個命令,只要以逗號或分號將命令隔開:??
x = sin(pi/3); y = x^2; z = y*10,
z =???
7.5000??
若一個數(shù)學運算是太長,可用三個句點將其延伸到下一行:?
z = 10*sin(pi/3)* ...??
sin(pi/3);??
若要檢視現(xiàn)存於工作空間(Workspace)的變數(shù),可鍵入who:??
who??
Your variables are:??
testfile x??
這些是由使用者定義的變數(shù)。若要知道這些變數(shù)的詳細資料,可鍵入:??
whos??
Name Size Bytes Class?
A 2x4 64 double array??
B 4x2 64 double array??
ans 1x1 8 double array??
x 1x1 8 double array??
y 1x1 8 double array??
z 1x1 8 double array??
Grand total is 20 elements using 160 bytes??
使用clear可以刪除工作空間的變數(shù):??
clear A??
A??
??? Undefined function or variable 'A'.??
另外MATLAB有些永久常數(shù)(Permanent constants),雖然在工作空間中看不到,但使用者可直接取用,例如:??
pi??
ans = 3.1416??
下表即為MATLAB常用到的永久常數(shù)。??
小整理:MATLAB的永久常數(shù) i或j:基本虛數(shù)單位
eps:系統(tǒng)的浮點(Floating-point)精確度
inf:無限大,例如1/0 nan或NaN:非數(shù)值(Not a number),例如0/0
pi:圓周率 p(= 3.1415926...)
realmax:系統(tǒng)所能表示的最大數(shù)值?
realmin:系統(tǒng)所能表示的最小數(shù)值
nargin: 函數(shù)的輸入引數(shù)個數(shù)
nargin: 函數(shù)的輸出引數(shù)個數(shù)??
?
?
本文導航
- 第 1 頁:MATLAB入門教程之MATLAB的基本知識
- 第 2 頁:1-2、重復命令
- matlab(228270)
評論
查看更多