基本操作
把matlab當(dāng)作計算器使用
把matlab當(dāng)計算器使用基本符合常識溪烤,不過多贅述(下同甩挫,著重記錄與常識有出入的地方)。
需要注意的有:
-
=
表示賦值笆包,判斷是否相等用==
宵距; - matlab中沒有
ln( )
函數(shù)腊尚,log( )
默認(rèn)以e
為底; -
matlab中要表示自然對數(shù)
e
,用exp(1)
表示即可满哪;表示以e
為底數(shù)的指數(shù)函數(shù)用exp(n)
(e的n次方)
變量
- 與一般語言不同婿斥,matlab對于變量可以直接使用,不需要提前聲明哨鸭;
- matlab變量大小寫敏感民宿;
- matlab中變量命名規(guī)則與c一致;
- matlab已有的保留變量不適合做變量名像鸡,調(diào)用
iskeyword
命令查看活鹰。
課件問題:
- matlab大小寫敏感,大寫與小寫有區(qū)別
- matlab的變量不能以數(shù)字開頭
變量類型
對于matlab的變量類型可以是如下這些:
對于數(shù)值變量只估,不顯示指明變量類型志群,默認(rèn)double類型,就數(shù)模而言基本足夠蛔钙。
避免使用與函數(shù)赖舟、腳本同名的變量
若出現(xiàn)與函數(shù)同名的變量名,調(diào)用時優(yōu)先當(dāng)作變量名處理夸楣。
cos='This string.';
cos(8) % 對字符串進(jìn)行索引取值,得到'r'
出現(xiàn)這種情況可以使用clear
+變量名
清除該變量,即clear cos
便可正常使用cos( )
函數(shù)子漩。
順帶一提
clear
:清除workspace內(nèi)所有變量(即清空存儲區(qū))
clear <name>
:清除name
變量
clc
:清空終端窗口(變量依然存在)
格式控制
一些常用的命令:
- 緊湊顯示格式:
format compact
- 寬松顯示格式:
format loose
- 數(shù)據(jù)高精度顯示:
format long
- 數(shù)據(jù)低精度顯示:
format short
- 以分?jǐn)?shù)顯示:
format rat
值得一提的是豫喧,無論以分?jǐn)?shù)顯示還是以小數(shù)顯示,其在matlab內(nèi)部存儲的值都是一樣的幢泼。
另外需要注意:
- 如果原數(shù)值是無理數(shù)紧显,顯示的分?jǐn)?shù)是在一定誤差范圍內(nèi)的有理分式近似值
- 可以通過
R = rat(x)
將小數(shù)x
以分?jǐn)?shù)的形式賦值給R
,該分?jǐn)?shù)實際上是一個字符串缕棵,也就是說R儲存的將是一個字符串
- 在一行命令后緊接著
;
孵班,使結(jié)果不顯示在終端窗口中
一點補充
who
:顯示工作區(qū)內(nèi)所有的變量
whos
:顯示工作區(qū)內(nèi)所有變量的詳細(xì)信息
whos <name>
:顯示變量name
的詳細(xì)信息
矩陣運算
矩陣的定義
區(qū)分vector與matrix:vector指向量,matrix指矩陣招驴,而array則是兩者的統(tǒng)稱篙程。
,
和空格
用來間隔列column
,;
用來間隔行row
a = [1 2 3]; %這是一個行向量
b = [4, 5, 6]; %這也是一個行向量
c = [7; 8; 9]; %這是一個列向量
向量乘法
行向量乘列向量結(jié)果是一個數(shù)别厘,而列向量乘行向量結(jié)果是一個矩陣:
>> a=[1 4 6];
>> b=[3;4;8];
>> a*b % 行向量乘列向量
ans =
67
>> b*a % 列向量乘行向量
ans =
3 12 18
4 16 24
8 32 48
矩陣索引
可以有多種索引方式虱饿,普通的a(x, y)
即第x行,第y列;
a(n)
即從第一列開始依次1氮发、2渴肉、3......;如圖
比較特殊的索引:
特別注意
A([1 3 5])
爽冕、A([1 3; 1 3])
及A([1 3], [1 3])
三者的區(qū)別
>> A=[1 21 6; 5 17 9; 31 2 7];
>> A([1 3 5])
ans =
1 31 17
>> A([1 3; 1 3])
ans =
1 31
1 31
>> A([1 3], [1 3])
ans =
1 6
31 7
使用:
創(chuàng)建向量
-
x = j:k
創(chuàng)建一個包含元素[j,j+1,j+2,...,j+m]
的單位間距向量 x -
x = j:i:k
創(chuàng)建一個j
為起點仇祭,k
為終點,步長為i
的向量
str = 'a':2:'z'
將給出一個字符串:'acdfh....z'
賦值給str
使用:
索引
使用A(3,:)
索引矩陣A
的整個第三行
A(3,:)=[]
使矩陣A
的整個第三行等于空矩陣:
矩陣串聯(lián)
兩個行數(shù)相同的矩陣可以通過,
或空格
橫向串聯(lián)颈畸。即[A,B]
或[A B]
注意
A+B
并不能實現(xiàn)矩陣串聯(lián)乌奇,而是矩陣加法
兩個列數(shù)相同的矩陣可以通過;
縱向串聯(lián)。F=[[A,B];C;D]
實現(xiàn)下圖:
矩陣運算
- 矩陣加減運算均為對應(yīng)元素的加減
- 矩陣乘除運算區(qū)分
.*
,./
與*
,/
.*
為對應(yīng)元素相乘承冰,而普通的*
則為矩陣乘法华弓。 - 矩陣的乘方
^
與矩陣乘除法類似偏形,.^
為對應(yīng)元素的乘方爸舒。 - 矩陣轉(zhuǎn)置
'
衔蹲,即為現(xiàn)代中的轉(zhuǎn)置促绵。
% 轉(zhuǎn)置的一點運用
>> M=rand(4)
M =
0.8147 0.6324 0.9575 0.9572
0.9058 0.0975 0.9649 0.4854
0.1270 0.2785 0.1576 0.8003
0.9134 0.5469 0.9706 0.1419
>> mean(M)
ans =
0.6902 0.3888 0.7627 0.5962
>> mean(M')'
ans =
0.8404
0.6134
0.3408
0.6432
% 直接使用 mean( ) 函數(shù)是對每一列求平均數(shù)(下面的內(nèi)容)长酗,
% 而有時候需要對每一列求平均數(shù)漠秋,則可以將 M 轉(zhuǎn)置后求平均
% 再轉(zhuǎn)置為一列肉盹,即對應(yīng)于原來矩陣每一行的平均數(shù)俺陋。
一些特殊矩陣
-
linspace(x,y,n)
:線性間隔的向量百宇。從x到y(tǒng)均等的給出n個數(shù)考廉;
linspace(x,y)
:從x到y(tǒng)均等的給出100個數(shù)。 -
logspace(a,b)
:在 10a 和10b之間生成50個對數(shù)間距點携御;
logspace(a,b,n)
:在10a和10b之間生成n個對數(shù)間距點;
注意不是均分
% logspace()不是均分
>> logspace(1,2,3)
ans =
10.0000 31.6228 100.0000
-
eye(n)
:n×n單位矩陣 -
diag()
:對角矩陣 -
rand()
:均勻分布的隨機(jī)數(shù)(服從[0,1]上均勻分布)
一些矩陣相關(guān)的函數(shù)
-
max(A)
:給出每一列中最大的數(shù) -
max(max(A))
:則可給出整個矩陣最大值
% max(A):給出每一列中最大的數(shù)
>> A=[8 1 6;3 5 7;4 9 2]
A =
8 1 6
3 5 7
4 9 2
>> max(A)
ans =
8 9 7
>> max(max(A))
ans =
9
- 左邊一欄均類似給出每一列中xx昌粤,
mean()
:平均數(shù)
對于右邊一欄
-
sort(A)
:對于每一列,從小到大排序啄刹。若只有一行涮坐,則對行從小到大排 -
sortrows(A)
:以行為單位(每行的數(shù)固定),按照第一列的數(shù)從小到大排
>> A=[8 1 6;3 5 7;4 9 2]
A =
8 1 6
3 5 7
4 9 2
>> sort(A) % 對每一列從小到大排序
ans =
3 1 2
4 5 6
8 9 7
>> sortrows(A) % 以行為單位誓军,按照每行第一個數(shù)的大小對行排序
ans =
3 5 7
4 9 2
8 1 6
>> a=[4 6 2];
>> sort(a) % 若只有一行袱讹,則sort對行從小到大排
ans =
2 4 6
-
size(A)
:給出行寬和列寬 -
length(A)
:給出行寬(列數(shù))
>> A=rand(3,5)
A =
0.4218 0.9595 0.8491 0.7577 0.6555
0.9157 0.6557 0.9340 0.7431 0.1712
0.7922 0.0357 0.6787 0.3922 0.7060
>> size(A) %給出行寬和列寬
ans =
3 5
>> length(A) %給出行寬
ans =
5
-
find(A==x)
:給出矩陣A中等于x的元素位置(以列的形式呈現(xiàn))
>> A=magic(3) % 給出一個3x3的magic矩陣
A =
8 1 6
3 5 7
4 9 2
>> A(3,2)=7; % 將(3,2)位置處的元素賦值為7
>> find(A==7) % 給出矩陣中等于7的元素位置
ans =
6
8
使用 strlength 而非 length 來確定字符串?dāng)?shù)組的每個元素中的字符數(shù)量。
length(str)結(jié)果為3
習(xí)題
%%
cos(sqrt((1+2+3+4)^3/5))
%sqrt( )是matlab內(nèi)置的平方根函數(shù)
%%
sin(sqrt(pi))+log(tan(1))
%matlab中沒有l(wèi)n( )函數(shù)昵时,log( )默認(rèn)以e為底
%%
2^(3.5*1.7)
%%
exp(sin(10))
%matlab中要表示自然對數(shù)e捷雕,用exp(1)表示即可;表示以e為底數(shù)的指數(shù)函數(shù)用exp(n)(e的n次方)
format rat; %調(diào)整成分?jǐn)?shù)顯示
ans=3/13+4/14+5/15
format long; %調(diào)整成高精度小數(shù)顯示
ans=3/13+4/14+5/15
以上內(nèi)容為個人筆記壹甥,部分圖片來源于郭老師課件或課程截圖救巷。
筆記匯總:MATLAB基礎(chǔ)教程
課程視頻:https://www.bilibili.com/video/BV1DA411Y7bN
課件下載:MATLAB教程-提取碼:7777
郭彥甫老師的YouTube主頁:@Yanfu Kuo
原視頻:https://www.youtube.com/watch?v=KHFZLkm9qs0&t=8s