1. 程式人生 > >MATLAB入門學習-#2-矩陣基礎#1

MATLAB入門學習-#2-矩陣基礎#1

MATLAB入門學習-#2-矩陣基礎#1

MATLAB的各種資料型別,在MATLAB中均以矩陣的形式存在(標量、向量都是特殊的矩陣),矩陣是MATLAB最基本的資料物件。

1.建立一個矩陣

1. 1直接輸入法
在命令視窗直接輸入矩陣元素。按行輸入矩陣元素,同一行元素使用空格或者逗號隔開,不同行元素使用分號或者回車作為間隔。

>> A=[1 2 3 4];
>> B=[2,3,4,5];
>> C=[1,2,3,4;2,3,4,5];
>> A,B,C

A =

     1     2     3     4


B =

     2     3     4     5


C =

     1     2     3     4
     2     3     4     5

1. 2M檔案建立矩陣
啟動編輯器(輸入edit命令,或者使用按鈕),輸入待建立矩陣,輸入格式要求和直接輸入法類似,只不過不同行元素必須使用分號作為間隔。
1. 3特殊矩陣的建立

  • 零矩陣(command:zeros)
>> B=zeros(5)

B =

     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
  • 么矩陣(command:ones)
>> A=ones(5,6)

A =

     1     1     1     1     1     1
     1     1     1     1     1     1
     1     1     1     1     1     1
     1     1     1     1     1     1
     1     1     1     1     1     1

1. 4冒號表示式建立矩陣
冒號是一個重要的運算子,語法e1:e2:e3,e1為初始值,e2為步長,e3為終止值,產生行向量,以e1為開始,e3為結束,步長為e2。

>> A=[1:1:10]

A =

     1     2     3     4     5     6     7     8     9    10

1. 5linspace建立行向量
語法linspace(a, b, n)。a和b分別為行向量的第一個和最後一個元素,n為總元素,省略n自動產生100個元素的行向

2.矩陣的簡單操作

2. 1矩陣索引
使用A[行,列]查詢(sub)或者使用A(序號)查詢(ind),使用序號查詢時應注意機器儲存矩陣是按列儲存的,即第一行第一列的序號是1,第二行第一列的序號是2,第三行第一列的序號是3…

>> A=[1 2 3;4 5 6;7 8 9];
>> A(2,3)

ans =

     6

>> A(4)

ans =

     2

還能做到找元素所在的位置,可以輸出座標sub或者是序號ind:

>> A=[1 2 3;4 5 6;7 8 9];
>> [m,n]=find(A==7)

m =

     3


n =

     1

>> ind=find(A==7)

ind =

     3

sub和ind之間還可以互相轉換:

>> A=[1 2 3;4 5 6;7 8 9];
>> sub2ind(size(A),2,3)

ans =

     8

>> [m,n]=ind2sub(size(A),8)

m =

     2


n =

     3

2. 2重排(command:reshape(A,m,n))

>>  A=[1 2 3 4;5 6 7 8];
>> B=reshape(A,4,2)

B =

     1     3
     5     7
     2     4
     6     8

2. 3轉置
來一個單引號
2. 4拆分(索引的一個特例)

>>  A=[1 2 3;4 5 6;7 8 9];
>> B=A(1,:)      %得到矩陣A的第一行所有列

B =

     1     2     3

>> C=A(1,1:2)   %得到矩陣A的第一行第一列到第二列

C =

     1     2

>> D=A(2,1:end-1)    %得到矩陣A的第二行第一列到倒數第二列

D =

     4     5

>> E=A([1,2],[1,2])   %得到矩陣A的第一行到第二行的第一列到第二列(哈哈奇怪的說法)

E =

     1     2
     4     5

2. 5刪除
刪除是通過賦空值來實現的。(空值是[])

>>  A=[1 2 3;4 5 6;7 8 9];
>> A(1,:)=[]

A =

     4     5     6
     7     8     9

2. 6擴充套件(command:repmat(A,m,n))
將A複製,並按照m行n列來搞。

>>  A=[1 2 3;4 5 6;7 8 9];
>> B=repmat(A,3,2)

B =

     1     2     3     1     2     3
     4     5     6     4     5     6
     7     8     9     7     8     9
     1     2     3     1     2     3
     4     5     6     4     5     6
     7     8     9     7     8     9
     1     2     3     1     2     3
     4     5     6     4     5     6
     7     8     9     7     8     9

2. 7壓縮(command:unique(A))
這個比較簡單,就是去掉重複的元素,我就不多bb了,直接上程式。

>> A=[1 2 2 3 3 3 4 4 4 4];
>> B=unique(A)

B =

     1     2     3     4