matrix

Extract opposite-diagonal (not off-diagonal) elements of a matrix

China☆狼群 提交于 2020-03-20 06:17:20
问题 May be this is too simple of a question but I couldn't find a functional answer. How can we extract the opposite diagonal elements of any square matrix in R? In the example below that would be: 7, 2, 8 . r <- matrix(c(1, 5, 8, 1:3, 7:9), 3) 回答1: An approach could be r[(n<-nrow(r))^2-(1:n)*(n-1)] # [1] 7 2 8 ## microbenchmark (matrix(1:1e6,1000)) # Unit: microseconds # expr min lq mean median uq max neval # r[(n<-nr... 26.897 39.0075 65.36835 47.309 85.9345 316.97 100 # diag(r[,... 18070.388

OpenGL--骨骼动画

一笑奈何 提交于 2020-03-18 14:46:27
理论基础 骨骼蒙皮动画其实现类似人体模型,由节点(关节)树构成,节点间通过骨骼连接,每块骨骼至多一个父节点,父节点带动子骨骼运动。具体是关节带动其对应子骨骼运动从而牵动绑定到其上的皮肤变化。骨骼是刚体不会变形,只能绕父节点旋转(构造前面章节有提–3D世界实现中的机器人手臂例子,早期的骨骼动画就是这样,不过在关节处会有明显裂缝,所以才引出现在的蒙皮概念)。而绑定到其上的皮肤顶点则是实时变换拉伸的,变换大体就是通过一些矩阵的操作来最终计算出新顶点坐标等信息,再根据这些新顶点信息进行渲染,即通过更新顶点,渲染这样不断循环形成动画。 实现步骤总结: 一,根据更新前后两个关键帧的时间值插值计算出该时刻骨骼相对于其父骨骼的新变换矩阵–骨骼顶点信息。(本实例由于是手动控制动作,直接由变化的x,y计算) 二,再计算皮肤顶点信息,首先找到影响其顶点的所有骨骼,然后计算每一骨骼对该顶点的影响,即计算出在每个独立骨骼作用下顶点的新位置。公式如下: 最后将所有这些新位置按照每一骨骼的影响权重加权求和,得到皮肤顶点信息。 三,根据这些顶点信息进行绘制。 说明: 1,我们通常会把每个关节赋予一个索引值标志,无论是储存空间上还是查找时间上,都比直接使用关节名高效得多。因为每个关节有且仅有一个父关节,只要在每个关节储存其父关节的索引,即能表示整个骨骼结构。由于根关节无父,所以其索引通常会设为无效的索引,如-1。

Rolling Standard Deviation in a Matrix in R

人盡茶涼 提交于 2020-03-17 09:24:39
问题 Bellow is a stock daily returns matrix example ( ret_matriz ) IBOV PETR4 VALE5 ITUB4 BBDC4 PETR3 [1,] -0.040630825 -0.027795652 -0.052643733 -0.053488685 -0.048455772 -0.061668282 [2,] -0.030463489 -0.031010237 -0.047439725 -0.040229625 -0.030552275 -0.010409016 [3,] -0.022668170 -0.027012078 -0.022668170 -0.050372843 -0.080732363 0.005218051 [4,] -0.057468428 -0.074922051 -0.068414670 -0.044130126 -0.069032911 -0.057468428 [5,] 0.011897277 -0.004705891 0.035489885 -0.005934736 -0.006024115

Rolling Standard Deviation in a Matrix in R

别说谁变了你拦得住时间么 提交于 2020-03-17 09:24:11
问题 Bellow is a stock daily returns matrix example ( ret_matriz ) IBOV PETR4 VALE5 ITUB4 BBDC4 PETR3 [1,] -0.040630825 -0.027795652 -0.052643733 -0.053488685 -0.048455772 -0.061668282 [2,] -0.030463489 -0.031010237 -0.047439725 -0.040229625 -0.030552275 -0.010409016 [3,] -0.022668170 -0.027012078 -0.022668170 -0.050372843 -0.080732363 0.005218051 [4,] -0.057468428 -0.074922051 -0.068414670 -0.044130126 -0.069032911 -0.057468428 [5,] 0.011897277 -0.004705891 0.035489885 -0.005934736 -0.006024115

C#矩阵运算类库

对着背影说爱祢 提交于 2020-03-15 19:42:07
这个类库是本人参考许多相关资料之后做出的C#矩阵运算类库,因为C#的数值计算库相对比较少,所以希望这个类库能够给大家带来一些帮助。 源码github网址: https://github.com/JoshuaHe2015/MatrixLibrary 功能介绍:(持续更新中) 1、矩阵的基本运算:   矩阵的加、减、乘、除、求逆、求幂、求秩、求行列式、转置。运算包括矩阵与矩阵的运算,矩阵与向量的运算和矩阵与标量的运算。 1 using System; 2 using LinearAlgebra; 3 namespace MatrixLibraryTest 4 { 5 class Program 6 { 7 static void Main(string[] args) 8 { 9 Matrix A = Matrix.Create(2, 2, new double[] { 1, 2, 3, 4 }); 10 Matrix B = new double[,] { 11 { 5, 6 }, 12 { 7, 8 } }; 13 Matrix C = A + B; 14 Matrix D = A * 2; 15 Matrix E = A * B; 16 Matrix F = E.Inverse(); 17 Console.WriteLine(C); 18 Console.WriteLine(D)

Go笔记-结构体

