矩阵

编程计算2×3阶矩阵A和3×2阶矩阵B之积C。 矩阵相乘的基本方法是: 矩阵A的第i行的所有元素同矩阵B第j列的元素对应相乘, 并把相乘的结果相加,最终得到的值就是矩阵C的第i行第j列的值。 要求: (1)从键盘分别输入矩阵A和B, 输出乘积矩阵C (2) **输入提示信息为: 输入矩阵A之前提示:\"Input 2*3 matrix a:\\n\" 输入矩阵B之前提示

心不动则不痛 提交于 2019-12-06 14:56:25
编程计算2×3阶矩阵A和3×2阶矩阵B之积C。 矩阵相乘的基本方法是: 矩阵A的第i行的所有元素同矩阵B第j列的元素对应相乘, 并把相乘的结果相加,最终得到的值就是矩阵C的第i行第j列的值。 要求: (1)从键盘分别输入矩阵A和B, 输出乘积矩阵C (2) **输入提示信息为: 输入矩阵A之前提示:"Input 2*3 matrix a:\n" 输入矩阵B之前提示:"Input 3*2 matrix b:\n" **输入矩阵中每个值的格式为:"%d" **输出格式为: 输出矩阵C之前提示:"Results:\n" 输出矩阵C中每个值的格式:"%6d" 输出矩阵C各行结束时换行 例如: Input 2*3 matrix a: 1 2 3 0 1 2 Input 3*2 matrix b: 1 -2 2 3 1 3 Results: 8 13 4 9 #include <stdio.h> #define ROW 2 #define COL 3 main() { int a[ROW][COL], b[COL][ROW], c[ROW][ROW], i, j,k; printf("Input 2*3 matrix a:\n"); for (i=0; i<ROW ;i++)//1 { for (j=0; j<COL; j++)//1 { scanf("%d", &a[i][j]);//1 }

求解 Ax=b

偶尔善良 提交于 2019-12-06 14:41:11
一 线性方程组 Ax=b 的解释 线性方程组 Ax=b,其中矩阵 A 尺寸为 m*n, 当 A 为方正时,可使用消元法判断解是否存在并求解。当 A 为长方形矩阵时,同样可使用消元法判断解存在情况并求解。 线性方程组 Ax=b 可以使用不同观点看待: 1)可看作函数 f(x)=b,即输入任意 n 维向量 x,经过矩阵 A 变换处理,输出 m 维向量 b,即向量 b 由向量 x 通过矩阵 A 线性变换得到; 2)令 , ,Ax=b 可表示为 ,进一步改写得 , 当 b 是矩阵 A 列向量 的线性组合时,或者 b 在矩阵 A 列空间时,Ax=b 可解,否则 Ax=b 不可解; 3)当矩阵 A 存在左逆 B 时,BA=I,则有 BAx=Bb,x=Bb;当矩阵A存在右逆 C 时,AC=I, 则有 Ax=ACb,x=Cb;求解线性方程组转换为求矩阵 A 是否存在左逆或者右逆,以及其逆是否唯一; 4)当向量 满足 时,则向量 位于矩阵 A 的零空间,令 为 Ax=b 的一个特解,则有 成立,也即 Ax=b 的解为 ; 二 矩阵 A 的四个子空间 考虑矩阵 A 为 m*n,该矩阵由 n 个 m 维列向量构成, 1)对 n 个列向量进行任意线性组合 , 其中 为任意实数序列,则向量 a 构成的集合为矩阵 A 的列空间,表示为 C(A); 2)对 m 个行向量进行线性组合 ,其中 为任意实数序列

隐马尔可夫模型(HMM)的分类

拜拜、爱过 提交于 2019-12-06 14:35:04
1、遍历型(ergodic model) 即每个状态都可以由任意一个状态演变而来,aij>0,for all i , j. 如图: 2、left-right type of HMM 每个状态只能由下标值小于当前值得状态以及其本身转移而来,即从左向右转移。因此状态转移矩阵有如下特性: , 这种由左向右转移的HMM转移状态矩阵为上半矩阵,同时此类型矩阵一般同时存在一个最长跳跃距离,即有 是最长跳跃距离,以图中为例, =2. 这种类型的HMM模型能够非常好的用于随时间变化的信号,比如语音信号。 3、其他类型 上图所示HMM模型严格来说也属于left-right type of HMM,但是它又存在它自己独特的规则,更类似于两个平行的left-right HMM的组合模型。 但是我们应该明白,对于不同类型的HMM,对于学习问题的求解来说步骤都是一样的。 来源: CSDN 作者: Alla_Z 链接: https://blog.csdn.net/Alla_Z/article/details/80314699

poj 3070 矩阵计算Fibonacci

