矩阵

稀疏数组

China☆狼群 提交于 2019-12-16 10:53:01
1. 先看一个实际的需求 编写的五子棋程序中,有存盘退出和续上盘的功能 2. 分析问题: 因为该二维数组的很多值是默认值0, 因此记录了 很多没有意义的数据 .-> 稀疏数组 。 3. 基本介绍 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。 稀疏数组的处理方法是: 记录数组一共有几行几列,有多少个不同的值 把具有不同值的元素的行列及值记录在一个小规模的数组中,从而 缩小程序 的规模 4. 应用实例 使用稀疏数组,来保留类似前面的二维数组(棋盘、地图等等) 把稀疏数组存盘,并且可以从新恢复原来的二维数组数 5. 整体思路分析 二维数组 转 稀疏数组的思路 遍历 原始的二维数组,得到有效数据的个数 sum 根据sum 就可以创建 稀疏数组 sparseArr int[sum + 1] [3] 将二维数组的有效数据数据存入到 稀疏数组 稀疏数组转原始的二维数组的思路 先读取稀疏数组的第一行,根据第一行的数据,创建原始的二维数组,比如上面的 chessArr2 = int [11][11] 在读取稀疏数组后几行的数据,并赋给 原始的二维数组 即可. 6. 代码实现 package com.atguigu.sparsearray; /** * @author john * @date 2019/12/14 - 17:10 */ public class

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维

PTA——7-3 判断上三角矩阵

自古美人都是妖i 提交于 2019-12-16 03:27:29
上三角矩阵指主对角线以下的元素都为0的矩阵;主对角线为从矩阵的左上角至右下角的连线。 本题要求编写程序,判断一个给定的方阵是否上三角矩阵。 输入格式: 输入第一行给出一个正整数T,为待测矩阵的个数。接下来给出T个矩阵的信息:每个矩阵信息的第一行给出一个不超过10的正整数n。随后n行,每行给出n个整数,其间以空格分隔。 输出格式: 每个矩阵的判断结果占一行。如果输入的矩阵是上三角矩阵,输出“YES”,否则输出“NO”。 输入样例: 2 3 1 2 3 0 4 5 0 0 6 2 1 0 -8 2 输出样例: YES NO //3 # include <stdio.h> int is_up ( int a [ ] [ 11 ] [ 11 ] , int p ) ; int pe [ 10 ] ; int main ( ) { int T , p , i , j ; int a [ 11 ] [ 11 ] [ 11 ] ; scanf ( "%d" , & T ) ; for ( p = 1 ; p <= T ; p ++ ) { scanf ( "%d" , & pe [ p ] ) ; for ( i = 1 ; i <= pe [ p ] ; i ++ ) { for ( j = 1 ; j <= pe [ p ] ; j ++ ) { scanf ( "%d" , & a [ p

浅析Word2Vec

烈酒焚心 提交于 2019-12-16 02:08:06
浅析Word2Vec 1 预备内容 1.1 NLP任务 1.2 Distributional Semantics 1.3 one-hot向量 1.4 softmax函数 2 浅析Word2Vec 2.1 概述 2.2 Skip-Gram模型 2.2.1 模型的细节 2.2.2 隐层 2.2.3 输出层 2.2.4 小结 2.3 Continuous Bag of Words模型(CBOW) 2.4 加速策略1——Hierarchical Softmax 2.5 加速策略2——Negative Sampling 2.5.1 Subsampling Frequent Words 2.5.2 负采样 Negative Sampling 2.5.3 选择负样本 2.6 加速策略小结 2.7 模型训练的一些参数设定 参考文献 1 预备内容 1.1 NLP任务 NLP的目标是设计算法让计算机去理解自然语言并去解决某些问题。 所有NLP任务德第一步,就是如何将单词表示为模型的输入。为了使得大多数NLP任务表现良好,我们首先需要能够用向量表示单词的相似性和差异性。有了这些词向量,我们可以简单的用向量自身的能力来计算相似性(如Jaccard, cos等) 1.2 Distributional Semantics A word’s meaning is given by the words that

【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() -逐元素乘法 处理向量

【Python学习之路】Numpy 矩阵

