MATLAB中矩陣與數組的區別,點運算符的運用


  正如matlab(矩陣實驗室)這個名字一樣,matlab的數據結構只有矩陣(array)一種形式(可細分為普通矩陣和稀疏矩陣)。

單個的數就是1*1的矩陣;
數組向量就是1*n或n*1的矩陣。
事實上對於matlab來說數、數組或向量和二維矩陣在本質上沒有任何區別,他們的維數都是2,一切都是以矩陣的形式保存的。

*******************************************************************************************

一維數組相當於向量二維數組相當於矩陣,所以矩陣是數組的子集

1.數組的運算是指數組對應元素之間的運算,也稱點運算.

2.矩陣是一個二維數組,所以矩陣的數乘等運算與數組運算是一致的。

3.矩陣乘法乘方除法有特殊的數學含義,並不是數組對應元素的運算.
但有兩點要注意:
(1)對於乘法、乘方和除法等三種運算,矩陣運算與數組運算的運算符及含義都不同:矩陣運算按線性變換定義,使用通常符號數組運算按對應元素運算定義,使用點運算符
(2)數與矩陣加減、矩陣除法在數學是沒有意義的,在MATLAB中為簡便起見,定義了這兩類運算。

****************************************************************************************

數組中的元素可以是字符等;矩陣中的只能是
這是二者最直觀的區別。因為矩陣是一個數學概念(線性代數里的),數組是個計算機上的概念。
《精通MATLAB6.5版》(張志涌編著,北京航空航天大學出版社)中說:
從外觀形狀和數據結構上看,二維數組和數學中的矩陣沒有區別。但是矩陣作為一種變換或映射算子的體現,矩陣運算有着明確而嚴格的數學規則。而數組運算是Matlab軟件所定義的規則,其目的是為了數據管理方便、操作簡單、指令形式自然和執行計算的有效。雖然數組運算尚缺乏嚴謹的數學推理,雖然數組運算仍在完善和成熟中,但是它的作用和影響正隨着matlab的發展而擴大。
數組運算:
數與數組加減:k+/-A         %k加或減A的每個元素
數組乘數組: A.*B           %對應元素相乘
數組乘方:  A.^k           %A的每個元素k次方;k.^A,分別以k為底A的各元素為指數求冪值
數除以數組: k./A和A./k         %k分別被A的元素除
數組除法: 左除A.\B,右除B./A     %對應元素相除
矩陣運算:
數與矩陣加減:k+/-A                     %等價於k*ones(size(A))+/-A
矩陣乘法: A*B                           %按數學定義的矩陣乘法規則
矩陣乘方:  A^k                        %k個矩陣A相乘
矩陣除法: 左除A\B右除B/A             %分別為AX=B和XA=B的解
可見,數組的運算很簡單。若不考慮數學意義時,矩陣是數組的二維版本。
構造數組:
1、直接構造:用空格或逗號間隔數組元素
x=[1,2,3,4,5,6]
2、增量法構造:使用冒號操作符創建數組
a=first:end %遞增,且步長為1的數組
a=first:step:end %指定增量步長值創建任何等差序列
3、用linspace函數構造
x=linspace(first,last,num) %需要指定首尾值和元素總個數,步長根據num平均分配
構造矩陣
1、簡單創建方法
用[ ],逗號或空格格開各元素,分號隔開各行,注意各行具有相同的元素個數。
2、構造特殊矩陣
ones,zeros,eye,diag,magic,rand,randn,randpem
.....
*****************************************************************************************

數組運算
轉置                A.'                 %非共軛轉置,相當於(conj(A'))
數組加與減     A+B與A-B      %對應元素之間加減
數乘數組         k.*A或A.*k     % k乘A的每個元素
數與數組加減 k+A與k-A      %k加(減)A的每個元素
數組乘數組      A.*B
數組乘方         A.^k              %A的每個元素進行k次方運算
                       k.^A              %以k底的,分別以A的元素為指數求冪值
數除以數組 k./A和A.\k        % k分別被B的元素除
數組除法     左除A.\B,右除B./A

矩陣運算
矩陣轉置           A'                    %共軛轉置
加減                  A+B A-B
數乘矩陣           k*A或A*k       %上三項同數組運算
矩陣乘法           A*B               %按數學定義的矩陣乘法規則
矩陣乘方            A^k               %k個矩陣A相乘
數與矩陣加減      k+A與k-A      %等價於k*ones(size(A))+-A
矩陣除法           左除A\B,右除B/A  %分別為AX=B和XA=B的解

*****************************************************************************************************
例:
A=[1 2;3 4];B=[4 3;2 1];

r1=100+A
r1 =

      101 102
      103 104

 

r2_1=A*B,r2_2=A.*B

r2_1 =

         8 5
        20 13

r2_2 =

         4 6
         6 4

 

r3_1=A\B,r3_2=A.\B

r3_1 =

       -6.0000 -5.0000
        5.0000 4.0000

r3_2 =

       4.0000 1.5000
       0.6667 0.2500

 

r4_1=B/A,r4_2=B./A

r4_1 =

      -3.5000 2.5000
      -2.5000 1.5000

r4_2 =

       4.0000 1.5000
       0.6667 0.2500

 

r5_1=A.^2,r5_2=A^2

r5_1 =

          1 4
          9 16

r5_2 =

         7 10
       15 22


r6_1=2.^A

r6_1 =

           2 4
           8 16

*****************************************************************************************

size(a)表示矩陣每個維度的長度
比如size([1 2 3;4 5 6])
等於[2 3]
表示他有2行3列
size([1 2 3])
等於[1 3]
表示他有1行3列
另外size(a,n)表示矩陣a在第n個維度下的長度。
比如size([1 2 3;4 5 6],1)
等於2,表示有2行
size([1 2 3;4 5 6],2)
等於3,表示有3列

length(a)表示矩陣a的最大的長度,即max(size(a))
比如length([1 2 3;4 5 6])
等於3,因為2和3中最大是3
當a是向量時,即表示向量的元素個數,因為向量總是1×n或n×1的,而n一定大於或等於1.所以得到的結果一定是n

ndims(a)表示矩陣a的維數,即length(size(a))
比如ndims([1 2 3;4 5 6])
等於2,因為他是二維矩陣
matlab認為向量也是二維矩陣,只不過其中一個維度的長為1.
因此ndims([1 2 3])也等於2

我們可以構造一個三維甚至更高維度的矩陣,
比如a=cat(3,[1 2 3 4;5 6 7 8],[9 8 7 6;5 4 3 2])
他除了行和列以外還有一個維度,我們暫且把它叫做高度。
也就是說a有兩層,第一層是[1 2 3 4;5 6 7 8],第二層是[9 8 7 6;5 4 3 2]
此時有size(a)=[2 4 2]
即2行4列2層
length(a)=4
([2 4 2]中最大為4)
ndims(a)=3
(因為他有3個維度)


免責聲明!

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



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