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 ...
随机推荐
- 生成大小为100的数组,从1到100,随机插入,不连续,也不重复[C#]
生成大小为100的数组,从1到100,随机插入,不连续,也不重复. 实现思路 生成一个100位的集合listA,放1到100 创建一个空的集合listB,用来存放结果 创建一个变量c,临时存储生成的数 ...
- NOIP2007 T1奖学金 解题报告-S.B.S.
洛谷P1093 题目描述 某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前5名学生发奖学金.期末,每个学生都有3门课的成绩:语文.数学.英语.先按总分从高到低排序,如果两个同学总分相同, ...
- Hello world S.B.S.
#include <iostream> #include <conio.h> #include<cstdio> #include<cstring> #i ...
- 【读书笔记《Android游戏编程之从零开始》】16.游戏开发基础(动画)
1. Animation动画 在Android 中,系统提供了动画类 Animation ,其中又分为四种动画效果: ● AlphaAnimation:透明度渐变动画 ● ScaleAnimati ...
- 边工作边刷题:70天一遍leetcode: day 88-5
coins in a line I/II/III: check above 1. recursion的返回和dp[left][right]表示什么?假设game是[left,right],那么play ...
- POJ 2253 Frogger -- 最短路变形
这题的坑点在POJ输出double不能用%.lf而要用%.f...真是神坑. 题意:给出一个无向图,求节点1到2之间的最大边的边权的最小值. 算法:Dijkstra 题目每次选择权值最小的边进行延伸访 ...
- Android Studio系列教程三--快捷键
Android Studio系列教程三--快捷键 2014 年 12 月 09 日 DevTools 本文为个人原创,欢迎转载,但请务必在明显位置注明出处!http://stormzhang.com/ ...
- C#代码规范 .NET程序员需要提升的修养
一. 环境设置 首先去除VS开发环境中的一些选项如下: 粘贴时调整缩进 将类型的左大括号置于新行 将方法的左大括号置于新行 将匿名方法的左大括号置于新行 将控制块的左大括号置于新行 将“else” ...
- String类详解(1)
首先String是一个类. 1,实例化String类方法. 1)直接赋值:String name="haha"; 2)通过关键字:String name=new String(&q ...
- javascript替换手机号中间4位
// 匹配手机号首尾,以类似“123****8901”的形式输出 '12345678901'.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2'); 此段正则匹配字符串 ...