早过忘川 提交于 2019-12-15 21:58:17
矩阵 使用 mat 方法将 2 维数组转化为矩阵: import numpy as np a = np . array ( [ [ 1 , 2 , 4 ] , [ 2 , 5 , 3 ] , [ 7 , 8 , 9 ] ] ) A = np . mat ( a ) A matrix([[1, 2, 4], [2, 5, 3], [7, 8, 9]]) 也可以使用 Matlab 的语法传入一个字符串来生成矩阵: A = np . mat ( '1,2,4;2,5,3;7,8,9' ) A matrix([[1, 2, 4], [2, 5, 3], [7, 8, 9]]) 利用分块创造新的矩阵: a = np . array ( [ [ 1 , 2 ] , [ 3 , 4 ] ] ) b = np . array ( [ [ 10 , 20 ] , [ 30 , 40 ] ] ) np . bmat ( 'a,b;b,a' ) matrix([[ 1, 2, 10, 20], [ 3, 4, 30, 40], [10, 20, 1, 2], [30, 40, 3, 4]]) 矩阵与向量的乘法: x = np . array ( [ [ 1 ] , [ 2 ] , [ 3 ] ] ) x array([[1], [2], [3]]) A * x matrix([[17], [21],

打印杨辉三角

浪尽此生 提交于 2019-12-15 20:53:51
题目 解题方法的核心代码 用二维数组做题。 每个数是由上一行两个数之和得出。 这是为了二维数组的初始化。 流程图 遇到的困难及解决方法 困难: 1.对初始数组的赋值,不能为零。 2.对整个版面的排版。 解决方法:1.全改为一,由于杨辉三角从1开始数。 2.用之前所学行列问题来用空格换行符,数清每一行所需要的空格用两个for循环。 来源: https://www.cnblogs.com/jsyhaoshuai/p/12045648.html

基于多尺度全卷积孪生网络的目标跟踪算法

痞子三分冷 提交于 2019-12-15 19:41:38
基于多尺度全卷积孪生网络的目标跟踪算法 一.背景技术介绍 传统的跟踪算法大多从物体的外观出发,只能在线学习,从当前的视频中在线抓取数据进行学习跟踪的算法,如:TLD、Struck、KCF,这类算法必须足够简单才行,否则耗时严重。当然现在也有人使用卷积网络进行离线训练,在线跟踪,但是当跟踪目标未知时,需要利用随机梯度下降法(SGD)在线微调网络权重,从而使得速度下降,做不到实时跟踪。 综上,浅层学习方式,如相关滤波,利用网络内部参数作为特征,这样不能充分发挥“端对端”的优势。而利用SGD微调多层网络参数的方式无法实时跟踪。 近期的研究工作有: 1.利用RNN网络进行训练,通过预测目标在各帧中的位置来跟踪,同时加入了可区分的“注意力机制”。虽然该方法目前无法在现有的标准测试集上取得显著的结果,但是有足够的潜力; 2.利用粒子滤波的方式,通过训练好的距离矩阵比较当前帧与第一帧的区别,其中距离矩阵是利用了首先玻尔兹曼机(RBM)和随机点的方式训练所得。此方法与本文中的方法差异太大,因此没有使用该方法。 3.离线预训练+在线微调方式,其中SO-DLT和MDNet均离线训练了一个相似性检测的卷积网络,并在线使用SGD算法进行微调。利用这种方法的Deep SRDCF和 FCNT均取得了很好的结果,但是在速度上依旧不行。 4.GOTURN算法也采用了YCNN的结构

1124:矩阵加法

假装没事ソ 提交于 2019-12-15 18:02:09
【题目描述】 输入两个n行m列的矩阵A和B,输出它们的和A+B。 【输入】 第一行包含两个整数n和m,表示矩阵的行数和列数(1≤n≤100,1≤m≤100)。 接下来n行,每行m个整数,表示矩阵A的元素。 接下来n行,每行m个整数,表示矩阵B的元素。 相邻两个整数之间用单个空格隔开,每个元素均在1~1000之间。 【输出】 n行,每行m个整数,表示矩阵加法的结果。相邻两个整数之间用单个空格隔开。 【输入样例】 3 3 1 2 3 1 2 3 1 2 3 1 2 3 4 5 6 7 8 9 【输出样例】 2 4 6 5 7 9 8 10 12 #include<iostream> using namespace std; int i,j; #define A 100+5 int main() { int m,n; int sum=0; cin>>m>>n; int a[A][A],b[A][A]; for(i=0;i<m;i++) { for(j=0;j<n;j++) { cin>>a[i][j]; } } for(i=0;i<m;i++) { for(j=0;j<n;j++) { cin>>b[i][j]; b[i][j]+=a[i][j]; } } for(i=0;i<m;i++) { for(j=0;j<n;j++) { cout<<b[i][j]<<" "; } cout<