矩阵

数学基础 | (4) cs229线性代数基础

岁酱吖の 提交于 2019-12-10 14:02:40
目录 1. 基本概念和符号 2. 矩阵乘法 3. 运算和属性 4. 矩阵微分 1. 基本概念和符号 线性代数提供了一种紧凑地表示和操作线性方程组的方法。例如,以下方程组: 这是两个方程和两个变量,正如你从高中代数中所知,你可以找到 和 的唯一解(除非方程以某种方式退化,例如,如果第二个方程只是第一个的倍数,但在上面的情况下,实际上只有一个唯一解)。在矩阵表示法中,我们可以更紧凑地表达: 我们可以看到,这种形式的线性方程有许多优点(比如明显地节省空间). 基本符号 我们使用以下符号: 在许多情况下,将矩阵视为列向量或行向量的集合非常重要且方便。 通常,在向量而不是标量上操作在数学上(和概念上)更清晰。只要明确定义了符号,用于矩阵的列或行的表示方式并没有通用约定。 2. 矩阵乘法 向量-向量乘法 矩阵-向量乘法 矩阵-矩阵乘法 有了这些知识,我们现在可以看看四种不同的(形式不同,但结果是相同的)矩阵-矩阵乘法:也就是本节开头所定义的 的乘法。 矩阵C的第i列可以由矩阵A和矩阵B的第i列通过矩阵-向量乘积运算得到: 同理,矩阵C的第i行可以由矩阵A的第i行和矩阵B通过矩阵-向量乘积运算得到: 运算律: 3. 运算和属性 单位矩阵和对角矩阵 转置 对称矩阵 矩阵的迹 范数 线性相关性和秩 方阵的逆 请注意,并非所有矩阵都具有逆。例如,非方形矩阵根据没有逆的定义。然而,对于一些方形矩阵A

矩阵_方程组的几何解释

允我心安 提交于 2019-12-10 12:08:39
x + y = 1 x - y = 2 两种解释方法: 1.行图像:矩阵形式,Ax = b ,所求的未知数x和y理解为两条直线的交点,计算方法是点乘。 2.列图像:线性组合 ,所求的未知数x和y理解为两个向量的系数,怎样组合才能得到b。在运算量大的情况下推荐这种解释方法。 非奇异矩阵(可逆矩阵):线性组合的解释方式,列与列之间不存在线性关系,即互相独立,则认为这两个向量能够表达整个2维空间的所有向量。可逆可以理解为左右两边可通过求逆得到。 奇异矩阵(不可逆矩阵):即列与列之间存在线性关系,表达在2维空间中,两条直线退化成一条直线。 来源: CSDN 作者: Issac_etc 链接: https://blog.csdn.net/weixin_41303851/article/details/103471634

php判断二维数组中是否含有某个值

别等时光非礼了梦想. 提交于 2019-12-10 12:01:58
in_array — 检查数组中是否存在某个值.用递归来检验多维数组array(2) { [0]=> array(1) { ["bankcard"]=> string(19) "6212260200176770626" } [1]=> array(1) { ["bankcard"]=> string(19) "6217002430037113726" } }$aa = 6217002430037113726;$att = $g_att; public function deep_in_array($value, $array) { foreach($array as $item) { if(!is_array($item)) { if ($item == $value) { return true; } else { continue; } } if(in_array($value, $item)) { return true; } else if($this->deep_in_array($value, $item)) { return true; } } return false;} 来源: https://www.cnblogs.com/xiong-hua/p/12015049.html

Eigen学习笔记2-Matrix类

