Coding the Matrix (3):矩阵
1. 矩阵与映射
矩阵和映射包含两方面的关系:
简单:已知矩阵 M, 从向量 x 映射到 M * x. (注:矩阵与行向量的点乘)
稍微复杂:已知映射 x -
>
M * x, 求矩阵 M。
第一种情况直接运算就可以得到映射,就不详细写了,着重写第二种情况。
首先,假设 x 为 n 维行向量, M*x 为 m 维列向量,可以知道 M 是 m × n 大小的矩阵。在点乘里面,M 的列向量是基向量, x 向量的每个分量是线性组合的系数,M 矩阵可以写成:
怎么求出 v1, v2, ..., vn 向量呢?利用基向量带入即可得到:
例一 :将一张图片向右拉伸两倍,即 (x, y) 变为了 (2x, y), 它的变换矩阵可以这样求:
求得的变换矩阵就是 M = (v1, v2)
例二 :将一张图片逆时针旋转 90 度,变换矩阵 M 可以这样求:
求得的变换矩阵也是 M = (v1, v2)
同样,将图像旋转 theta 角度和平移操作 (translation) 也可以用这个方法求出变换矩阵。
根据上述方法虽然可以求出图像平移的变换矩阵,但是如果我们将 [0, 0] 左边进行变换,发现原点还是在原点,并没有平移,结果显然是错误的,这是什么原因呢?这里就不得不说一说线性映射了。
2. 线性映射
线性映射需要满足两个条件:
首先,左乘矩阵肯定是一个线性映射。考虑上面的例子,图像伸缩、旋转都符合两个条件,而图像平移不符合,因此不是线性映射,不存在变换矩阵。更进一步,什么时候才是一一映射呢?当矩阵 M 是一个满秩矩阵,此时 M 可逆,该映射是一个 one-to-one and onto 的线性映射。
Coding the Matrix (3):矩阵的更多相关文章
- 【Python】Coding the Matrix:Week 5: Dimension Homework 5
这一周的作业,刚压线写完.Problem3 没有写,不想证明了.从Problem 9 开始一直到最后难度都挺大的,我是在论坛上看过了别人的讨论才写出来的,挣扎了很久. Problem 9在给定的基上分 ...
- [CareerCup] 1.7 Set Matrix Zeroes 矩阵赋零
1.7 Write an algorithm such that if an element in an MxN matrix is 0, its entire row and column are ...
- Coding the Matrix Week 1 The Vector Space作业
Coding the Matrix: Linear Algebra through Computer Science Applications 本周的作业较少,只有一个编程任务hw2.作业比较简单,如 ...
- Coding the Matrix作业Python Lab及提交方法
Coding the Matrix: Linear Algebra through Computer Science Applications 这是一门用python实现矩阵运算的课,第一次作业就感觉 ...
- css3 matrix 2D矩阵和canvas transform 2D矩阵
一看到“2D矩阵”这个高大上的名词,有的同学可能会有种畏惧感,“矩阵”,看起来好高深的样子,我还是看点简单的吧.其实本文就很简单,你只需要有一点点css3 transform的基础就好. 没有前戏,直 ...
- Leetcode 54:Spiral Matrix 螺旋矩阵
54:Spiral Matrix 螺旋矩阵 Given a matrix of m x n elements (m rows, n columns), return all elements of t ...
- bzoj 4128: Matrix ——BSGS&&矩阵快速幂&&哈希
题目 给定矩阵A, B和模数p,求最小的正整数x满足 A^x = B(mod p). 分析 与整数的离散对数类似,只不过普通乘法换乘了矩阵乘法. 由于矩阵的求逆麻烦,使用 $A^{km-t} = B( ...
- [LeetCode] Kth Smallest Element in a Sorted Matrix 有序矩阵中第K小的元素
Given a n x n matrix where each of the rows and columns are sorted in ascending order, find the kth ...
- [LeetCode] Set Matrix Zeroes 矩阵赋零
Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place. click ...
随机推荐
- [麦先生]学习PDO循序渐进使用方式
使用方式 特点一:支持跨数据库 1:首先实例化PDO,创建PDO对象的四个必备参数:host(哪一种类型的数据库,mysql/orcal/SQLserver等);dbname(数据库的名称);cha ...
- elastic search查询命令集合
Technorati 标签: elastic search,query,commands 基本查询:最简单的查询方式 query:{"term":{"title" ...
- 【C#】3.算法温故而知新 - 快速排序
快速排序相比冒泡排序,每次交换是跳跃式的.每次排序的时候设置一个基准点,将小于等于基准点的数全部放到基准点的左边,将大于等于基准点的数放到基准点的右边.这样每次交换的时候就不会像冒泡排序一样只能在相邻 ...
- linux下安装+配置+卸载jdk
一. 解压安装jdk在shell终端下进入jdk1.7.0_55.bin文件所在目录, 执行命令 ./jdk1.7.0_55.bin 这时会出现一段协议,连继敲回车,当询问是否同意的时候,输入yes, ...
- 边工作边刷题:70天一遍leetcode: day 89-1
Smallest Rectangle Enclosing Black Pixels 要点:记题:这题有两个限制条件:所有black pixel是连通的(所以可以用binary search)以及给了一 ...
- UVA 12730 Skyrk's Bar --期望问题
题意:有n个地方,现在要站人进去,而每两个人之间至少要隔k个空地,问这n个地方能站的人数的期望是多少. 分析:考虑dp[i]表示 i 个地方能站的期望数,从左往右推, 如果i-k-1<1,那么最 ...
- Ajax读取文件时出现的缓存问题
对于Ajax缓存问题时,由于浏览器的版本问题,有时候当服务器端已更改文件中的内容,而客户端并得不到更新后的文件,而是延续之前的文件内容,解决办法是:在读取的文件内容后加一串的地址:JSON的格式为[{ ...
- MySQL数据库学习笔记(五)----MySQL字符串函数、日期时间函数
一.常见字符串函数: 1.CHAR_LENGTH 获取长度(字符为单位) 2.FORMAT 格式化 3.INSERT 替换的方式插入 4.INSTR 获取位置 5.LEFT/RIGHT 取左 ...
- java 15-1 Collection集合的概述以及小功能介绍
集合的由来: 我们学习的是面向对象语言,而面向对象语言对事物的描述是通过对象体现的,为了方便对多个对象进行操作,我们就必须把这多个对象进行存储. 而要想存储多个对象,就不能是一个基本的变量,而应 ...
- PHP 运行方式(PHP SAPI介绍)
SAPI:Server Application Programming Interface 服务器端应用编程端口.它就是PHP与其它应用交互的接口,PHP脚本要执行有很多种方式,通过Web服务器,或者 ...