依然范特西╮ 提交于 2019-12-06 14:33:59
地址 http://poj.org/problem?id=3070 大意是输入一个数字 输出位于Fibonacci数列该位置的数字模10000的结果 由于n比较大 0 ≤ n ≤ 1,000,000,000 所以开数组是不可能了 只能实时计算 使用矩阵可以加速Fibonacci数列的推导 经过精心设置的矩阵相乘是可以从Fn-1 Fn-2推导出Fn的 那么设置好的矩阵的多次相乘是不是就可以从F0 F1推到出Fn呢? 是的 如图 1 1 1 0 矩阵为A那么 A^(n-1) 与F1 F0矩阵的乘法就是可以推到出 Fn 代码借用了之前的快速幂代码 不是模板 所以虽然可以AC但是代码复用性不好 先学理论 板子日后再找 1 #include <iostream> 2 #include <vector> 3 #include <cstring> 4 5 using namespace std; 6 7 struct matrix { 8 int data[35][35]; 9 }; 10 11 int n = 2; 12 int m = 10000; 13 int k = 0; 14 15 //矩阵乘法 16 matrix mul(matrix a, matrix b) 17 { 18 matrix c; 19 memset(c.data, 0, sizeof(c.data)); 20 for

奇异值与奇异向量

依然范特西╮ 提交于 2019-12-06 14:33:49
定义 特征值分解是求解方阵的特征,对于非方阵而言可以通过奇异值分解描述矩阵的特征。 对于矩阵A为m*n的矩阵,可以分解成如下形式: A是一个m*n的矩阵,那么得到的U是一个m * m的方阵(里面的向量是正交的,称为左奇异向量),Σ是一个m * n的矩阵(除了对角线的元素外,其它都是0,对角线上的元素称为奇异值),VT是一个n * n的矩阵(里面的向量也是正交的,称为右奇异向量)。 右奇异向量求解 矩阵A左乘转置AT,将会得到一个方阵(n*n),通过该方阵求特征值和特征向量,该特征向量即A的右奇异向量。 上面的Vi构成的矩阵即A的右奇异矩阵。 右奇异向量和奇异值的求解 根据上面得到的特征值λ,计算奇异值σ,以及左奇异向量u: python代码实现 dataA = np.array([[1, 1], [1, 1], [0, 0]]) lvecs, vals, rvecs = np.linalg.svd(dataA) 来源: https://my.oschina.net/u/4228078/blog/3137876

马尔可夫模型学习

落爺英雄遲暮 提交于 2019-12-06 14:28:29
1. 马尔科夫模型 1.1马尔可夫过程 马尔可夫过程( Markov process )是一类 随机过程 。它的原始模型 马尔可夫链 ,由俄国数学家 A.A. 马尔可夫 于 1907 年提出。该过程具有如下特性:在已知目前状态 (现在)的条件下,它未来的演变 (将来)不依赖于它以往的演变 ( 过去 ) 。 例如森林中动物头数的变化构成 —— 马尔可夫过程 。在现实世界中,有很多过程都是马尔可夫过程,如液体中微粒所作的 布朗运动 、传染病受感染的人数、车站的候车人数等,都可视为马尔可夫过程。 在马尔可夫性的定义中, " 现在 " 是指固定的时刻,但实际问题中常需把马尔可夫性中的 “ 现在 ” 这个时刻概念推广为停时(见随机过程)。例如考察从圆心出发的平面上的布朗运动,如果要研究首次到达圆周的时刻 τ 以前的事件和以后的事件的条件独立性,这里 τ 为停时,并且认为 τ 是 “ 现在 ” 。如果把 “ 现在 ” 推广为停时情形的 “ 现在 ” ,在已知 “ 现在 ” 的条件下, “ 将来 ” 与 “ 过去 ” 无关,这种特性就叫强马尔可夫性。具有这种性质的马尔可夫过程叫强马尔可夫过程。在相当一段时间内,不少人认为马尔可夫过程必然是强马尔可夫过程。首次提出对强马尔可夫性需要严格证明的是 J.L. 杜布 。直到 1956 年,才有人找到马尔可夫过程不是强马尔可夫过程的例子

隐马尔科夫模型学习笔记

