Matrix简单使用

Matrix是一个3*3的矩阵:

[img]http://dl.iteye.com/upload/attachment/553786/b0d9231a-5d2d-3645-9287-28caa899a28e.png[/img]
平移的矩阵计算:
现设点P0(x0, y0)进行平移后,移到P(x,y),其中x方向的平移量为△x,y方向的平移量为△y,那么,点P(x,y)的坐标为:
x = x0 + △x
y = y0 + △y
采用矩阵表达上述如下:

[img]http://dl.iteye.com/upload/attachment/553791/5fc7e45a-c013-39a5-9c52-51621605088f.jpg[/img]

图像旋转的矩阵计算:
现设点P0(x0, y0)旋转θ角后的对有点为P(x, y)。通过使用向量,我们得到如下:

x0 = r cosα
y0 = r sinα

x = r cos(α-θ) = x0 cosθ+ y0 sinθ
y = r sia(α-θ) = -x0 sinθ+y0 cosθ

于是我们得到矩阵:

[img]http://dl.iteye.com/upload/attachment/553793/869c6111-82c2-3790-a994-56f446f3bb7f.jpg[/img]

矩阵的放大缩小:
放大缩小是利用最下面的一行数值改变实现的。右下角的数值n>1表示缩放n,n<1表示扩展n倍

旋转和放大缩小是以当前左上角进行的。因此如果要以某点(x,y)旋转或者缩放,需要进行:

matrix.setScale(0.5f,0.5f);
matrix.preTranslate(-x,-y);
matrix.postTranslate(x,y);

执行顺序-->平移元素,将点(x,y)移动到元素左上角,缩小元素为原来的一半,将元素平移到原来的位置。
旋转也是用同样的方式。注意先后顺序。
### 使用矩阵(Matrix)在编程中的基本操作 #### 创建矩阵 创建一个矩阵可以通过多种方式实现,在Python中通常借助`numpy`库来完成这一过程。例如,可以利用列表构建二维数组并转换成矩阵形式。 ```python import numpy as np matrix_example = np.array([[1, 2], [3, 4]]) print(matrix_example) ``` 此段代码展示了怎样通过定义嵌套列表的方式初始化一个简单的2×2矩阵[^1]。 #### 基本运算 对于两个相同大小的矩阵A和B来说,加法、减法以及数乘等线性代数运算是十分直观的操作;而矩阵之间的相乘则遵循特定规则——前者的列数需等于后者的行数。 ```python # 加法 addition_result = matrix_example + matrix_example print(addition_result) # 数乘 scalar_multiplication_result = 2 * matrix_example print(scalar_multiplication_result) # 矩阵乘法 multiplication_result = np.dot(matrix_example, matrix_example.T) print(multiplication_result) ``` 上述例子分别实现了同维矩阵间的逐元素求和、常量倍增以及标准意义上的矩阵内积计算[^2]。 #### 转置与逆向处理 转置是指交换原矩阵各行各列位置形成新矩阵的过程;如果存在某个方阵M满足MM⁻¹=M⁻¹M=I(I为单位矩阵),那么就称其具有可逆性质,并记作M⁻¹为其对应的逆矩阵。 ```python # 获取转置矩阵 transpose_matrix = matrix_example.T print(transpose_matrix) # 计算逆矩阵 (仅对方阵有效) if np.linalg.det(matrix_example)!=0: inverse_matrix=np.linalg.inv(matrix_example) print(inverse_matrix) else: print('The given matrix is not invertible.') ``` 这里给出了获取给定矩阵转置版本的方法,同时也介绍了判断是否能成功获得逆元及其具体做法的前提条件[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值