仿射变换(affine transformation)

仿射变换(affine transformation)

多面体编译(polyhedral compilation)会使用到仿射变换(affine transformation)的知识,这里介绍下仿射变换的数学原理。

线性变换:

对于变换 f f f 是一个线性变换,则对于任意向量 w ⃗ \vec{w} w v ⃗ \vec{v} v 满足:

  1. f ( w ⃗ + v ⃗ ) = f ( w ⃗ ) + f ( v ⃗ ) f(\vec{w}+\vec{v})=f(\vec{w})+f(\vec{v}) f(w +v )=f(w )+f(v )
  2. f ( k v ⃗ ) = k f ( v ⃗ ) f(k\vec{v})=kf(\vec{v}) f(kv )=kf(v )

其中 k k k 为标量。

例如, f ( v ⃗ ) = < 3 v 1 − 2 v 2 , 4 v 2 > f(\vec{v})=<3v_1-2v_2, 4v_2> f(v )=<3v12v2,4v2> 是一个线性变换,而 f ( v ⃗ ) = < 3 v 1 − 2 v 2 , 4 v 1 v 2 > f(\vec{v})=<3v_1-2v_2, 4v_1v_2> f(v )=<3v12v2,4v1v2> 则不是线性变换。

线性变换还可以写成一个矩阵乘以输入向量的形式。例如: f ( v ⃗ ) = < 3 v 1 − 2 v 2 , 4 v 2 > f(\vec{v})=<3v_1-2v_2, 4v_2> f(v )=<3v12v2,4v2> 可以写成:
f ( v ⃗ ) = ( 3 − 2 0 4 ) ( v 1 v 2 ) f(\vec{v})= ( \begin{matrix} 3 & -2 \\ 0 & 4 \end{matrix} ) (\begin{matrix} v_1 \\ v_2 \end{matrix} ) f(v )=(3024)(v1v2)

仿射变换:

非正式地,一个仿射变换就是一个线性变换加一个常量。

正式地,一个仿射变换 f f f 可以表示为: f ( v ⃗ ) = M v ⃗ + c ⃗ f(\vec{v})=M\vec{v}+\vec{c} f(v )=Mv +c 。其中, M M M 是一个线性变换的矩阵, c ⃗ \vec{c} c 是一个常量向量。

例如,下面这是一个仿射变换:
f ( v ⃗ ) = ( 3 − 2 0 4 ) ( v 1 v 2 ) + ( 1 2 ) f(\vec{v})= ( \begin{matrix} 3 & -2 \\ 0 & 4 \end{matrix} ) (\begin{matrix} v_1 \\ v_2 \end{matrix} ) + (\begin{matrix} 1 \\ 2 \end{matrix} ) f(v )=(3024)(v1v2)+(12)

可见,线性变换肯定是一个仿射变换,而仿射变换只在其常量向量阵为零时才为线性变换。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值