矩阵转置

【R笔记】R语言函数总结

那年仲夏 提交于 2019-12-21 02:46:08
R语言与 数据挖掘:公式;数据;方法 R语言特征 对大小写敏感 通常,数字,字母,. 和 _都是允许的(在一些国家还包括重音字母)。不过,一个命名必须以 . 或者字母开头,并且如果以 . 开头,第二个字符不允许是数字。 基本命令要么是表达式(expressions)要么就是 赋值(assignments)。 命令可以被 (;)隔开,或者另起一行。 基本命令可以通过大括弧({和}) 放在一起构成一个复合表达式(compound expression)。 一行中,从井号(#)开始到句子收尾之间的语句就是是注释。 R是动态类型、强类型的语言。 R的基本数据类型有数值型(numeric)、字符型(character)、复数型(complex)和逻辑型(logical),对象类型有向量、因子、数组、矩阵、数据框、列表、时间序列。 基础指令 程序辅助性操作: 运行 q()——退出R程序 tab——自动补全 ctrl+L——清空console ESC——中断当前计算 调试查错 browser() 和 debug()—— 设置断点进行,运行到此可以进行浏览查看(具体调试看browser()帮助文档(c,n,Q)) stop('your message here.')——输入参数不正确时,停止程序执行 cat()——查看变量? 帮助 help(solve) 和 ?solve 等同 ??solve—

MATLAB permute命令的操作逻辑

微笑、不失礼 提交于 2019-12-21 01:54:42
MATLAB中permute命令可以对高维矩阵的轴进行操作,例如使2*3*4的三维矩阵调整为4*2*3,那么具体函数内部进行了什么操作呢? 我们知道matlab里有两种坐标系,一种是我们熟知的笛卡尔坐标系,用命令axis xy实现,以二维图为例,原点在左下角 还有一种是matlab中矩阵的索引体系,用命令axis ij实现,以二维图为例,原点在左上角 permute命令就是基于axis ij这种坐标轴下进行的操作 下面我们以一个三维矩阵的例子来说明命令permute的内部操作逻辑 A(:,:,1)=[1 2;3 4]; A(:,:,2)=[5 6;7 8]; A(:,:,3)=[9 10; 11 12]; 我们有 val(:,:,1) = 1 2 3 4 val(:,:,2) = 5 6 7 8 val(:,:,3) = 9 10 11 12 permute(a,order)操作分为两种情况 1.保持坐标轴关系不变 也就是order=[2 3 1]或[3 1 2] 这时候只用找到一个角度来重新观察这个矩阵即可 例如下图中所示 用MATLAB运行结果进行验证 D=permute(A,[2 3 1]); val(:,:,1) = 1 5 9 2 6 10 val(:,:,2) = 3 7 11 4 8 12 2,某两个轴进行交换 例如order = [1 3 2] [2 1 3] [3

Python NumPy学习总结

老子叫甜甜 提交于 2019-12-19 21:02:35
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 一、yNumPy - 简介 NumPy是Python语言的一个扩充程序库。支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。Numpy内部解除了CPython的GIL(全局解释器锁),运行效率极好,是大量机器学习框架的基础库! 通过Numpy,可以进行如下操作: 数组的算数和逻辑运算。 傅立叶变换和用于图形操作的例程。 与线性代数有关的操作,NumPy 拥有线性代数和随机数生成的内置函数。 现在一般通过Numpy、Scipy(Scientific Python)和Matplotlib(绘图库)结合来替代MatLab,是一个流行的技术计算平台。 NumPy的优点: 对于同样的数值计算任务,使用NumPy要比直接编写Python代码便捷得多; NumPy中的数组的存储效率和输入输出性能均远远优于Python中等价的基本数据结构,且其能够提升的性能是与数组中的元素成比例的; NumPy的大部分代码都是用C语言写的,其底层算法在设计时就有着优异的性能,这使得NumPy比纯Python代码高效得多 当然,NumPy也有其不足之处,由于NumPy使用内存映射文件以达到最优的数据读写性能,而内存的大小限制了其对TB级大文件的处理;此外,NumPy数组的通用性不及Python提供的list容器。因此

NumPy使用手记[z]

ぃ、小莉子 提交于 2019-12-18 22:57:45
前面一个NumPy系列基本上是抄书,没有多少具体的内容。最近做实验经常使用NumPy,确实感觉到向量计算的强大。这个系列开始,我记录在使用NumPy使用中的一些具体的技巧和注意事项。 1) 巧用 where函数 where函数是numpy的内置,也是一个非常有用的函数,提供了快速并且灵活的计算功能。 def f_norm_1(data, estimate): residule = 0 for row_index in range(data.shape[0]): for column_index in range(data.shape[1]): if data[row_index][column_index] != 0: residule += (data[row_index][column_index] - estimate[row_index][column_index]) ** 2 return residule def f_norm_2(data, estimate) return sum(where(data != 0, (data-estimate) **2, 0)) 这两段代码完成同样的功能,计算两个矩阵的差,然后将残差进行平方,注意,因为我需要的是考虑矩阵稀疏性,所以不能用内置的norm,函数1是我用普通的python写的,不太复杂,对于规模10*10的矩阵

线性方程组求解

眉间皱痕 提交于 2019-12-17 22:36:34
1.矩阵基本知识 (1)正交矩阵相乘仍然是正交矩阵 A、B是正交矩阵,那么AA'=E BB'=E (AB)*(AB)'=AB*B'A'=A(BB')A'=AEA'=AA'=E (2)一个矩阵乘以正交矩阵,范数不变 ||Ux||^2=(Ux)^T(Ux)=x^TU^TUx=x^Tx=||x||^2 (3)一个矩阵乘以可逆矩阵秩不变 (4)初等变换只是不影响矩阵的秩,其他的特性都改变了。对于计算矩阵的行列式,不能进行初等变换,但是可以做行列的进 加减,不能乘以系数。 (5)矩阵的迹:矩阵的主对角线上各个元素的总和,是矩阵所有特征值的和 (6)对角矩阵的特征值是其对角线上的各个元素 (7)矩阵的秩等于非零奇异值的个数,等于非零特征值的个数 (8)任意矩阵都能进行奇异值分解,只有方阵才可以进行特征值分解 特征值分解: 如果一个向量 v 是方阵 A的特征向量,将可以表示成下面的形式: Av= λv,λ 称为特征向量 v 对应的特征值,并且一个矩 阵的 一组特征向量是一组正交向量。 特征值分解:Q是这个矩阵A的特征向量组成的矩阵,Σ是一个对角阵,每一个对角线上的元素就是一个特征值 奇异值分解: 假设A是一个N * M的矩阵,U是一个N * N的方阵(正交矩阵),Σ 是一个N * M的矩阵(对角线上的元素为奇异值),VT是 一个M * M的矩阵(正交矩阵) 特征值和奇异值的关系: (1)U

