matlab矩陣操作


Matlab操作矩陣的相關方法

下面這篇文章主要是對吳恩達老師機器學習中matlab操作的一個整理和歸納

一、基本操作

1.生成矩陣(ones、zeros)

A = [1 2;3 4;5 6]             #生成3行4列的矩陣

B = [1 2 3]                      #B就是一個行向量

C = [1;2;3]                      #定義c為一個列向量

D = 1:0.1:2           #定義開始值為1,步長為0.1,結束值為2的一個行向量

E = 1:6                  #定義開始值為1,步長默認為1,結束值為6的行向量

 

ones(2,3)     #矩陣中所有元素都為1 定義一個2行3列的矩陣

zeros(2,3)   #矩陣中所有的元素都為0 定義一個2行3列的矩陣

 

2.生成隨機矩陣(rand、randn)

rand(1,3)         #生成1行3列的隨機矩陣

randn(2,3)      #生成高斯隨機矩陣,高斯隨機矩陣即為標准差或方差為1

 

3.生成單位矩陣(eye(n))

eye(n)        #生成n行n列的單位矩陣

 

4.幫助命令(help)

help 變量名     #可查看函數的API詳解

 

二、移動數據

1.操作.txt文件(load)

1.1 加載.txt文件並且拆分文件的行和列的值

data = load('文件路徑')      #加載文件

 

獲取多列的數據(獲取多行的數據和多列類似,只需要修改第一個參數即可)

data(:,1)     #拿到所有行第一列的數據

data(:,1:2)   #拿到所有行第一列和第二列的數據

data(:,1:3)   #拿到所有行第一列、第二列和第三列的數據

data(:,[1,3])  #拿到所有行第一列和第三列的數據

 

將矩陣所有的數據扁平化為一列

data(:)

將矩陣所有的數據扁平化為一行

data(:)'

 

1.2 將數據保存為.txt文件

v = data(:,1)     #拿到第一列的數據

save test.txt v -ascii   #將數據保存到test.txt文件中

 

2.矩陣的操作

2.1 獲得矩陣的行數和列數(size())

size(A)     #返回一個1行2列的矩陣  分別是矩陣的行數和列數

size(A,1)    #返回矩陣的行數

size(A,2)    #返回矩陣的列數

 

2.2 拿到矩陣的最大維度(length())

length(A)     #獲得矩陣的行數和列數中維度較大的一個

 

2.3 通過矩陣索引獲取某一個值

A(m,n)      #索引到矩陣m行n列的位置

 

2.4 修改矩陣的某一行或者某一列

A(:,2) = [10;11;12]    #修改矩陣第二列的數據

 

2.5 在矩陣中添加一行新的數據

A = [A,[10;11;12]]      #向矩陣中添加一行新的數據

C=[A B] 

2.6 矩陣的結合

橫向結合:

A = [1 2;3 4;5 6]

B = [11 12;13 14;15 16]

C = [A B]

 

縱向結合:

C= [A;B]

 

三、計算數據

1.A.*B(矩陣之間的乘積)

A .*B    # A中對應位置元素和B中對應位置元素的乘積

 

2.A.^2 (矩陣自身的平方)

A.^2    #矩陣A的平方(A矩陣中的每個元素都平方)

 

3.1./A(矩陣中每個元素的倒數)

1./A 矩陣A中每個元素分別求倒數

 

4.log(A) (對矩陣中每個元素求對數) ,exp(A)(對A中的每個元素以e的底數)

5.abs(A)(對矩陣中的每個元素求絕對值)

6.-A(對矩陣中的每個元素求相反數)

7.A+1(對矩陣中每個對應的元素+1)

8.A’(A的轉置)

9.一些有用的函數

求矩陣中最大的一個值:

max(max(A))

或者

max(A(:))   首先扁平化A成為一個列向量,然后求最大值

max是默認求每列的最大值:

max(A)  #求矩陣A的最大值(如果A是矩陣,會拿到每一列的最大值)

max(A,[],1)  #拿到矩陣A中每一列的最大值

max(A,[],2)  #拿到矩陣A中每一行的最大值

 

[val, ind] = max(a)   #返回矩陣A中的最大值和索引

A<3 (對應元素的比較 如果小於3返回1,如果大於3返回0)

find(A<3)   #找到A中所有小於3的元素,並且返回他們的索引

 

A=magic(3)   #任意行、列、對角的元素相加的和等於相同的值

[r,c] = find(A>=7)   #拿到所有大於等於7的元素的所在行和列

 

sum(A)   #獲得矩陣中所有元素的和

sum(A,1)  #獲得矩陣中每一列相加的和

sum(A,2)  #獲得矩陣中每一行相加的和

