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  #就會拿到單位矩陣

 

四、數據繪制

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