荒凉一梦 提交于 2019-12-06 14:16:15
隐马尔科夫模型 Viviterbi算法 马尔科夫性质 马尔科夫链 马尔科夫链案例 HMM HMM(Hidden Markov Model)隐马尔科夫模型是一种统计模型,在语音识别、行为识别、NLP、故障诊断等领域具有高效的性能。 HMM是关于时序概率模型,描述一个含有未知参数的马尔科夫链所生成的不可观测的状态序列,再由各个状态生成观测随机序列的过程。HMM是一个双重随机过程--具有一定状态的隐马尔科夫链和随机的观测序列。 HMM随机生成的状态随机序列被称为状态序列;每一个状态生成的一个观测,由此产生的观察随机序列,被称为观测序列。 HMM由隐含状态S、可观测状态O、初始状态概率矩阵π、隐含状态转移概率矩阵A、可观测值转移矩阵B(又称为混淆矩阵,Confusion Matrix); π和A决定了状态序列,B决定了观测序列,因此HMM可以使用三元符号表示,称为HMM的三元素: HMM的两个性质 HMM案例 HMM的三个问题 概率计算的问题: 前向-后向算法 给定模型λ=(A,B,π)和观测序列Q={q1,q2,...,qT},计算模型λ下观测到序列Q出现的概率P(Q|λ) 学习问题: Baum-Welch(状态未知) 已知观测序列Q={q1,q2,...,qT},估计模型λ=(A,B,π)的参数,使得在该模型下观测序列P(Q|λ)最大。 预测问题: Viterbi算法 给定模型λ=(A

隐马尔可夫模型(HMM) - 1 - 基本概念

好久不见. 提交于 2019-12-06 14:15:30
声明: 1 ,本篇为个人对《 2012. 李航 . 统计学习方法 .pdf 》的学习总结,不得用作商用,欢迎转载,但请注明出处(即:本帖地址)。 2 ,由于本人在学习初始时有很多数学知识都已忘记,所以为了弄懂其中的内容查阅了很多资料,所以里面应该会有引用其他帖子的小部分内容,如果原作者看到可以私信我,我会将您的帖子的地址付到下面。 3 ,如果有内容错误或不准确欢迎大家指正。 4 ,如果能帮到你,那真是太好了。 基本概念 惯例性,在刚看到“隐马尔可夫模型”这个名字时我的第一反应是:这什么鬼?于是在看书上的定义时一万个不明白.... 所以,为了能清楚的描述“隐马尔可夫模型”,我们还是从例子开始。 例子 如上图所示,有4个盒子,每个盒子里都装有红白两种颜色的球,每个盒子中球的个数见上图。 然后,按照下面的规则抽5次球: 第一次:从4个盒子里等概论随机选取1个盒子,然后从这个盒子里随机抽出1个球,记录其颜色后放回; 剩下4次: 若上一次是从盒子1中抽球,那这次一定是盒子2; 若上一次是盒子2或3,那这次则分别以0.4和0.6的概率选择左边或右边的盒子; 若上一次是盒子4,那这次各以0.5的概率选择是停留在盒子4还是转移到盒子3。 确定转译的盒子后,再从这个盒子里随机抽出一个球,记录其颜色后放回。 就这样,得到一个球的颜色序列: {红,红,白,白,红} 在这个过程中

隐马尔科夫(HMM)模型

谁都会走 提交于 2019-12-06 14:15:07
隐马尔科夫(HMM)模型 隐马尔科夫(Hidden Markov model)模型是一类基于概率统计的模型,是一种结构最简单的动态贝叶斯网,是一种重要的有向图模型。自上世纪80年代发展起来,在时序数据建模,例如:语音识别、文字识别、自然语言处理等领域广泛应用。隐马尔科夫模型涉及的变量、参数众多,应用也很广泛,以至于很多人不明白模型到底在做什么,模型能够做什么。 HMM中hidden&Markov 首先需要明确的是什么是马尔科夫性质。假设随机过程中某一时刻的状态 s t s t //--> 的概率分布满足: p ( s t | s t − 1 , s t − 2 , . . . , s 0 ) = p ( s t | s t − 1 ) p ( s t | s t − 1 , s t − 2 , . . . , s 0 ) = p ( s t | s t − 1 ) //--> 通俗的说就是,随机过程中某一时刻的状态 s t s t //--> ,只与它前一时刻的状态 s t − 1 s t − 1 //--> 有关,以上就是马尔科夫性质。我们知道自然世界中的很多现象都不符合这一性质,但是我们可以假设其具有马尔科夫性质,这为原来很多无章可循的问题提供了一种解法。 如果某一随机过程满足马尔科夫性质,则称这一过程为马尔科夫过程,或称马尔科夫链。 在马尔科夫链中

PHP算法之统计全为 1 的正方形子矩阵

五迷三道 提交于 2019-12-06 14:11:38
在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。 示例: 输入: 1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 0 0 1 0 输出: 4 来源:力扣(LeetCode) 解题思路 给定矩阵每一个1 代表边长为1的正方形,0代表不存在; dp[dp[i][$j]存储当前位置的的最大边长 这边使用循环 遍历方式存储可能存在的值 1.x 代表矩阵的列数,x代表矩阵的列数,y代表矩阵的行数 2.当i==0||i==0∣∣j==0||matrix[matrix[i][j]==0,将对应位置的值存入 3.j]==0,将对应位置的值存入3.dp[i][i][j]=min(dp[dp[i-1][j],j],dp[i-1][i−1][j-1],dp[dp[i][$j-1])+1; 利用min()函数比较获取边长中是否存在0,存在重新开始; 4.边长相乘 代码 class Solution { /** * @param String[][] $matrix * @return Integer */ function maximalSquare($matrix) { $x = count($matrix[0]); //列数 $y = count($matrix); //行数 $max=0; for($i=0;$i<$y;$i++){ for($j