sum(sum(A))  #獲得所有元素的值

 

prod(A)   #獲得矩陣中所有元素的乘積

floor(A)   #對矩陣中所有元素向下取整

ceil(A)    #對矩陣中所有元素向上取整

 

10.逆矩陣

pinv(A)    #求A得逆矩陣

pinv(A)*A  #就會拿到單位矩陣

 

eye

單位矩陣 

conj

共軛矩陣 

zeros

全零矩陣 

companion

伴隨矩陣 

ones

全1矩陣 

det

行列式的值 

rand

均勻分布隨機陣 

norm

矩陣或向量范數 

genmarkov

生成隨機Markov矩陣 

nnz

矩陣中非零元素的個數 

linspace

線性等分向量 

null

清空向量或矩陣中的某個元素 

logspace

對數等分向量 

orth

正交基 

logm

矩陣對數運算 

rank

矩陣秩 

cumprod

矩陣元素累計乘 

trace

矩陣跡 

cumsum

矩陣元素累計和 

cond

矩陣條件數 

toeplitz

Toeplitz矩陣 

inv

矩陣的逆 

disp

顯示矩陣和文字內容 

rcond

逆矩陣條件數 

length

確定向量的長度 

lu

LU分解或高斯消元法 

size

確定矩陣的維數 

pinv

偽逆 

diag

創建對角矩陣或抽取對角向量 

qr

QR分解 

find

找出非零元素1的下標 

givens

Givens變換 

matrix

矩陣變維 

linsolve

求解線性方程 

rot90

矩陣逆時針旋轉90度 

lyap

Lyapunov方程程 

sub2ind

全下標轉換為單下標 

hess

Hessenberg矩陣 

tril

抽取下三角陣 

poly

特征多項式 

triu

抽取上三角陣 

schur

Schur分解 

expm

矩陣指數 

mean

平均值 

expm1

矩陣指數的Pade逼近 

median

中值 

expm2

用泰勒級數求矩陣指數 

prod

元素積 

expm3

通過特征值和特征向量求矩陣指數 

sort

由大到小排序 

funm

計算一般矩陣函數 

std

標准差 

logm

矩陣對數 

sum

元素和 

sqrtm

矩陣平方根 

trapz

梯形數值積分 

spec

矩陣特征值 

corr

求相關系數或方差 

gspec

矩陣束特征值 

sparse

稀疏矩陣 

bdiag

塊矩陣,廣義特征向量 

adj2sp

鄰接矩陣轉換為稀疏矩陣 

eigenmar-

正則化Markov特征 

full

稀疏矩陣轉換為全矩陣 

kov

向量 

mtlb_sparse

將scilab稀疏矩陣轉換為matlab稀疏矩陣格式 

pbig

特征空間投影 

sp2adj

將稀疏矩陣轉換為鄰接矩陣 

svd

奇異值分解 

speye

稀疏矩陣方式單位矩陣 

sva

奇異值分解近似 

sprand

稀疏矩陣方式隨機矩陣 

cumprod

元素累計積 

spzeros

稀疏矩陣方式全零陣 

cumsum

元素累計和 

lufact

稀疏矩陣LU分解 

hist

統計頻數直方圖 

lusolve

稀疏矩陣方程求解 

max

最大值 

spchol

稀疏矩陣Cholesky分解

四、數據繪制

1.繪制正弦函數

t = [0:0.01:0.98];

y1 = sin(2*pi*4*t);

plot(t,y1);

 

2.繪制余弦函數

t = [0:0.01:0.98];

y2 = cos(2*pi*4*t);

plot(t,y2);

 

3.同時繪制正弦函數和余弦函數

t = [0:0.01:0.98];

y1 = sin(2*pi*4*t);

y2 = cos(2*pi*4*t);

plot(t,y1);

hold on;                     #hold on 的作用是在舊的圖像上繪制新的圖像            

plot(t,y2,'r')           

 

xlabel('times');        #添加橫軸的label

ylabel('values');        #添加縱軸的label

legend('sin','cos')     #將圖例添加到右上角

title('my plot')         #給圖像一個title

close;    #關閉圖像

 

figure(1);plot(t,y1);

figure(2);plot(t,y2);   #給不同的圖像命名

 

4.將圖像分為一個1*2的格子

subplot(1,2,1)   #前兩個參數的意思是分為1*2的格子,后面一個參數的意思是當前使用第一個格子

 

5.改變軸的刻度

axis([0.5 1 -1 1])  #(xmin xmax ymin ymax)

 

6.清除一副圖像(clf)

7.可視化一個矩陣

A = magic(5)

imagesc(A);

imagesc(A), colorbar, colormap gray;    #一個灰度分布圖


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM