矩阵转置

20190613――吴恩达机器学习 matlab教程

匿名 (未验证) 提交于 2019-12-02 23:42:01
~= 在matlab中表示非,而不是平常的编译语言中的!= display(a) 你可以在matlab中输出变量 分号的作用就是让矩阵换行到下一行 1:0.1:2 表示的是矩阵从1开始,以0.1的速率增长到2 一个元素为一列,所以这个得到的结果是行向量 ones(3,4) 表示建立了一个3x4的矩阵 同理为 zeros(a,b) rand(a,b) eye(4) eye表示生成一个单位矩阵 size(a) 会返回a的矩阵的大小 size(a,1) 会返回矩阵a的行数 以此类推 length(a) 返回最大维度的值 pwd 返回程序所在的当前路径 who whos who会列出来你定义的变量 whos会详细的列出你定义的变量的样式 clear 变量名 这个变量在上面的who列表就会被移除 save hello.mat v; 这样就会把v这个变量以hello.mat的形式保存 load hello.mat 读取hello.mat指令 a(3,2)表示的矩阵a的第三行第二列的数字是什么 a(2,:) 这个:号表示第二行所有的数字 a =[a,[100;200;300]] 相当于在a的最右边加上了一列新的100,200,300的元素 正常的 a*b a.*b a*b表示两个矩阵的乘积 log(v) exp(v) abs(v) log是相当于以e为底 exp是以e为底, abs是求绝对值 a

机器学习中的数学原理――矩阵论

匿名 (未验证) 提交于 2019-12-02 23:34:01
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/vivian_ll/article/details/90371758 正定矩阵 在线性代数里,正定矩阵 (positive definite matrix) 有时会简称为正定阵。 定义 : A A A 是n阶方阵,如果对任何非零向量 x x x ,都有 x T A x > 0 x^TAx>0 x T A x > 0 ,其中 x T x^T x T 表示 x x x 的转置,就称 A A A 正定矩阵。 性质 : 正定矩阵的行列式恒为正; 实对称矩阵 A A A 正定当且仅当 A A A 与单位矩阵合同; 两个正定矩阵的和是正定矩阵; 正实数与正定矩阵的乘积是正定矩阵。 等价命题 : 对于n阶实对称矩阵 A A A ,下列条件是等价的: A A A 是正定矩阵; A A A 的一切顺序主子式均为正; A A A 的一切主子式均为正; A A A 的特征值均为正; 存在实可逆矩阵C,使 A = C T C A=C^TC A = C T C ; 存在秩为n的m×n实矩阵B,使 A = B T B A=B^TB A = B T B ; 存在主对角线元素全为正的实三角矩阵R,使 A = R T R A=R^TR A = R T R 根据正定矩阵的定义及性质,判别对称矩阵A的正定性有两种方法:

MATLAB编程与应用系列-第3章 矩阵运算(2)

匿名 (未验证) 提交于 2019-12-02 22:56:40
本系列教程来源于出版设计《基于MATLAB编程基础与典型应用书籍》,如涉及版权问题,请联系:156204968@qq.com。 出版社:人民邮电出版社, 页数:525。 本系列教程目前基于MATLABR2006a,可能对于更高级版本的功能和函数有差异,教程中如有问题,请联系:156204968@qq.com ###3.1.5 矩阵函数 MATLAB提供了丰富的函数来实现对矩阵的各种运算,下面将逐步介绍。因篇幅关系,将不作数学方面的解释。表3.1所示为常用的矩阵运算函数以及函数相对应的功能描述。 表3.1 常用矩阵运算函数 函数名 功能 det(X) 计算方阵行列式 rank(X) 求矩阵的秩,得出的行列式不为零的最大方阵边长。 trace(X) 矩阵A的迹b,即A的对角线元素之和 expm(A) 使用Pade近似算法计算eA,这是一个内部函数,A为方阵 expm1(A) 使用一个M文件和内部函数相同的算法计算e^A expm2(A) 使用泰勒级数计算e^A expm3(A) 使用特征值和特征向量计算e^A logm(X) 计算矩阵X的对数,它是expm(X)的反函数 funm(X, fun) 指定的函数fun计算方阵X的函数矩阵 sqrtm(X) 计算矩阵A的平方根A1/2,相当于X*X=A,求X polyvalm(P, X) 按照矩阵运算规则计算多项式的值。其中

Python - 实现矩阵转置