PCA原理分析和Matlab实现方法(三)

╄→гoц情女王★ 提交于 2019-12-16 05:05:14
PCA主成分分析原理分析和Matlab实现方法(三) 【 尊重 原创,转载请注明出处 】http://blog.csdn.net/guyuealian/article/details/68487833 网上关于PCA(主成分分析)原理和分析的博客很多,本博客并不打算长篇大论推论PCA理论,而是用最精简的语言说明鄙人对PCA的理解,并在最后给出用Matlab计算PCA过程的三种方法,方便大家对PCA的理解。 PS:本博客所有源代码,都可以在附件中找到 下载 : http://download.csdn.net/detail/guyuealian/9799160 关于PCA原理的文章,可参考: [1]http://blog.csdn.net/guyuealian/article/details/68483384 [2]http://blog.csdn.net/guyuealian/article/details/68483213 [3] 张铮的《精通Matlab数字图像处理与识别 》 一、 PCA原理简要说明 PCA算法主要用于降维,就是将样本数据从高维空间投影到低维空间中,并尽可能的在低维空间中表示原始数据。 PCA的几何意义可简单解释为: 0维-PCA:将所有样本信息都投影到一个点,因此无法反应样本之间的差异;要想用一个点来尽可能的表示所有样本数据,则这个点必定是样本的均值。 1维

【Python学习之路】Numpy 从 Matlab 到 Numpy

老子叫甜甜 提交于 2019-12-15 23:42:21
从 Matlab 到 Numpy ##Numpy 和 Matlab 比较 Numpy 和 Matlab 有很多相似的地方,但 Numpy 并非 Matlab 的克隆,它们之间存在很多差异,例如: MATLAB® Numpy 基本类型为双精度浮点数组,以二维矩阵为主 基本类型为 ndarray ,有特殊的 matrix 类 1-based 索引 0-based 索引 脚本主要用于线性代数计算 可以使用其他的 Python 特性 采用值传递的方式进行计算 切片返回复制 采用引用传递的方式进行计算 切片返回引用 文件名必须和函数名相同 函数可以在任何地方任何文件中定义 收费 免费 2D,3D图像支持 依赖第三方库如 matplotlib 等 完全的编译环境 依赖于 Python 提供的编译环境 array 还是 matrix? Numpy 中不仅提供了 array 这个基本类型,还提供了支持矩阵操作的类 matrix ,但是一般推荐使用 array : 很多 numpy 函数返回的是 array ,不是 matrix 在 array 中,逐元素操作和矩阵操作有着明显的不同 向量可以不被视为矩阵 具体说来: *, dot(), multiply() array : * -逐元素乘法, dot() -矩阵乘法 matrix : * -矩阵乘法, multiply() -逐元素乘法 处理向量

