矩阵

矩阵键盘的单个出发---代码简单,但是代码量较大,下一例将给出压缩后的代码

你。 提交于 2019-12-06 13:56:35
/***12个按键,每一个按键都会让蜂鸣器发出“嘀”的一声***/ #include "REG52.H" #define const_voice_short 40 #define const_key_time 20 void initial_myself(); void initial_peripheral(); void delay_long(unsigned int uiDelaylong); void T0_time(); void key_service(); void key_scan(); sbit key_sr1=P0^1; //第一行输入 sbit key_sr2=P0^2; //第二行输入 sbit key_sr3=P0^3; //第三行输入 sbit key_dr1=P0^4; //第一列输出 sbit key_dr2=P0^5; //第二列输出 sbit key_dr3=P0^6; //第三列输出 sbit key_dr4=P0^7; //第四列输出 sbit beep_dr=P1^5; unsigned char ucKeyStep=1; //按键扫描步骤变量 unsigned char ucKeySec=0; //被触发的按键编号 unsigned int uiKeyTimeCnt=0; //按键去抖动延时计数器 unsigned char

特征值与特征向量

放肆的年华 提交于 2019-12-06 13:52:17
特征值分解 如果一个向量v是方阵A的特征向量,可以表示成如下形式: 其中λ称为特征向量v对应的特征值,一个矩阵的一组特征向量是一组正交向量。 需要注意的是:只有方阵才能进行特征分解。 特征值分解是将一个矩阵分解成下面的形式: 其中Q是这个矩阵A的特征向量组成的矩阵,Σ是一个对角阵,每一个对角线上的元素就是一个特征值。 代码实现 python: //方阵A dataA = np.array([[0.00178, -0.00296, 0.000427], [-0.00296, 0.00704, -0.00093], [0.00043, -0.00093, 0.000197]]) //求特征值和特征向量 eigVals, eigVectors = np.linalg.eig(dataA) //定义特征值的对角阵 smat = np.zeros((3, 3)) smat = np.diag(eigVals) //根据特征值和特征向量重新计算A = QΣQ(-1) result = np.dot(eigVectors, np.dot(smat, np.linalg.inv(eigVectors))) print(result) print(dataA) //对比两个矩阵值是否相同 print(np.allclose(dataA, result)) 来源: https://my.oschina

Java Array二维数组使用