匿名 (未验证) 提交于 2019-12-02 22:51:30
有个朋友提出了一个问题:手头上现在有一个二维列表,比如[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]],现在要把该二维列表变成为[[1, 4, 7, 10], [2, 5, 8, 11], [3, 6, 9, 12]]。 其实不动脑筋的话,用二重循环很容易写出来: #! /usr/bin/env python3 # -*- coding:utf-8 -*- # Author : mayi # Blog : http://www.cnblogs.com/mayi0312/ # Date : 2019/4/26 # Name : test01 # Software : PyCharm # Note : 用于实现实现矩阵(二重列表)转置 def trans ( l ): a = [[] for i in l [ 0 ]] for i in l : for j in range ( len ( i )): a [ j ]. append ( i [ j ]) return a # 主函数 def main (): l1 = [[ 1 , 2 , 3 ], [ 4 , 5 , 6 ], [ 7 , 8 , 9 ], [ 10 , 11 , 12 ]] l2 = trans ( l1 ) print ( l1 ) # [[1, 2, 3], [4,

Pytorch-Tensor基本操作

蓝咒 提交于 2019-12-02 20:21:36
(此文为个人学习pytorch时的笔记,便于之后的查询) Tensor基本操作 创建tensor: ​ 1.numpy向量转tensor: a=np.array([2,2,2]) b=torch.from_numpy(a) ​ 2.列表转tensor: a=torch.tensor([2,2]) b=torch.FloatTensor([2,2.])#不常用 c=torch.tensor([[1,2],[3,4]])#2*2矩阵 ​ 3.利用大写接受shape创建: torch.empty(2,3)#生成一个2*3的0矩阵 torch.Tensor(2,3)#生成一个2*3的随机矩阵 torch.IntTensor(2,3) torch.FloatTensor(2,3).type() 默认下,Tensor为‘torch.FloatTensor’类型,若要改为double类型的,则需要执行 torch.set_default_tensor_type(torch.DoubleTensor) 来修改。 ​ 4.随机创建Tensor: a=torch.rand(3,3)#创建3*3的0到1均匀分布的矩阵 a=torch.randn(3,3)#均值为0方差为1正态分布矩阵 torch.rand_like(a)#等价于下一条 torch.rand(a.shape) torch.randint

[转] 矩阵分解介绍

我们两清 提交于 2019-12-02 18:03:13
from: https://www.cnblogs.com/marsggbo/p/10152644.html#autoid-4-0-0 https://www.cnblogs.com/marsggbo/p/10156077.html 1 | 0 I. 行列式(Determinants)和迹(Trace) 1 | 1 1. 行列式(Determinants) 为避免和绝对值符号混淆,本文一般使用 𝑑 𝑒 𝑡 ( 𝐴 ) det(A)来表示矩阵 𝐴 A的行列式。另外这里的 𝐴 ∈ 𝑅 𝑛 × 𝑛 A∈Rn×n默认是方阵,因为只有方阵才能计算行列式。 行列式如何计算的就不在这里赘述了,下面简要给出行列式的各种性质和定理。 定理1 :当且仅当一个方阵的行列式不为0,则该方阵可逆。 定理2 :方阵 𝐴 A的行列式可沿着某一行或某一列的元素展开,形式如下: 沿着第 𝑖 i行展开: 𝑑 𝑒 𝑡 ( 𝐴 ) = ∑ 𝑘 = 1 𝑛 ( − 1 ) 𝑘 + 𝑖 𝑎 𝑖 𝑘 𝑑 𝑒 𝑡 ( 𝐴 𝑖 , 𝑘 ) det(A)=∑k=1n(−1)k+iaikdet(Ai,k) 沿着第 𝑖 i列展开: 𝑑 𝑒 𝑡 ( 𝐴 ) = ∑ 𝑘 = 1 𝑛 ( − 1 ) 𝑘 + 𝑖 𝑎 𝑘 𝑖 𝑑 𝑒 𝑡 ( 𝐴 𝑘 , 𝑖 ) det(A)=∑k=1n(−1)k+iakidet(Ak,i) 定理3

稀疏矩阵——三元组顺序表