北慕城南 提交于 2019-12-10 11:47:14
原文:Eigen官网- The Matrix class 在Eigen中,所有的矩阵Matrix和向量Vector都是由Matrix类构造的。向量只不过是矩阵的特殊形式,只有一列(列向量)或者一行(行向量)。 Matrix类的参数 Matrix有6个模板参数,主要使用前三个参数,剩下的三个参数有默认值。 Matrix<typename Scalar, int RowsAtCompileTime, int ColsAtCompileTime> Scalar是表示元素的类型,取值可以是 float ,int, double 等; RowsAtCompileTime为矩阵的行,在程序编译的时候就已经知道的; ColsAtCompileTime为矩阵的列,在程序编译的时候就已经知道的。 Eigen 提供了一些常用的 定义好的类型。比如,Matrix4f表示一个类型为float的4*4矩阵,在Eigen中定义如下: typedef Matrix<float, 4, 4> Matrix4f; Vectors向量 列向量是默认向量。 Eigen中定义的包含3个float元素的列向量如下: typedef Matrix<float, 3, 1> Vector3f; 行向量定义如下: typedef Matrix<int, 1, 2> RowVector2i; Dynamic

Opencv中reshape函数

烂漫一生 提交于 2019-12-10 10:09:41
在opencv中,reshape函数比较有意思,它既可以改变矩阵的通道数,又可以对矩阵元素进行序列化,非常有用的一个函数。 函数原型: C++: Mat Mat::reshape(int cn, int rows=0) const 参数比较少,但设置的时候却要千万小心。 cn: 表示通道数(channels), 如果设为0,则表示保持通道数不变,否则则变为设置的通道数。 rows: 表示矩阵行数。 如果设为0,则表示保持原有的行数不变,否则则变为设置的行数。 首先设置一个初始矩阵:一个20行30列1通道的一个矩阵 int main() { Mat data = Mat(20, 30, CV_32F); //设置一个20行30列1通道的一个矩阵 cout << "行数: " << data.rows << endl; cout << "列数: " << data.cols << endl; cout << "通道: " << data.channels() << endl; system("pause"); return 1; } 输出: 第一次变化:通道数不变,将矩阵序列化1行N列的行向量。 int main() { Mat data = Mat(20, 30, CV_32F); //设置一个20行30列1通道的一个矩阵 cout << "行数: " << data.rows <<

主成分分析(PCA)原理详解

我的未来我决定 提交于 2019-12-10 10:07:52
个人分类: 机器学习与Python 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhongkelee/article/details/44064401 转载请声明出处: http://blog.csdn.net/zhongkelee/article/details/44064401 一、PCA简介 1. 相关背景 上完陈恩红老师的《机器学习与知识发现》和季海波老师的《矩阵代数》两门课之后,颇有体会。最近在做主成分分析和奇异值分解方面的项目,所以记录一下心得体会。 在许多领域的研究与应用中,往往需要对反映事物的多个变量进行大量的观测,收集大量数据以便进行分析寻找规律。多变量大样本无疑会为研究和应用提供了丰富的信息,但也在一定程度上增加了数据采集的工作量,更重要的是在多数情况下,许多变量之间可能存在相关性,从而增加了问题分析的复杂性,同时对分析带来不便。如果分别对每个指标进行分析,分析往往是孤立的,而不是综合的。盲目减少指标会损失很多信息,容易产生错误的结论。 因此需要找到一个合理的方法,在减少需要分析的指标同时,尽量减少原指标包含信息的损失,以达到对所收集数据进行全面分析的目的。由于各变量间存在一定的相关关系,因此有可能用较少的综合指标分别综合存在于各变量中的各类信息。主成分分析与因子分析就属于这类降维的方法。 2. 问题描述

矩阵微分

混江龙づ霸主 提交于 2019-12-10 07:07:07
目录 协梯度矩阵 梯度矩阵 实值向量函数的协梯度矩阵 实值矩阵函数的协梯度矩阵 实值标量函数的 H e s s i a n Hessian H e s s i a n 矩阵 (对称矩阵) 实矩阵微分计算公式 变元 :在初等数学里,变量或变元、元是一个用来表示值的符号,该值可以是随意的,也可能是未指定或未定的。 v e c ( ⋅ ) vec(\cdot) v e c ( ⋅ ) 表示矩阵化为列向量, r v e c ( ⋅ ) rvec(\cdot) r v e c ( ⋅ ) 表示矩阵化为行向量, v e c ( ⋅ ) vec(\cdot) v e c ( ⋅ ) 称为向量化算子, v e c ( ⋅ ) vec(\cdot) v e c ( ⋅ ) 又分为按行展开和按列展开,没有特殊说明的向量都为列向量。 u n v e c ( ⋅ ) unvec(\cdot) u n v e c ( ⋅ ) 表示列向量化为矩阵, u n r v e c ( ⋅ ) unrvec(\cdot) u n r v e c ( ⋅ ) 表示行向量化为矩阵 设矩阵 A = ( a i j ) ∈ R m × n A=(a_{ij})\in R_{m\times n} A = ( a i j ​ ) ∈ R m × n ​ ,把矩阵 A A A 的元素按行的顺序排列成一个列向量: v e c A =

矩阵的舞蹈

≯℡__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

python-numpy模块(对矩阵的处理,ndarray对象)

早过忘川 提交于 2019-12-10 05:09:46
一.numpy模块 import numpy as np 约定俗称要把他变成np 1.模块官方文档地址 https://docs.scipy.org/doc/numpy/reference/?v=20190307135750 2.创建矩阵 1.np.array import numpy as np #创建一维的ndarray对象 arr = np.array([1, 2, 3]) print(arr) #[1 2 3] #创建二维的ndarray对象 arr = np.array([[1, 2, 3], [4,5,6]]) print(arr) ''' [[1 2 3] [4 5 6]] ''' #创建三维的ndarray对象 arr = np.array([[[1, 2, 3],[3,2,1]], [[4,5,6],[6,5,4]]]) print(arr) ''' [[[1 2 3] [3 2 1]] [[4 5 6] [6 5 4]]] ''' #我们可以这样理解.其实内这个可以相当于几何里面的,点,线,面,里面各个元素相当一个点,一个列表里面有几个元素相当于线也就是一维,然后列表里面套列表相当于线,以此类推 推荐Python大牛在线分享技术 扣qun:855408893 领域:web开发,爬虫,数据分析,数据挖掘,人工智能 3.对于矩阵的操作(ndarray对象的方法) 1

一本通 1262 挖地雷(基础DP 与 城市交通路网思路类似 不过值在点上)

二次信任 提交于 2019-12-10 04:57:40
1262:【例9.6】挖地雷 【题目描述】 在一个地图上有nn个地窖(n≤200n≤200),每个地窖中埋有一定数量的地雷。同时,给出地窖之间的连接路径,并规定路径都是单向的,且保证都是小序号地窖指向大序号地窖,也不存在可以从一个地窖出发经过若干地窖后又回到原来地窖的路径。某人可以从任意一处开始挖地雷,然后沿着指出的连接往下挖(仅能选择一条路径),当无连接时挖地雷工作结束。设计一个挖地雷的方案,使他能挖到最多的地雷。 【输入】 第一行:地窖的个数; 第二行:为依次每个地窖地雷的个数; 下面若干行: xiyi //表示从xi可到yi,xi<yi。 最后一行为"0000"表示结束。 【输出】 k1−k2−…−kvk1−k2−…−kv //挖地雷的顺序 挖到最多的雷。 【输入样例】 6 5 10 20 5 4 5 1 2 1 4 2 4 3 4 4 5 4 6 5 6 0 0 【输出样例】 3-4-5-6 34 思路: 与城市交通路网类似,不过需要自己来设计二维数组。 各列号作为终点,各行号作为起点。 注意: 1、题目中所说的“ 规定路径都是单向的,且保证都是小序号地窖指向大序号地窖 ”也就是说,在确定这个点的最大值的时候需要借助的各种能够到达的路径的小序号的点一定是可以确定值的。 2、不同的是初始化,本道题的各个路径的起点不一定相同,而且值是在点上,不再是在路径上,所以如果没有前驱的话