霸气de小男生 提交于 2019-12-06 13:51:32
二维数组:元素为一维数组的数组 package myArray.arrayarray; /* *二维数组:元素为一维数组的数组 * * 定义格式: * A:数组类型[][] 数组名; (推荐用法) * B:数组类型 数组名[][]; * C:数组类型[] 数组名[]; * 初始化: * A:动态初始化 * 数据类型[][] 数组名 = new 数据类型[m][n]; * m表示二维数组中一维数组的个数 * n表示一维数组的个数 * B:静态初始化 * 数据类型[][] 数组名 = new 数据类型[][]{[元素...],[元素...],[元素...]....}; * 简化格式: * 数据类型[][] 数组名 = {[元素...],[元素...],[元素...]....}; * 其中{}个数表示一维元素m个,"元素..."为一个一维元素中有n个元素 * * 二维数组名配合索引可以获取到每一个一维数组。 *每一个一维数组配合索引名可以获取到数组中的元素。 * *假如我有一个二维数组:arr。 *我要从中获取一维数组:arr[索引] *我要从中获取二维数组的元素:arr[索引][索引] */ public class ArrayArray { public static void main(String[] args) { int[][] arr = {{1,2,3},{4,5,6},

洛谷 P1005 动态规划

偶尔善良 提交于 2019-12-06 13:50:21
Problem Description 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的n \times mn×m的矩阵,矩阵中的每个元素a_{i,j}a i,j 均为非负整数。游戏规则如下: 每次取数时须从每行各取走一个元素,共nn个。经过mm次后取完矩阵内所有元素; 每次取走的各个元素只能是该元素所在行的行首或行尾; 每次取数都有一个得分值,为每行取数的得分之和,每行取数的得分 = 被取走的元素值\times 2^i×2 i ,其中ii表示第ii次取数(从11开始编号); 游戏结束总得分为mm次取数得分之和。 帅帅想请你帮忙写一个程序,对于任意矩阵,可以求出取数后的最大得分。 Input 输入文件包括n+1n+1行: 第11行为两个用空格隔开的整数nn和mm。 第2\backsim n+12∽n+1行为n \times mn×m矩阵,其中每行有mm个用单个空格隔开的非负整数。 Output 输出文件仅包含11行,为一个整数,即输入矩阵取数后的最大得分。 Sample Input 2 3 1 2 3 3 4 2 Sample Output 82 Analysis of ideas 设 k=m-(R-L) ,可以得到状态转移方程: f[L][R]=max(num[L]*p[k]+dp(L+1,R),dp(L,R-1)+num[R]*p[k]) for(int len=0;len<

Flow-based model

雨燕双飞 提交于 2019-12-06 13:27:29
文章 : NICE: NON-LINEAR INDEPENDENT COMPONENTS ESTIMATION 学习目标 :找一个变换 h=f(x) ,使得变换后的分布的每个分量是 独立 的 我们假设 h 和 x 的维度是 一样 的, f 是 可逆 的,则我们有 并且,我们希望 f 的 Jacobian 矩阵和 f −1 比较容易计算。如果这是可以操作的,那么我们可以直接采样 p X (x) , 这个 f 的设计的主要核心思想是,将 x 分裂成两部分 (x1,x2) ,然后变换成 (y1,y2) , m 可以是任意的函数(i.e., a ReLU MLP). 注意到,Jacobian矩阵的行列式是 单位阵 ,并且非常容易算 逆函 数, 当然我们可以定义更一般性的架构,,加性交错coupling的架构。并且可以有一层一层的变换,有种flow的感觉。 我们可以定义最大似然函数: p H (h) :先验分布,可以事先定义好的,比如各向同性的高斯分布.如果 h 的每个分量都是 独立 的,我们可以写成, 还有很多模型,待续。。。 来源: https://www.cnblogs.com/skykill/p/11986839.html

R的数据结构--数组

徘徊边缘 提交于 2019-12-06 12:09:28
数组:可以认为数组是矩阵的扩展,它将矩阵扩展到2维以上。如果给定的数组是1维的则相当于向量,2维的相当于矩阵。 R语言中的数组元素的类型也是单一的,可以是数值型,逻辑型,字符型或复数型 参数解释    array( data = NA, dim = length(data), dimnames = NULL) data为创建数组的元素 dim为数组的维数,是数值型向量 dimnames是各维度中名称标签列表 数组的创建 一维数组 # 相当于1维的向量:1 2 3 4 5 6 7 8 9 10 arr1 <- array(1:10) 二维数组 # 相当于2行5列的矩阵 arr2 <- array(1:10, dim=c(2,5)) 三维数组 # 创建了一个3×4×2维的数组 arr3 <- array(1:24, dim=c(3,4,2)) """ , , 1 [,1] [,2] [,3] [,4] [1,] 1 4 7 10 [2,] 2 5 8 11 [3,] 3 6 9 12 , , 2 [,1] [,2] [,3] [,4] [1,] 13 16 19 22 [2,] 14 17 20 23 [3,] 15 18 21 24 """ 数组取名 dim1 <- c("A1","A2","A3") dim2 <- c("B1","B2","B3") dim3 <- c("C1",

js二维数组拆分为一维数组

孤街醉人 提交于 2019-12-06 11:46:04
1.利用 es5 的 arr.reduce(callback[, initialValue]) 实现 var arr1 = [[0, 1], [2, 3], [4, 5]]; var arr2 = arr1.reduce(function (a, b) { return a.concat(b)} ); // arr2 [0, 1, 2, 3, 4, 5] 2.利用ES6---map() var arr1 = [[0, 1], [2, 3], [4, 5]]; function flatten(arr) { return [].concat( ...arr.map(x => Array.isArray(x) ? flatten(x) : x) ) } var arr2 = flatten(arr1); // arr2 [0, 1, 2, 3, 4, 5] 优点: 多维数组也可以 比如:var arr = [[1,2],3,[[[4], 5]]] 3.利用apply实现 var arr1 = [[0, 1], [2, 3], [4, 5]]; var arr2 = [].concat.apply([], arr1); // arr2 [0, 1, 2, 3, 4, 5] 4.通过将数组转变成字符串,利用 str.split(',') 实现。缺点是数组元素都变字符串了 var arr1

numpy

[亡魂溺海] 提交于 2019-12-06 11:02:18
import numpy as np # numpy数值计算,支持维度数组和矩阵计算# 特殊创建矩阵方式x = np.zeros((2, 3)) # zeros 创建全是 0 的数组矩阵,参数是数组类型y = np.ones(3) # ones 创建全是 1 的数组矩阵z = np.full((3, 2), 3) # full 创建定值数组矩阵,如创建3行2列,数值全是3的矩阵s = np.eye(5, k=2) # eye 创建对角矩阵,对角值为 1 ,k值表示从第几列开始对角相同,不填默认为 0w = np.random.random((2, 3)) # 创建随机值的矩阵# 初始化创建矩阵方式a = np.array([[1, 2, 3], [3, 4, 5]],dtype=np.int64) # 初始化一个数组成矩阵,dtype= 设置数据类型print(a.shape) # 查看这个矩阵是几行几列a1 = a[[1, 0, 1], [0, 1, 1]] # 索引结果是[3,2,4],前后保持一一对应a2 = [a[1, 0], a[0, 1], a[1, 1]] # 与上面结果相同rows = np.array([[0, 0], [1, 1]]) # 索引矩阵的行cols = np.array([[0, 1], [0, 1]]) # 索引矩阵的列print(a[rows,