心不动则不痛 提交于 2019-12-02 16:32:46
目录 稀疏矩阵 矩阵的转置 矩阵压缩存储-三元组顺序表 稀疏矩阵的转置 第一种:以列序为主序的转置 第二种:快速转置 完整代码: 稀疏矩阵 假设m n的矩阵中,有t的非零元,令s=t/m n,当,s<=0.05时,称此矩阵为稀疏矩阵,简单理解就是非零元特别少的矩阵 //一般矩阵a 1 2 3 a= 4 5 6 7 8 9 //稀疏矩阵s 0 0 0 0 0 0 2 0 0 5 s= 0 0 3 0 0 0 0 0 0 4 矩阵的转置 一个m * n的矩阵转置后变为 n * m的矩阵 //3*2的矩阵-转置前 1 2 4 5 7 8 //转置后变为2*3 1 4 7 2 5 8 转置后的矩阵每个元素的下表与原来的下表刚好相反,例如上面4转置前的下标为(2,1),转置后变为(1,2); 矩阵压缩存储-三元组顺序表 之所以引入三元组顺序表,是因为,对于稀疏矩阵而言,用传统的存储方法会造成存储空间的浪费 0 12 9 0 0 0 0 0 0 0 0 0 0 0 -3 0 0 0 0 14 0 M= 0 0 24 0 0 0 0 0 18 0 0 0 0 0 15 0 0 -7 0 0 0 //上面矩阵用三元组表示 i j v 1 2 12 1 3 9 3 1 -3 3 6 14 4 3 24 5 2 18 6 1 15 6 4 -7 typedef struct { int i,j; /

二维数组与矩阵

99封情书 提交于 2019-12-02 12:15:48
**题目1:**利用二维数组(double[])实现一个矩阵类:Matrix。 要求提供以下方法: (1)set(int row, int col, double value):将第row行第col列的元素赋值为value; (2)get(int row,int col):取第row行第col列的元素; (3)width():返回矩阵的列数; (4)height():返回矩阵的行数; (5)Matrix add(Matrix b):返回当前矩阵与矩阵b相加后的矩阵; (6)Matrix multiply(Matrix b):返回当前矩阵与矩阵b相乘后的矩阵。 (7)Matrix transpose():返回当前矩阵的转置矩阵; (8)getMax():返回矩阵中的最大值及其所在行和列; (9)print():以行和列的形式打印出当前矩阵。 编写测试方法,调用上述方法进行验证。 完整代码如下: class Matrix { double matrix [ ] [ ] ; public Matrix ( int row , int col ) { this . matrix = new double [ row ] [ col ] ; } //构造函数 public void set ( int row , int col , double value ) { this .

《机器学习》第三章 (2)

醉酒当歌 提交于 2019-12-02 11:10:31
线性判别分析LDA LDA思想:给定训练样例集,设法将样例投影到一条直线上,使得同类样例的投影点尽可能的接近、异类样例的投影点尽可能的远离;在对新样本进行分类的时候,将其投影到同样的一条直线,在根据投影点来确定样本的类别。 给定数据集 D = { ( x i , y i ) i = 1 m , y i ∈ { 0 , 1 } } D=\left\{(x_i,y_i)_{i=1}^m,y_i \in \left\{ 0,1 \right\} \right\} D = { ( x i ​ , y i ​ ) i = 1 m ​ , y i ​ ∈ { 0 , 1 } } 令 X i 、 μ i 、 ∑ i X_i、\mu_i、\sum_i X i ​ 、 μ i ​ 、 ∑ i ​ 分别表示第 i ∈ { 0 , 1 } i\in\left\{ 0,1\right\} i ∈ { 0 , 1 } 类示例的集合、均值向量、协方差矩阵。 示例的集合:数据集D 均值向量 μ i \mu_i μ i ​ : 假设样本 X i = ( x i 1 , x i 2 , . . . , x i p ) T , i = ( 1 , 2 , . . . , N ) X_i=(x_{i1},x_{i2},...,x_{ip})^T,i=(1,2,...,N) X i ​ = ( x i 1 ​ , x i

867 输出矩阵的转置

十年热恋 提交于 2019-12-02 06:43:20
1、题目 给定一个矩阵 A, 返回 A 的转置矩阵。 矩阵的转置是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。 示例 1: 输入:[[1,2,3],[4,5,6],[7,8,9]] 输出:[[1,4,7],[2,5,8],[3,6,9]] 示例 2: 输入:[[1,2,3],[4,5,6]] 输出:[[1,4],[2,5],[3,6]] 2、代码 1 //题目中学到的知识 2 //int row=A.size();求行数 3 //int col=A[0].size();求列数 4 //vector<vector<int>>output(col,vector<int>(row)); 5 class Solution { 6 public: 7 vector<vector<int>> transpose(vector<vector<int>>& A) { 8 int row=A.size(); 9 int col=A[0].size(); 10 vector<vector<int>>output(col,vector<int>(row));//重新申请转置矩阵 11 for(int i=0;i<col;i++){ 12 for(int j=0;j<row;j++){ 13 output[i][j]=A[j][i]; 14 } 15 } 16 return output; 17 }