LearnGL - 06.1 - Matrix - 矩阵02 - 向量空间、向量空间的维度、为何矩阵乘法要有 [M x N] * [N * P] 的 N 要相等的限制
文章目錄
- 矩陣乘法為何有維度限制?
- 什么是向量空間?
- 什么是向量空間的維度?
- 理解為何有這個限制
LearnGL - 學習筆記目錄
本人才疏學淺,如有什么錯誤,望不吝指出。
上一篇:LearnGL - 06 - Matrix - 矩陣01 - 齊次坐標、縮放、旋轉矩陣,了解了矩陣就是定義一個坐標空間的軸向
這一篇:這篇再講一丟丟關于矩陣的乘法內容,這些都是個人看的零散資料總結的內容。
矩陣乘法為何有維度限制?
就是 3x3 不能和 4x1 的矩陣相乘。但是3x3 的矩陣可以和 3x1 的矩陣向量。第一次遇到這個限制的同學,在看教科書上可能只會告訴你:矩陣相乘,前者的列數量要等于后者的行數。但是為何要有這個限制能,可能沒法弄懂,下面我就講解一些我個人在閱讀了部分資料的總結,來理解為何會有這個限制。
這個也是 變換 中沒有 詳細 講到的,因此加以說明。
什么是向量空間?
先了解什么是向量空間?
就是在某個空間中,某個向量可以 變換 到所有的任意尺度、位置的 空間集合。(我看有些術語叫:張成空間)
一個 一維 向量(就是一個標量),它能 張成 到的空間就是一條線的空間(包含了一個坐標軸上的?∞~+∞-\infty\sim+\infty?∞~+∞的所有數值)。
一個 二維 向量,它能 張成 到的空間就是一個平面。
一個 三維 向量,它能 張成 到我們的三維的整個空間。(你可以理解為一個無限大的立方體或是圓體)
當然這些都是低維度可視化的理解。
在一些高維度(三維以上),我們就畫不出來了。
這些維度可以有nnn個維度。
什么是向量空間的維度?
什么叫向量空間維度?
或是什么叫矩陣變換空間的維度?
這么說 向量空間 == 矩陣變換空間?,他們是 不等于 的。
只不過,一個 矩陣其實代表 的是某個維度的向量空間的 變換。
這里的變換并不是矩陣對向量空間的變換,而是在這個向量空間下,這個矩陣對在這個向量空間下的某個向量進行變換。
這個矩陣代表的向量空間有多少維度,就說明這個向量空間有多少個維度。
因此我們以矩陣來說明維度。
例如:一個 4x4 矩陣左乘于一個 4x1 的矩陣(或是向量):4×4?4×14\times 4\cdot 4\times 14×4?4×1
其中 4x4, 4x1 代表的就是這個矩陣的尺寸(這里不用 維度,便于與空間維度 區分)。
然后我們總看到多數的矩陣教學、教程中都有描述,矩陣相乘,必須要,左邊的矩陣的列的數量,與 右邊的矩陣的行的數量 的維度相同。
如 Am×n?Bn×kA_{m \times \color{#ff0000}n} \cdot B_{{\color{#ff0000}n} \times k}Am×n??Bn×k?中,必須要 nnn 要相同才可以相乘。
從之前的 LearnGL - 06 - Matrix - 矩陣01 講解中,可以知道矩陣中的 每一列 就是一個 代表一個空間,或是 代表一個坐標系 中的 正交基向量,或是 坐標軸單位向量。
矩陣 有多少個列,代表有多少個正交基向量(坐標軸),就 代表 了這個 向量空間 有多少維度 組成的。
那么我們可以這么理解:
M=[∣∣∣X→Y→Z→∣∣∣]M=\begin{bmatrix} | & | & | \\ \overrightarrow X & \overrightarrow Y & \overrightarrow Z \\ | & | & | \end{bmatrix} M=???∣X∣?∣Y∣?∣Z∣????
上面的矩陣MMM有三個軸,分別是 X→,Y→,Z→\overrightarrow X, \overrightarrow Y, \overrightarrow ZX,Y,Z,所以他的 向量空間 維度是 三維 的。
這也只是以三維空間(有三個軸)來舉例,在除了3D 圖形學之外,部分領域會使用到不確定的維度數量的 向量空間 下做運算的,如:
M=[∣∣∣∣V→1V→2?V→n∣∣∣∣]M=\begin{bmatrix} | & | & | & |\\ \overrightarrow V_1 & \overrightarrow V_2 & \cdots & \overrightarrow V_n \\ | & | & | & | \end{bmatrix} M=???∣V1?∣?∣V2?∣?∣?∣?∣Vn?∣????
可以在 nnn個維度 下的 向量空間 下來做 線性變換。
所以 向量空間的維度 是可以根據你的 矩陣的列的數量來決定的。
那么還是回到主題,為何:矩陣相乘,必須要:左邊的矩陣的列的數量,與 右邊的矩陣的行的數量 的維度相同?
理解為何有這個限制
前面說了,矩陣 m x n,說明有 n 個維度。
以3D圖形中常用的4x4 矩陣 不能和 3x1矩陣(向量)為例,因為 前者的列數量 不等于 后者的行數。
那么你可以這么理解:后面的 3x1矩陣(向量)的行數量,也可以代表向量空間的維度。
但這也是有規定條件下才能這么理解的。
如有兩矩陣乘法:Am×n?Bn×kA_{m \times \color{#ff0000}n} \cdot B_{{\color{#ff0000}n} \times k}Am×n??Bn×k?
A所在向量空間的維度是nnn,B所在的向量空間的維度同樣是nnn,所以這兩個矩陣可以相乘。
也就說,矩陣變換的所在的維度的數量,必須是同樣的維度數量,才可以相乘。
但前面不是說用矩陣的列的數量來決定它的向量空間的維度的數量嗎?
為何B矩陣是用矩陣的行的數量來決定的呢?
這里可以總結為:在矩陣相乘中,放在前面(或是在左邊)的矩陣的列可以決定它所在的維度,而放在后面(或是在右邊)的矩陣的行可以決定它所在的維度。
再舉個例子你就明白了。
我們有一個坐標點,或是一個向量:3x1:(xyz)\left( \begin{matrix} x\\y\\z \end{matrix} \right)???xyz????
一般我們認為它是在三維的,因為它有表示X,Y,Z三個軸向上的偏移量。
但更準確的理解是:因為它一般被矩陣變換時,都是矩陣左乘(放在向量的左邊)來計算的,所以這時候,矩陣的列是維度,這個向量的行也是維度。
所以能和這個向量相乘的矩陣的維度必須是:n×3n\times 3n×3的一個尺寸的矩陣。
如果向量,或是這個頂點,我們擴展到齊次坐標:4x1:(xyz1)\left( \begin{matrix} x\\y\\z\\1 \end{matrix} \right)?????xyz1??????,那么能和這個向量相乘的矩陣的維度就必須是:n×4n\times 4n×4,所以我們3D圖形學中,比較常見的有:3x3不帶位移的矩陣,與4x4帶有位移的矩陣。
總結
以上是生活随笔為你收集整理的LearnGL - 06.1 - Matrix - 矩阵02 - 向量空间、向量空间的维度、为何矩阵乘法要有 [M x N] * [N * P] 的 N 要相等的限制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: angular8.5集成TinyMce5
- 下一篇: C语言中:register作用