矩阵转置

矩阵的舞蹈

≯℡__Kan透↙ 提交于 2019-12-10 06:53:50
Time Limit: 1000 ms Memory Limit: 32768 KiB Problem Description 矩阵是非常美妙的东西,可以用来解方程,以及解决一些图论的问题等,应用很 广泛。即使没有学过线性代数,大家也一定接触过矩阵,在编程中可以理解为二维的表。 矩阵有很多操作就像舞蹈一样,如行列的置换,矩阵的转置等。今天我们只看矩阵的旋转,希望得到当前矩阵顺时针旋转90度以后得到的矩阵。 Input 输入数据的第一行是一个正整数T,代表有T组测试样例。接下来T组数据,每组数据第一行是两个整数M,N (0 < M , N < 100),分别代表矩阵的行数和列数。然后是矩阵本身,共M行,每行N个数据用空格隔开。 Output 对于每组输入的矩阵,第一行输出Case #k:(k为该组数据的序号,具体格式见样例),然后输出其旋转后的矩阵。 Sample Input 2 4 4 1 2 3 4 5 6 7 8 6 6 6 6 8 8 8 8 2 3 1 2 3 4 5 6 Sample Output Case #1: 8 6 5 1 8 6 6 2 8 6 7 3 8 6 8 4 Case #2: 4 1 5 2 6 3 Hint Source tongjiantao # include <stdio.h> # include <stdlib.h> # include

主成分分析(PCA)原理总结

穿精又带淫゛_ 提交于 2019-12-10 04:13:48
    主成分分析(Principal components analysis,以下简称PCA)是最重要的降维方法之一。在数据压缩消除冗余和数据噪音消除等领域都有广泛的应用。一般我们提到降维最容易想到的算法就是PCA,下面我们就对PCA的原理做一个总结。 1. PCA的思想     PCA顾名思义,就是找出数据里最主要的方面,用数据里最主要的方面来代替原始数据。具体的,假如我们的数据集是n维的,共有m个数据$(x^{(1)},x^{(2)},...,x^{(m)})$。我们希望将这m个数据的维度从n维降到n'维,希望这m个n'维的数据集尽可能的代表原始数据集。我们知道数据从n维降到n'维肯定会有损失,但是我们希望损失尽可能的小。那么如何让这n'维的数据尽可能表示原来的数据呢?     我们先看看最简单的情况,也就是n=2,n'=1,也就是将数据从二维降维到一维。数据如下图。我们希望找到某一个维度方向,它可以代表这两个维度的数据。图中列了两个向量方向,$u_1$和$u_2$,那么哪个向量可以更好的代表原始数据集呢?从直观上也可以看出,$u_1$比$u_2$好。     为什么$u_1$比$u_2$好呢?可以有两种解释,第一种解释是样本点到这个直线的距离足够近,第二种解释是样本点在这个直线上的投影能尽可能的分开。     假如我们把n'从1维推广到任意维,则我们的希望降维的标准为

矩阵转置

江枫思渺然 提交于 2019-12-09 13:34:13
Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 输入N*N的矩阵,输出它的转置矩阵。 Input 第一行为整数N(1≤N≤100)。 接着是一个N*N的矩阵。 Output 转置矩阵。 Sample Input 2 1 2 1 2 Sample Output 1 1 2 2 Hint Source ZJGSU **本题的核心语句为b[j][i] = a[i][j]; # include <stdio.h> # include <stdlib.h> int main ( ) { int n ; int a [ 100 ] [ 100 ] , b [ 100 ] [ 100 ] ; //定义两个数组:a数组为存放原数据,b数组为转置后的数组; int i , j ; scanf ( "%d" , & n ) ; for ( i = 0 ; i < n ; i ++ ) { for ( j = 0 ; j < n ; j ++ ) { scanf ( "%d" , & a [ i ] [ j ] ) ; //输入矩阵数据 } } for ( i = 0 ; i < n ; i ++ ) { for ( j = 0 ; j < n ; j ++ ) { b [ j ] [ i ] = a [ i ] [ j ]

坐标转换矩阵

[亡魂溺海] 提交于 2019-12-09 12:01:42
参考:《Robotics,Vision and Control》、《鱼雷航行力学》、其他学位论文 书上直接给出了分别绕x,y,z轴旋转sita角度的矩阵,而且这三个矩阵也经常见到。但值得注意的是,这三个矩阵其实是坐标系的转换矩阵,公示为 原坐标=[坐标转换矩阵]新坐标 而我们通常是希望等式坐标是新坐标系里的坐标,所以此处的矩阵需要求逆,又因为是正交矩阵,所以求逆即转置。 看了一些论文,虽然最后总的坐标转换矩阵是对的,但描述上缺少了将各坐标轴的转换矩阵的转置操作,让人摸不着头脑,如下: 除此之外,也有的书籍和论文,把前面的推导过程省略,直接给出了点对点的坐标转换矩阵,让人感觉很奇怪,甚至怀疑结论的正确性。于此同时,根据建立的坐标系的不同,旋转顺序也有差异,但有一定的标准。 下面《鱼雷航行力学》书上的旋转顺序,是因为建立了“东-天-南”的地面坐标系,即x轴指东,y轴指天,z轴指南,与之对应的雷体坐标系也是按照“东-天-南”来使用,其旋转顺序为y-z-x,分别旋转了航向-俯仰-翻滚角。 而上面的旋转矩阵来自于某些航空类的书籍和论文,因为是z轴在垂直方向(有的是z轴指天,有的是z轴指地),常用的导航角旋转顺序是z-y-x,同样是按照航向-俯仰-翻滚的顺序。 来源: https://www.cnblogs.com/j-c-y/p/12010152.html

