matlab中常用的command窗口命令
上下鍵――切換到之前、之後的命令,可以重複按多次來達到你想要的命令
clc――清除命令窗口顯示的語句,此命令並不清空當前工作區的變量,僅僅是把屏幕上顯示出來的語句清除掉
clear――這個纔是清空當前工作區的變量命令,常用語句clear all來完成
clf 清除圖形窗中顯示內容
Command history windows
歷史命令窗口記錄所有運行過的命令。當退出MATLAB或運行clc命令時,命令窗口將會被清空,但歷史命令窗口仍然會保存所有運行過的命令。
1.編輯菜單可以清空該窗口中的命令。Edit-clear command history
2.雙擊歷史命令窗口中的命令行就可以把該命令調回命令窗口運行。
3.單擊並拖拽命令代碼到命令窗口也可運行歷史命令
Workplace
工作區記錄命令窗口中已經運行過變量。
ans是matlab中默認的結果變量. 每次matlab進行運算後, 結果都要儲存在指定的變量中. 如果你只是輸入表 達式, 卻不指定把表達式的運算結果儲存在哪個變量裏面, 那麼matlab就自 動地將結果儲存在ans變量中. 直到下一次不帶指定存儲變量的運算結束前, ans中 所儲存的值不變.
float是單精度浮點數,它的範圍可以取到-3.40292347E+38到+3.40292347E+38之間
double是雙精度浮點 ,它的範圍可以取到-1.79769313486231570E+308到+1.79769313486231570E+308之間
單精度浮點變量與雙精度浮點變量在內存的佔用上是不同的.一般float是4個字節,而double是8個字節
Matlab 變量命名規則
變量名必須以字母開始,區分大小寫,最長變量名爲63個字符,可以用namelengthmax來保證
變量名中允許使用的字符僅包括:字母,數字和下劃線。可以用isvarname來覈實變量名的有效性。與其它計算機語言類似,數字1表示true, 數字0表示false
Isvarname time ;
MATLAB中保留的關鍵字不能作爲變量名。用戶可以使用命令iskeyword查看系統預定義的關鍵字
MATLAB允許重新指定內置函數名作爲變量名。
sin = 4
但這樣做是很危險的,因爲函數內置sin就不能再被使用了。可以輸入下述命令將sin恢復到函數功能
clear sin
MATLAB中可以用which來檢查一個變量是否爲內置函數
Which sin
MATLAB中標量的運算
運算 |
算術語法 |
MATLAB語法 |
加 |
a+b |
a+b |
減 |
a-b |
a-b |
乘 |
a×b |
a*b |
除 |
a÷b |
a/b |
指數 |
ab |
a^b |
Linspace 和logspace
等差數列用linspace來定義,確定數組中初始元素、最終元素和步數。
Eg: a=linspace(1,10,3)
等比數列用logspace來定義,需要輸入三個值:前兩個分別作爲10的指數,最後一個是數組中元素的個數。
Eg: b=logspace(1,3,3)
簡單的矩陣運算
矩陣和標量進行運算:可以使用算術運算
a=[1 2 3]
b=a+5
c=a*5
矩陣運算中的乘、除、平方
相乘.* ; 相除:./ ; 冪運算:.^
a=[1 2 3] ; b=[4 5 6] ; c=[7 8 9 ]
a.*b
b./a
c.^a
MATLAB的矩陣運算能力適合進行重複運算。
例如:假設需要把多個角度值轉換成弧度值。
首先輸入矩陣的值,角度值分別爲10,15,70,90
degrees=[10,15,70,90]
若將其轉換成弧度,則需要乘以π/180
Radians= degrees*pi/180或degrees.*pi/180
注:在matlab中,π值用內置的浮點數pi表示。因爲π是一個無理數,它不能用一個浮點數精確表示。所以matlab用一個近似的常數pi來表示。在三角函數中sin(pi)的值爲0,但matlab卻返回一個很小的值1.2246e-016就是這個原因。
數值顯示-科學計數法
一般情況下,十進制數可以表示所有數值,但太大或太小的數值難以用基本的十進制數表示。
Eg:阿弗加德羅常數=602 200 000 000 000 000 000 000
科學記數法表示爲:6.022×1023
在matlab中,科學記數法是在十進制小數部分與指數部分之間放置字母e
Eg: Avogadro’s_constant=6.022e23
注:一般來說,科學記數法採用10的冪來表示,但很多人經常把這種命名方法與數學上的自然數e相混淆,數學上e=2.7183。在matlab中e的指數用exp函數表示,
eg:exp(3)=e3
數值顯示-顯示格式
在MATLAB裏有多種顯示格式,無論選擇哪一種,MATLAB都使用雙精神浮點數進行計算。雙精度浮點數有16位十進制有效數字,改變顯示方式不會改變計算結果的精確度。也就是說無論用哪種顯示格式,進行運算時使用雙精度浮點數。除非調用特殊的函數,否則matlab不區分整數和浮點數。
Matlab命令 |
顯 示 |
實 例 |
format short |
4位有效數字 |
|
format long |
14位有效數字 |
|
format short e |
4位有效數字科學記數法 |
|
format long e |
14位有效數字科學記數法 |
|
format bank |
僅顯示實際值2位有效數字 |
|
format short eng |
4位有效數字的工程記數法 |
|
format long eng |
14位有效數字的工程記數法 |
|
format + |
只顯示+和-號 |
|
format rat |
分數形式 |
|
format short g |
Matlab自動選擇最佳顯示格式 |
|
format long g |
Matlab自動選擇最佳顯示格式 |
|
常用數學函數
abs(x) |
求x的絕對值 |
sqrt(x) |
求x的平方根 |
Nthroot(x,n) |
求x的n次方實數根,函數的輸出結果不能是複數 |
sign(x) |
如果x大於0輸出1;如果如果x等於0輸出0;如果如果x小於0輸出-1 |
rem(x,y) |
求x/y的餘數 |
Exp(x) |
計算ex,其中e是自然對數的底,數值約等於2.7183 |
Log(x) |
計算ln(x),它是x的自然對數(底爲e) |
Log10(x) |
計算lg(x),x的常用對數(底爲10) |
Log2(x) |
以2爲底的對數,其它數值爲底的對數運算需要間接求得。Matlab未提供通用的對數運算函數 |
取 整 函 數
round(x) |
對x四捨五入 |
round(8.6) ans=9 |
fix(x) |
對x取整,捨棄小數點後的數值 |
fix(8.6) ans=8 |
floor(x) |
對x負向取整 |
floor(-8.6) ans=-8 |
ceil(x) |
對x正向取整 |
ceil(-8.6) ans=-8 |
離散數學中的函數
factor(x) |
對x進行因式分解 |
gcd(x,y) |
找出x和y的最大公因數 |
lcm |
找出x和y的最小公倍數 |
rats(x) |
用分數表示x |
factorial(x) |
計算x的階乘,如6!=6×5×4×3×2×1 |
nchoosek(n,k) |
計算n中選k的組合數。如10中選3的可能組合數爲120 |
primes(x) |
提出小於x的素數 |
isprime(x) |
檢查x是否爲素數,若x是素數,則返回1;否則,返回0 |
三角函數
sin(x) |
X用弧度表示,計算x的正弦值 |
cos(x) |
X用弧度表示,計算x的餘弦值 |
tan(x) |
X用弧度表示,計算x的正切值 |
asin(x) |
X的取值在[-1,1]區間內,計算反正弦值,返回值在[-π/2, π/2]區間內 |
sinh(x) |
X用弧度表示,計算x的雙曲正弦值 |
asinh(x) |
計算x的反雙曲正弦值 |
sind(x) |
X用角的度數表示,計算x的正弦值 |
asind(x) |
計算反正弦,結果用角的度數表示 |
數據分析函數-最大值和最小值
max(x) |
(1)求出矢量x的最大值。例如x=[1 5 3]最大值是5。 (2)創建一個包含矩陣x中每列最大值的行矢量。 |
[a,b]=max(x) |
求矢量x中元素的最大值和最大值的位置,a表示最大值,b表示最大值的位置。 若x是矩陣,此函數生成兩個行矢量,一個行矢量表示x各列的最大值,另一個行矢量對應最大值元素的位置。 |
max(x,y) |
矩陣x和y具有相同的行和列,用兩個矩陣中相同位置元素的最大值創建一個新的矩陣 |
min(x) |
(1)求矢量x的最小值 (2)創建一個包含矩陣x中每列最小值的行矢量。 |
[a,b]=min(x) |
求矢量x中元素的最小值和最小值的位置,a表示最小值,b表示最小值的位置。 若x是矩陣,此函數生成兩個行矢量,一個行矢量表示x各列的最小值,另一個行矢量對應最小值元素的位置。 |
min(x,y) |
矩陣x和y具有相同的行和列,用兩個矩陣中相同位置元素的最小值創建一個新的矩陣 |
數據分析函數-平均值和中間值
mean(x) |
(1)求矢量x的平均值。 (2)當x爲矩陣時,返回值是含有各列平均值的行矢量。 |
median(x) |
(1)求矢量x元素的中間值 (2)當x爲矩陣時,返回值是含有各列中間值的行矢量。 |
mode(x) |
求數組中出現次數最多的數,即衆數。 |
median與mode
median的用法:如果數組有奇數個,中間值就是將數組按大小順序排列,取中間的那個數作爲中值;如果數組有偶數個,那麼就去中間那兩個數的平均值。
mode的用法:求數組中出現次數最多的數;如果數組中的數出現的頻率相同,則返回數值最小的數。
數據分析函數-求和與乘積
sum(x) |
(1)求矢量x各元素之和。 (2)若x是矩陣,返回結果是包含各列元素之和的行矢量。 |
prood(x) |
(1)求矢量x各元素的乘積。 (2)若x是矩陣,返回結果是包含各列元素乘積的行矢量。 |
cumsum(x) |
(1)求x元素的累加和。 (2)若x是矩陣,計算矩陣各列元素的累加和。 |
cumprod(x) |
(1)求x元素的累積。 (2)若x是矩陣,計算矩陣x各列元素的累積。 |
數據分析函數-排序
Sort(x) |
(1)對矢量x按升序排列。 (2)若x是矩陣,則按列進行升序排序。 |
Sort(x,’ descend’) |
各列按降序排列。 |
Sortrows(x) |
以矩陣第一列爲標準,升序排列矩陣各行。 |
Sortrows(x,n) |
以矩陣第n列的數據爲標準,按升序排序矩陣各行。若n爲負數,則按降序排列,如果沒有指定n的值,則以第一列爲標準,按升序行排列。 |
數據分析函數-規模函數
size(x) |
求矩陣x的行數和列數。若x爲多維數組,則size用來求數組的維數和長度。 |
[a,b]=size(x) |
確定矩陣x的行數和列數,a表示行數,b表示列數。 |
length(x) |
確定矩陣的最大長度 |
數據分析函數-標準差和方差
std(x) |
(1)計算矢量x的標準差。但標準差一般只計算大規模數據集。 (2)計算矩陣各列數據的標準差。再次強調,標準差僅限於分析大規模數據集。 |
var(x) |
計算x的方差。但方差一般只計算大規模數據集。標準差是方差的平方根。 |
特殊函數
pi |
數學常數π |
|
i |
虛數 |
|
j |
虛數 |
|
inf |
無窮大,數據溢出或除數爲0時的輸出 |
5/0 |
NaN |
非數,當計算沒有被定義時發生 |
Inf/inf |
clock |
爲了增加返回結果可讀性,函數clock和fix一起使用 |
fix(clock) |
date |
當前日期。該函數與clock類似,不同之處在於返回的日期採用字符串格式。 |
date |
eps |
最接近1的雙精度浮點數與1的距離,即Matlab中的最小極限 |
eps |
Matlab的矩陣運算
創建矩陣
矩陣合併
從矩陣中提取信息
矩陣特性的運用
冒號的使用
冒號運算符常用於定義一個新矩陣或修改原有矩陣。例如利用冒號可以定義一個等差數列。
在進行數值計算時,常用冒號從矩陣中提取數據。如果冒號用在代表行或列的序號位置,則表示所有的行或所有的列。
M=[1 2 3 4 5;2 3 4 5 6;3 4 5 6 7]
提取矩陣第一列的命令爲:
x=M(:,1)
上面的語句可理解爲提取第1列的所有行。
如果不需要提取整行或整列,冒號可理解爲從…行到…行或從…列到…列。
y=M(2:3,:)
語句的含義可以理解爲提取第2行到第3行的所有列
Z=M(2:3,4:5)
語句的含義爲提取第2行到第3行的第4列到第5列數據。
如果在矩陣名後直接加上冒號M(:),就會把原矩陣變成一個列矢量
事實上,在計算機內部並不是按照二維的形式存儲二維矩陣的,而是把矩陣看成是一個長的列表。
矩陣中數字的提取
如果需要從矩陣中提取數字,則可採用種方法,即用序號標示或用行和列標示
Eg:M=[1 2 3 4 5;2 3 4 5 6;3 4 5 6 7]
M(8);或M(2,3)
序號標示是按列開始數數字的序號
如果不知道矩陣有多少行或多少列,則可以用單詞end表示最後一行或最後一列
Eg:M(1,end)
M(end,end)
M(end)
特殊矩陣
zeros(m) |
創建m×m的全零矩陣 |
zeros(m,n) |
創建m×n的全零矩陣 |
ones(m) |
創建m×m的全1矩陣 |
ones(m,n) |
創建m×n的全1矩陣 |
diag(A) |
提取二維矩陣A中的對角元素 |
fliplr |
對矩陣的列進行左右對稱翻轉 |
flipud |
對矩陣的行進行上下對稱翻轉 |
Matlab繪圖
繪製二維圖形,並對二維圖形進行標註
調整圖形
子圖窗口的劃分
繪製三維圖形
使用交互繪圖工具
二維圖
簡單的x-y座標圖,就可以根據x,y的值繪製圖形。假設根據測量結果獲得一組時間和距離的數據。
x=[0:2:16];
y=[0,0.33,4.13,6.29,11.19,13.19,13.96,16.33,18.17];
以x,y爲參數,用plot命令描繪各點:
plot(x,y)
在實際工程中往往要給出圖形的標題,以及座標軸上變量的單位。用以下命令可以在圖形上添加相應的標題、x軸和y軸的標註,以及柵格:
plot (x,y)
xlabel(‘Time,sec’)
ylabel(‘Distance,ft’)
grid on
也可以將上述語句合併在一起用逗號隔開寫成一行或兩行:
plot (x, y), title (‘Laboratory Experiment 1’)
xlabel(‘Time,sec’) , ylabel(‘Distance,ft’),grid
輸入上面的命令時,單引號(‘)後的內容變爲紅色,用於提示輸入字符串。輸入後面的單引號後顏色變成紫色,提示輸入的字符串結束。
在添加標題和座標軸標註前要先創建圖形,否則繪圖命令會刪除前面已經設置的標註。
命令xlabel,ylabel和title中的字符串一般用單引號結束。在Matlab中也可以使用撇號(如it’s)。輸入兩個單引號中間可以用撇號隔開,但不能使用雙引號。
基本繪圖功能
plot |
創建一個x-y座標圖 |
plot(x,y) |
title |
添加標題 |
title(‘My Graph’) |
xlabel |
添加x軸標註 |
xlabel(‘time’) |
ylabel |
添加y軸標註 |
ylabel(‘distance’) |
grid |
添加柵格 |
grid,grid on,grid off |
pause |
暫停程序,觀察圖形 |
|
figure |
定義當前圖形 |
figure ,figure(2) |
hold |
保存圖形 |
hold on/hold off |