六月ゝ 毕业季﹏ 提交于 2020-03-15 06:37:47
结构体简介   Go 通过类型别名(alias types)和结构体的形式支持用户自定义类型,或者叫定制类型。一个带属性的结构体试图表示一个现实世界中的实体。结构体是复合类型(composite types),当需要定义一个类型,它由一系列属性组成,每个属性都有自己的类型和值的时候,就应该使用结构体,它把数据聚集在一起。然后可以访问这些数据,就好像它是一个独立实体的一部分。结构体也是值类型,因此可以通过 new 函数来创建。   组成结构体类型的那些数据称为 字段(fields)。每个字段都有一个类型和一个名字;在一个结构体中,字段名字必须是唯一的。   Go中没有类的概念 结构体定义 如果字段在代码中从来不会用到,那么就可以把它命名为_(单独使用下划线,在Go中表示忽略) 结构体的字段可以事任何类型,也可以是函数或是接口 1 type identifier struct{ 2 field1 type1 3 field2 type2 4 ... 5 } 6 7 // 声明 8 var s identifier 9 identifier.field1 = value 10 identifier.field2 = value 结构体声明 1 // 下面三种相同,t为结构体指针 2 var t *T // T是结构体类型 3 t = new(T) // 结构体指针变量t 4 5 var

基、维数

守給你的承諾、 提交于 2020-03-14 11:14:59
基 基是生成一个向量空间的最小向量组。 它们: 线性无关 个数不多不少,刚好生成向量空间 如一个 \(R^3\) 的基: \[ \left[ \begin{matrix} 1\\0\\0\\ \end{matrix} \right], \left[ \begin{matrix} 0\\1\\0 \end{matrix} \right], \left[ \begin{matrix} 0\\0\\1 \end{matrix} \right] \] 当然这不是唯一的,任意满足上面两点的都可以是一组基。 所以 \(R^n\) 的基一定是 \(n\times n\) 的,并且这个矩阵必须可逆。(可逆的条件不正是零空间中只有零向量嘛,这不又正是线性无关嘛,这下可以串联起来了) 维数 维数就是基中的向量个数 所以我们把知识串联起来: 矩阵列的线性组合的空间的基的个数 = 该矩阵列空间的维数 = 该矩阵的秩的个数 = 矩阵中线性无关列(主列)的个数 其实同样等于行的,这是个特性,只不过Gilbert Strang老爷子还没讲到 那零空间的维数是啥?? \(n-r\) ,矩阵列数减去秩数 这很显而易见 参考资料 MIT线性代数公开课 p9 - bilibili 来源: https://www.cnblogs.com/lilpig/p/12490983.html

R Reorder matrix columns by matching colnames to list of string

ε祈祈猫儿з 提交于 2020-03-14 06:56:44
问题 Sorry if this is very basic. I have a list of names and a matrix with those names as column names. However, the colnames are in a different order. Eg. List of names: colname4 colname3 colname2 colname5 colname1 Matrix Colnames: colname1 colname2 colname3 colname4 colname5 I am trying to order the matrix columns in the same order as list of names order. I have tried test <- match(colnames(matrix1), colnames(matrix2)) but it didn't work. Do you know any alternative? 回答1: You just have to use a

矩阵中的路径

ⅰ亾dé卋堺 提交于 2020-03-13 01:53:12
题目描述 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字符串的第一个字符b占据了矩阵中的第一行第二个格子之后,路径不能再次进入该格子。 链接: https://www.nowcoder.com/questionTerminal/c61c6999eecb4b8f88a98f66b273a3cc 来源:牛客网 回溯 基本思想: 0.根据给定数组,初始化一个标志位数组,初始化为false,表示未走过,true表示已经走过,不能走第二次 1.根据行数和列数,遍历数组,先找到一个与str字符串的第一个元素相匹配的矩阵元素,进入judge 2.根据i和j先确定一维数组的位置,因为给定的matrix是一个一维数组 3.确定递归终止条件:越界,当前找到的矩阵值不等于数组对应位置的值,已经走过的,这三类情况,都直接false,说明这条路不通 4.若k,就是待判定的字符串str的索引已经判断到了最后一位,此时说明是匹配成功的 5.下面就是本题的精髓,递归不断地寻找周围四个格子是否符合条件,只要有一个格子符合条件

POJ 1320 Street Numbers Pell方程

余生长醉 提交于 2020-03-12 18:52:52
http://poj.org/problem?id=1320 题意很简单,有序列 1,2,3...(a-1),a,(a+1)...b 要使以a为分界的 前缀和 和 后缀和 相等 求a,b 因为序列很特殊所以我们用数学方法就可以解决 : 求和: a*(a-1)/2 = (a+1+b)(b-a)/2 化简: 2a 2 = b 2 + b 两边乘4,构造完全平方项 (2b+1) 2 - 8a 2 = 1 令 x = 2*b+1; y = a; 我们就得到了一个形如Pell方程x 2 - Dy 2 = 1 的式子 x 2 - 8y 2 = 1 这题就是求Pell方程的第K个解 , 因为方程已经告诉你了 所以我们可以目测出最小解以用来构造矩阵来求出后面的解 下面就是构造系数矩阵的方法: 已知Pell方程为 x 2 - Dy 2 = 1 为了得到第k个解,我们需要构造系数矩阵 为了得到系数矩阵,我们必须知道该方程的最小特解 x0,y0 于是我们就能得到系数矩阵: x k y k 就是Pell方程的第k个解 对于Pell方程最小特解的求法,可以参照我上一篇 http://www.cnblogs.com/Felix-F/p/3222741.html 当然这题一眼就能看出最小特解为x=3,y=1 用矩阵快速幂小加了一下速 (应该是逗比了..这样反而复杂度高了....直接记录各层次的矩阵就行...