Python中的图像处理

有些话、适合烂在心里 提交于 2019-12-08 03:00:03
http://www.ituring.com.cn/tupubarticle/2024 第 1 章 基本的图像操作和处理 本章讲解操作和处理图像的基础知识,将通过大量示例介绍处理图像所需的 Python 工具包,并介绍用于读取图像、图像转换和缩放、计算导数、画图和保存结果等的基本工具。这些工具的使用将贯穿本书的剩余章节。 1.1 PIL:Python图像处理类库 PIL(Python Imaging Library Python,图像处理类库)提供了通用的图像处理功能,以及大量有用的基本图像操作,比如图像缩放、裁剪、旋转、颜色转换等。PIL 是免费的,可以从 http://www.pythonware.com/products/pil/ 下载。 利用 PIL 中的函数,我们可以从大多数图像格式的文件中读取数据,然后写入最常见的图像格式文件中。PIL 中最重要的模块为 Image 。要读取一幅图像,可以使用: from PIL import Image pil_im = Image . open ( 'empire.jpg' ) 上述代码的返回值 pil_im 是一个 PIL 图像对象。 图像的颜色转换可以使用 convert() 方法来实现。要读取一幅图像,并将其转换成灰度图像,只需要加上 convert('L') ,如下所示: pil_im = Image . open (

python scipy 稀疏矩阵详解

