矩阵

matlab基本函数min

旧巷老猫 提交于 2019-12-29 22:34:55
一起来学演化计算-matlab基本函数min 觉得有用的话,欢迎一起讨论相互学习~ Follow Me 找到数组中最小的元素 语法 M = min(A) 返回A的最小元素 如果A是一个向量,那么min(A)返回A的最小元素 如果A是一个矩阵,那么min(A)是一个行向量,包含每一列的最小值 如果A是一个多维数组,那么min(A)沿着大小不等于1的第一个数组维操作,将元素视为向量。这个维度的大小变为1,而所有其他维度的大小保持不变。如果A是第一个维度为0的空数组,那么min(A)返回一个与A大小相同的空数组。 M = min(A,[],dim) 返回沿dim维数的最小元素,例如,如果A是一个矩阵,那么min(A,[],2)是一个列向量,包含每一行的最小值。因为第一维是列,第二维才是行,所以按照行来取最小值,则得到的是一个列向量 [M,I] = min( ___ )找到A的最小值的索引,并使用前面语法中的任何输入参数在输出向量I中返回它们。如果最小值出现多次,那么min返回与第一次出现相对应的索引 C = min(A,B) 返回一个数组,其中最小的元素取自A或B。 ___ = min( ___ ,nanflag) 指定是否在计算之前的任何语法时包含或省略NaN值。对于单个数组的情况,要在不指定dim的情况下指定nanflag,请使用min(A,[],nanflag)。例如,min(A,

LeetCode(1277):统计全为 1 的正方形子矩阵 Count Square Submatrices with All Ones(Java)

拟墨画扇 提交于 2019-12-29 14:51:54
2019.12.29 LeetCode 从零单刷个人笔记整理(持续更新) github: https://github.com/ChopinXBP/LeetCode-Babel 原地动态规划。 遍历每一个位置ij时,将该位的数值置为从该位起左边的1的总个数,例如对于矩阵 [0,1,1,1], [1,1,1,1], [0,1,1,1] 遍历结束后效果为: [0,1,2,3], [1,2,3,4], [0,1,2,3] 为了统计正方形矩阵的个数,可以假定当前位置ij为正方形的右下角点,其值为可能的最大边长maxlen = matrix[i][j]。 沿着同一列j向上遍历,遍历行数即为当前正方形的边长curlen,当遍历过程的最小边长minlen >= curlen时,可以构成当前正方形。 传送门:统计全为 1 的正方形子矩阵 Given a m * n matrix of ones and zeros, return how many square submatrices have all ones. 给你一个 m * n 的矩阵,矩阵中的元素不是 0 就是 1,请你统计并返回其中完全由 1 组成的 正方形 子矩阵的个数。 示例 1: 输入:matrix = [ [0,1,1,1], [1,1,1,1], [0,1,1,1] ] 输出:15 解释: 边长为 1 的正方形有 10 个。

变幻的矩阵

孤街浪徒 提交于 2019-12-28 19:41:17
描述 有一个N x N(N为奇数,且1 <= N <= 10)的矩阵,矩阵中的元素都是字符。这个矩阵可能会按照如下的几种变幻法则之一进行变幻(只会变幻一次)。 现在给出一个原始的矩阵,和一个变幻后的矩阵,请编写一个程序,来判定原始矩阵是按照哪一种法则变幻为目标矩阵的。 按照顺时针方向旋转90度; 如: 1 2 3 7 4 1 4 5 6 变幻为 8 5 2 7 8 9 9 6 3 按照逆时针方向旋转90度; 如: 1 2 3 3 6 9 4 5 6 变幻为 2 5 8 7 8 9 1 4 7 中央元素不变(如下例中的 5),其他元素(如下例中的3)与“以中央元素为中心的对应元素”(如下例中的7)互换; 如: 1 2 3 9 8 7 4 5 6 变幻为 6 5 4 7 8 9 3 2 1 保持原始矩阵,不变幻; 如果 从原始矩阵 到 目标矩阵 的变幻,不符合任何上述变幻,请输出5 输入 第一行:矩阵每行/列元素的个数 N; 第二行到第N+1行:原始矩阵,共N行,每行N个字符; 第N+2行到第2*N+1行:目标矩阵,共N行,每行N个字符; 输出 只有一行,从原始矩阵 到 目标矩阵 的所采取的 变幻法则的编号。 样例输入 5 a b c d e f g h i j k l m n o p q r s t u v w x y y x w v u t s r q p o n m l k j

73. 矩阵置零

最后都变了- 提交于 2019-12-28 15:57:47
链接 题目 . 难度: middle 解答: 要想不使用额外空间,那么就需要将标志位设在原来的数据上面,这里就把第一行和第一列用来存储改行或者该列是否有0 的标志,这样原来是否是0就被覆盖了,所以需要两个标志记录下来 package main import "fmt" func setZeroes ( matrix [ ] [ ] int ) { if len ( matrix ) == 0 { return } rows , cols := len ( matrix ) , len ( matrix [ 0 ] ) rowZero , colZero := false , false for i := 0 ; i < rows ; i ++ { if matrix [ i ] [ 0 ] == 0 { rowZero = true break } } for j := 0 ; j < cols ; j ++ { if matrix [ 0 ] [ j ] == 0 { colZero = true break } } for i := 1 ; i < rows ; i ++ { for j := 1 ; j < cols ; j ++ { if matrix [ i ] [ j ] == 0 { matrix [ i ] [ 0 ] = 0 matrix [ 0 ] [ j ]

矩阵论

自古美人都是妖i 提交于 2019-12-28 15:47:50
矩阵论 矩阵论札记. 梁昌洪 . 2014学习概要 文章目录 矩阵论 第1部分 线性基础 第2部分 矩阵代数 第3部分 线性方程组 第4部分 矩阵空间 第5部分 本征问题与二次型 第6部分 矩阵变换 第7部分 矩阵应用 第1部分 线性基础 矩阵3大特点 : 矩阵是线性的 矩阵是离散的 矩阵是代数和几何交融的 行列式 n n n 阶 行列式 D D D 的值为 D = ∣ a 11 a 12 ⋯ a 1 n a 21 a 22 ⋯ a 2 n ⋮ ⋮ ⋮ a n 1 a n 2 ⋯ a n n ∣ = ∑ t = 0 n ! ( − 1 ) t a 1 p 1 a 2 p 2 ⋯ a n p n D = \left| \begin{matrix} a_{11} & a_{12} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2n} \\ \vdots & \vdots & &\vdots \\ a_{n1} & a_{n2} & \cdots &a_{nn} \end{matrix} \right | = \sum_{t=0}^{n!} (-1)^ta_{1p_1}a_{2p_2}\cdots a_{np_n} D = ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ​ a 1 1 ​ a 2 1 ​ ⋮ a n 1 ​ ​ a 1 2 ​

四元数

亡梦爱人 提交于 2019-12-28 11:35:27
##1.1-1四元数的定义与运算法则 四元数分为两个定义方式:Hamilton四元数和JPL四元数,其根本的不同在于虚数运算$$ij=k$$或者$$ij=-k$$的区别。以下所推导的四元数都是标量在前,矢量在后;JPL的四元数的推导为个人手工推导,如有谬误,请指出; 两种四元数的定义规范都满足加法、减法,并且都满足交换律和结合律; Hamilton四元数的乘法: $$ \overline{p}\otimes\overline{q}=(p_0+p_1i+p_2j+p_3k)(q_0+q_1i+q_2j+q_3k) \\=(p_0q_0-p_1q_1-p_2q_2-p_3q_3)\\+(p_0q_1+p_1q_0+p_2q_3-p_3q_2)i\\+(p_0q_2+p_2q_0-p_1q_3+p_3q_1)j\\+(p_0q_3+p_3q_0+p_1q_2-p_2q_1)k $$ 写成矩阵的形式则有: $$ \overline{p}\otimes\overline{q}=\begin{bmatrix}p_0&-p_1&-p_2&-p_3\\p_1&p_0&-p_3&p_2\\p_2&p_3&p_0&-p_1\\p_3&-p_2&p_1&p_0\end{bmatrix}\begin{bmatrix}q_0\\q_1\\q_2\\q_3\end{bmatrix} $$ JPL四元数的乘法:

腾讯16-螺旋矩阵

[亡魂溺海] 提交于 2019-12-28 11:26:36
给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。 示例 1: 输入: [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ] 输出: [1,2,3,6,9,8,7,4,5] 示例 2: 输入: [ [1, 2, 3, 4], [5, 6, 7, 8], [9,10,11,12] ] 输出: [1,2,3,4,8,12,11,10,9,5,6,7] 思路就是暴力, 但是写出逻辑清晰的暴力,还是很不容易,关键是用python的range在边界容易出错,最好不用for的range,都用while def spiralOrder ( self , matrix : List [ List [ int ] ] ) - > List [ int ] : if len ( matrix ) == 0 or len ( matrix [ 0 ] ) == 0 : return [ ] else : #虽然是暴力,但是有逻辑的写出暴力也不容易 row_begin , col_begin = 0 , 0 row_end , col_end = len ( matrix ) - 1 , len ( matrix [ 0 ] ) - 1 res = [ ] while ( row_begin <= row_end and

Python 矩阵中的路径

☆樱花仙子☆ 提交于 2019-12-28 06:36:36
题目描述 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。 例如 a b c e s f c s a d e e 这样的3 X 4 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字符串的第一个字符b占据了矩阵中的第一行第二个格子之后,路径不能再次进入该格子。 a b c e s f c s a d e e 思路 这道题使用回溯法来解决,也是深搜的一种。 对于递归,通常有三个地方需要考虑, 1 是递归的定义,把问题转化为递归,要递归哪些方面。 2 是递归的拆解,如果把问题实际转化成递归问题。 3 是递归的出口,当递归发现解之后,如何返回,如何一步一步返回上一层。 在使用回溯方法的时候,通常会有一个栈来记录搜索过的正确的路径,到达当前一个状态后,会先尝试把当前的节点/状态入栈,如果无解再返回。 针对本问题,具体思路是: 遍历矩阵,找到开头后,开始递归的对问题求解。用index来记录目标字符串的位置,寻找到解以后,就把index+1,尝试无解后回溯到index-1. 因为题目要求同一个格子不允许进入两次,所以再额外构建一个二维矩阵用来记录每个格子是否被访问过。 代码 # -

常系数线性递推

坚强是说给别人听的谎言 提交于 2019-12-27 20:28:52
常系数齐次线性递推 给定 \(a_0,\cdots,a_{k-1},f_0,\cdots,f_{k-1}\) ,且 \(\forall i\in[k,+\infty),a_i=\sum\limits_{j=1}^kf_ja_{i-j}\) ,求 \(a_n\) 。 一眼看上去有点像分治NTT。 Part.1 设转移矩阵为 \(A\) 。 矩阵快速幂的浪费之处在于我们求出了连续 \(k\) 项,但是我们实际只关心一项。 假如说我们现在构造出了一组 \(c_0,\cdots,c_{k-1}\) ,使得 \(A^n=\sum\limits_{i=0}^{k-1}c_iA^i\) 。 那么答案 \((\mathbf fA^n)_0=\sum\limits_{i=0}^{k-1}c_i(\mathbf fA^i)_0=\sum\limits_{i=0}^{k-1}c_if_i\) 。 也就是说如果我们能够构造出一组 \(c\) ,那么我们就能够在 \(O(n)\) 的时间内求出答案。 Part.2 接下来考虑如何求出 \(c\) 。 先把 \(A^n\) 写成这样的形式: \(A^n=Q(A)G(A)+R(A)\) 。 其中 \(R(A)=\sum\limits_{i=0}^{k-1}c_iA^i\) 。 那么可以设 \(G(A)=\sum\limits_{i=0}^kg_iA^i\) 。

codevs 1259 最大正方形子矩阵 WD

你说的曾经没有我的故事 提交于 2019-12-27 19:18:56
1259 最大正方形子矩阵 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 在一个01矩阵中,包含有很多的正方形子矩阵,现在要求出这个01矩阵中,最大的正方形子矩阵,使得这个正方形子矩阵中的某一条对角线上的值全是1,其余的全是0。 输入描述 Input Description 第一行有两个整数n和m(1<=n,m<=1000)。接下来的n行,每行有m个0或1的数字。每两个数字之间用空格隔开。 输出描述 Output Description 只有一个整数,即这个满足条件的最大的正方形子矩阵的边长。 样例输入 Sample Input 4 6 0 1 0 1 0 0 0 0 1 0 1 0 1 1 0 0 0 1 0 1 1 0 1 0 样例输出 Sample Output 3 数据范围及提示 Data Size & Hint 动态规划 #include <cstdio> #include <cstring> #define ref(i,x,y)for(int i=x;i<=y;i++) #define def(i,x,y)for(int i=x;i>=y;i--) #define max(a,b)a=a>b?a:b; int n,m,ans; int a[1001][1001],f[1001][1001],s[2]