WPF 画一个3D矩形并旋转

纵饮孤独 提交于 2019-12-15 21:13:49
具体的代码还是线性代数。 主要是旋转和平移。 这个例子的中模型是在世界原点建立。所以旋转会以自身轴心旋转。 如果不在世界原点建立模型,还想以自身为旋转轴旋转。 则是需要以下步骤: 模型的中心点为V1(100,100,0)假设中心为轴(平行于Y轴),旋转A度,也就是说自身中心点的Y轴旋转。 步骤: (1)v1平移到世界原点后其他八个顶点的坐标。(中心点坐标的三个参数如果是大于0就是(每个)顶点减去相对应XYZ,如果中心点坐标的三个参数如果是小于0,则是(每个)顶点加上相对应XYZ,或者使用平移矩阵) (2)(每个)顶点先是平移到V1在原点时的所在的位置,再使用旋转矩阵经行旋转 (3) (每个)旋转后的顶点在平移回中心点原先所在位置。 ATP 附加属性类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Media; using System.Windows.Media.Media3D; using

线代:1.5矩阵的秩(zhi)

折月煮酒 提交于 2019-12-15 17:19:19
文章目录 任务详解: 矩阵的秩Rank of matrix 定义3 定义4 定理2(判断两个矩阵的秩的关系) 秩的性质 线性方程组的解 定理3 本课程来自 深度之眼 ,部分截图来自课程视频。 【第一章 线性代数】1.5矩阵的秩 在线LaTeX公式编辑器 任务详解: 1、掌握矩阵的秩是如何计算的,以及秩和初等变换的关系,以及秩的性质 2、掌握线性方程组的情况 矩阵的秩Rank of matrix 定义3 在m×n矩阵A中,任取k行与k列(k≤m,k≤n),位于这些行列交叉处的 k 2 k^2 k 2 个元素,不改变它们在A中所处的位置次序而得的k阶行列式,称为矩阵A的 k阶子式. m×n矩阵A的k阶子式共有 C m k ⋅ C n k C_m^k\cdot C_n^k C m k ​ ⋅ C n k ​ 个. 定义4 设在矩阵A中有一个不等于0的r阶子式D,且所有r+1阶子式(如果存在的话)全等于0,那么D称为矩阵A的最高阶非零子式,数r称为矩阵A的秩,记作R(A).并规定零矩阵的秩等于0。 显然,若A为m×n矩阵,则0≤R(A).≤min{m,n}. 由于行列式与其转置行列式相等,因此 A T A^T A T 的子式与A的子式对应相等,从而 R ( A T ) = R ( A ) R(A^T)=R(A) R ( A T ) = R ( A ) 对于n阶矩阵A

学习OpenGL ES for Android(四)

↘锁芯ラ 提交于 2019-12-15 04:37:23
在学习图形变换之前,可以先参考文档 https://learnopengl-cn.github.io/01%20Getting%20started/07%20Transformations/ 学习基本概念。我们之前的绘制的都是静态的图像,如果我们使用改变顶点坐标的方式来让图像变换起来是非常麻烦的,而且会消耗更多的处理时间和性能。我们可以使用一个或多个矩阵(Matrix)对象可以更好的变换(Transform)一个物体。这些变换包括:移动,缩放,旋转。和桌面版不同的是,在Android中可以使用Matrix类来实现各种变换矩阵(注意是android.opengl.Matrix,不要和android.graphics包下的混淆了)。 multiplyMM(float[] result, int resultOffset, float[] lhs, int lhsOffset, float[] rhs, int rhsOffset):将两个4x4矩阵相乘,并将结果存储在第三个4x4矩阵中。以矩阵表示法表示:结果=lhs x rhs。 参数 result:保存结果的浮点数组 resultOffset:保存结果的浮点数组的偏移量 lhs:包含左侧矩阵的浮点数组 lhsOffset:左侧矩阵的浮点数组的偏移量 rhs:包含右侧矩阵的浮点数组 rhsOffset:右侧矩阵的浮点数组的偏移量