核能气质少年 提交于 2019-12-07 22:20:15
文章目录 稀疏矩阵格式 coo_matrix csr_matrix csc_matrix lil_matrix dok_matrix dia_matrix bsr_matrix 实用函数 经验总结 稀疏矩阵格式 coo_matrix    coo_matrix 是最简单的稀疏矩阵存储方式,采用三元组 (row, col, data) (或称为 ijv format )的形式来存储矩阵中非零元素的信息。在实际使用中,一般 coo_matrix 用来创建矩阵,因为 coo_matrix 无法对矩阵的元素进行增删改操作;创建成功之后可以转化成其他格式的稀疏矩阵(如 csr_matrix 、 csc_matrix )进行转置、矩阵乘法等操作。 ​ coo_matrix 可以通过四种方式实例化,除了可以通过 coo_matrix(D) , D代表密集矩阵; coo_matrix(S) , S代表其他类型稀疏矩阵或者 coo_matrix((M, N), [dtype]) 构建一个shape为M*N的空矩阵,默认数据类型是 d ,还可以通过 (row, col, data) 三元组初始化: >> > import numpy as np >> > from scipy . sparse import coo_matrix >> > _row = np . array ( [ 0 , 3 , 1

矩阵论学习笔记五:特征值的估计及对称矩阵的极性

痴心易碎 提交于 2019-12-06 21:51:47
参考书:《矩阵论》第3版,程云鹏 张凯院 徐仲编著 西北工业大学出版社 1. 特征值的估计 1)特征值估计的意义:复数域上矩阵的特征值的计算一般比较困难;在大量应用中,往往不需精确计算特征值,只需估计出它们所在的范围;所以从矩阵的元素出发,若能用较简便的运算给出矩阵特征值的范围,将有着十分重要的意义 2)特征值的界 a)估计矩阵特征值的模的上界的方法 定理5.1:实矩阵的特征值虚部模值范围 定理5.1推论:实对称矩阵的特征值都是实数 引理1 定理5.2:复矩阵特征值的模、实部模、虚部模范围;证明据特征方程和引理1 定理5.2推论:Hermite矩阵的特征值都是实数,反Hermite矩阵的特征值为零或纯虚数 b)估计矩阵特征值之乘积的模的界的方法 矩阵按行严格对角占优、按行(弱)对角占优的定义(定义5.1):Rr(A) 矩阵按列严格对角占优、按列(弱)对角占优的定义(定义5.2): 定理5.3:A为n*n的复矩阵,若A按行严格对角占优,...;s>r时,A的(s,j)元素值为零时,等号成立 定理5.4(Hadamard's inequality):A为n*n复矩阵 估计矩阵按模最小特征值的上界 c)估计矩阵特征值模之平方和的上界的方法 定理5.5(Schur"s inequality):n*n的复矩阵A的特征值为a1,...,an,则有A特征值模值平方之和 <= A元素模值平方直和

Lush手册——第一章 简介

吃可爱长大的小学妹 提交于 2019-12-06 21:23:27
简介 本章将展示Lush及其能力与特性。 1.1 Lush展示 Lush是一门面向对象的编程语言,是为对大规模数值运算与图形化应用感兴趣的研究人员、实验人员和工程师设计的。Lush用于以下场景,即想要将高级的、弱类型的解释性语言的灵活性,强类型的、本地编译型的语言的高效性,还有与C、C++等语言编写的代码容易结合这些特性组合在一起。 在与解释型语言(如Python、Perl、Matlab、S+甚至BASIC)和使用编译型语言(例如C语言)结合的相关工程上,Lush的优势尤其意义重大。通过使用Lush,我们将获得解释型和编译型编程世界里的最好的部分,并最终合而为一: 一个拥有简单的类Lisp语法的、带松散类型的、带垃圾回收机制的、动态作用域的解释型语言; 一个带有类Lisp语法的、带有强类型、词法作用域的编译型语言; C语言可以自由地混合到Lush代码里,该Lush代码可以是一段单独的程序或者一个单独的函数。 这听起来有点复杂,其实不然。事实上,Lush的设计原则就是易学易用。 Lush的主要特征有以下几点: 一个整洁的、简单的和易学的类Lisp语法; 一个非常高效的本地编译器(由C语言实现); 一个与C函数与库对接的容易的方式,联通对用其它语言编写的对象文件的强大的动态加载能力; 自由地将Lisp代码与C代码混合到一个函数里能力; 一个包含向量、矩阵和张量操作的强大的集合;

深度学习理论之数学基础

一笑奈何 提交于 2019-12-06 16:34:28
一、线性代数 1.1 标量、向量、矩阵和张量 标量 :一个单独的数 向量 :一列数,一维数组 矩阵 :二维数组 张量:超过二维的数组 转置: 以对角线为轴的镜像。 1.2 矩阵和向量相乘 矩阵乘法 :两个矩阵A和B的矩阵乘积(matrix product)是第三个矩阵 C。为了使乘法定义良好,矩阵 A 的列数必须和矩阵 B 的行数相等。如果矩阵 A 的形状是 m × n,矩阵 B 的形状是 n × p,那么矩阵C 的形状是 m × p 点积: 1.3 单位矩阵和逆矩阵 单位矩阵:所有沿主对角线的元素都是 1,而所有其他位置的元素都是0,计作: 逆矩阵: 求逆矩阵的条件: 矩阵A必须是一个 方阵(square),即 m = n,并且所有列向量都是线性无关的。一个列向量线性相关的方阵被称为 奇异的 (singular)。 1.4 范数 L 2 范数: 当 p = 2 时,L2 范数被称为 欧几里得范数(Euclidean norm)。它表示从原点出发到向量 x 确定的点的欧几里得距离。L2 范数在机器学习中出现地十分频繁,经常简化表示为 ∥x∥,略去了下标 2。平方 L 2 范数也经常用来衡量向量的大小. L 1 范数: 当机器学习问题中零和非零元素之间的差异非常重要时,通常会使用 L 1 范数 Frobenius 范数: 有时候我们可能也希望衡量矩阵的大小。 1.5

深度学习入门之数学基础概念

独自空忆成欢 提交于 2019-12-06 16:33:48
深度学习之线代复习 标量、向量、矩阵和张量 标量(scalar):一个标量就是一个单独的数。 向量:一个向量是一列数,这些数是有序排列的。我们可以把向量看作空间中的点,每个元素是不同坐标轴上的坐标。 矩阵:矩阵是一个二维数组,其中的每一个元素被两个索引(而非 一个)所确定。 张量(tensor):在某些情况下,我们会讨论坐标超过两维的数组。一般地,一 个数组中的元素分布在若干维坐标的规则网格中,我们称之为张量。 矩阵的向量相乘 在深度学习中, 我们也使用一些不那么常规的符号。我们允许矩阵和向量相 加,产生另一个矩阵:C = A + b,其中 C i , j C_{i,j} C i , j ​ = A i , j A_{i,j} A i , j ​ + b j b_j b j ​ 。换言之,向量 b 和矩阵 A 的每一行相加。这个简写方法使我们无需在加法操作前定义一个将向量 b 复制 到每一行而生成的矩阵。这种隐式地复制向量 b 到很多位置的方式,被称为广播。 A ⊙ B(dot product)被称为元素对应乘积(element-wise product)或者Hadamard乘积(Hadamard product) 矩阵乘积满足分配律,结合率,但不一定满足AB=BA的交换律。 单位矩阵和逆矩阵 任意 向量和单位矩阵相乘,都不会改变。我们将保持 n 维向量不变的单位矩阵记作 I n