マトリックス変換

基本的な行列演算

行列の加算

矩阵的加法满足下列运算律(A,B,C都是同型矩阵):

A + B = B + A
(A + B) + C = A + (B + C)

应该注意的是只有同型矩阵之间才可以进行加法

行列の減算

29866996300c71eacf9fcc9ce431d54d.png

行列の乗算

51d9aec131091a9ae609f2a75f4456ea.png

法律を満たすために乗算演算

0f2def2c8812ee7c6cd14639e1a9331a.png
29e85fb07d671511cc146aed35cfa8f7.png
31f744ef7611a1a0e8f6a0254f98aa4b.png
96ceaf2f2dc955e0d370051a59e58773.png

行列の転置

2685844974934b6df11d96fb6aee18b2.png

操作法を満たすトランスポーズ

0678abfccd945f6e2b14bd3680a1b6b5.png
e0af29f89d77bb021030e2e70acf8d05.png
67b0dba9aff2c62aed6a91674e766f19.png

共役

共役行列が定義されている:  2c17e8b4a0b7cd78b6ef18c4e2a65616.png
 2×2の共役複素行列(一定の実数部、虚数部NEG)

6d1966a03d3e5bce9ff45b3e0905ad84.png
ff25aee1cd49bbc5e9cc08eb1e8e01a8.png

共役転置

:共役転置行列は次のように定義されている  239f502a3b857997211ed525da2dcc87.png
 ように書くことができる:  da0e955cfa276eb747d253a552c6e403.png
 または書面  047027e330df927ea79530406a866b1b.png
 。2×2複素共役転置行列を次のように

6d1966a03d3e5bce9ff45b3e0905ad84.png
993bf5b07b399ca5841aeff06e97c5bc.png

行列の乗算

二つの行列の乗算を定義することができる場合にのみ、別の第1の行列Aおよび行列Bの列の数に等しい行数。Aはm×n行列であり、Bは、p×n行列であり、その製品はP行列×C mのように  78fad0b6eda148d59f07c1c4dd23d951.png
 要素

46c2f2f94f11fcf165b6ea7adcaca6c6.png

この製品は次のように記述されます。 c1143fad2d8864643f3f20e8b397d29c.png

行列の乗算法

連想法: 2d1366f55bed3bd7ba644ba4d84c1c22.png

左分配法則: c5910d32c863ebdb97dc142bd0801883.png

右分配法則: 615eec03eea818dff0c8542d7862007a.png

行列の乗算は可換ではありません。

マトリックス変換

置換

import matplotlib.pyplot as plt
import numpy as np

points = np.array([
    [0,0],
    [0,5],
    [3,5],
    [3,4],
    [1,4],
    [1,3],
    [2,3],
    [2,2],
    [1,2],
    [1,0],
    [0,0]
])

matrix = np.array([2,0])
newpoints = points + matrix

plt.plot(points[:,0],points[:,1])
plt.plot(newpoints[:,0],newpoints[:,1])
plt.xlim(-10,10)
plt.ylim(-10,10)
plt.show()

回転

import matplotlib.pyplot as plt
import numpy as np

points = np.array([
    [0,0],
    [0,5],
    [3,5],
    [3,4],
    [1,4],
    [1,3],
    [2,3],
    [2,2],
    [1,2],
    [1,0],
    [0,0]
])

matrix = np.array([
    [1,0],
    [0,-1]
])

newpoints = np.dot(points,matrix.T)
plt.plot(points[:,0],points[:,1])
plt.plot(newpoints[:,0],newpoints[:,1])
plt.xlim(-10,10)
plt.ylim(-10,10)
plt.show()

スケーリング

import matplotlib.pyplot as plt
import numpy as np

points = np.array([
    [0,0],
    [0,5],
    [3,5],
    [3,4],
    [1,4],
    [1,3],
    [2,3],
    [2,2],
    [1,2],
    [1,0],
    [0,0]
])

matrix = np.array([
    [2,0],
    [0,1]
])

newpoints = np.dot(points,matrix.T)
plt.plot(points[:,0],points[:,1])
plt.plot(newpoints[:,0],newpoints[:,1])
plt.xlim(-10,10)
plt.ylim(-10,10)
plt.show()

おすすめ

転載: www.cnblogs.com/pluslius/p/11273073.html