矩阵

矩阵

余生颓废 提交于 2020-01-01 00:42:07
矩阵 m × n m×n m × n 个数 a i j ( i = 1 , 2 , … , m ; j = 1 , 2 , … , n ) a_{ij}(i=1, 2, \dots, m; j=1, 2, \dots, n) a i j ​ ( i = 1 , 2 , … , m ; j = 1 , 2 , … , n ) 排成的m行n列的数表成为一个 m × n m×n m × n 矩阵 ( a 11 a 12 … a 1 n a 21 a 22 … a 2 n ⋮ ⋮ ⋱ ⋮ a m 1 a m 2 … a m n ) \left(\begin{matrix}a_{11}&a_{12}&\dots&a_{1n}\\a_{21}&a_{22}&\dots&a_{2n}\\ \vdots&\vdots&\ddots&\vdots\\a_{m1}&a_{m2}&\dots&a_{mn}\end{matrix}\right) ⎝ ⎜ ⎜ ⎜ ⎛ ​ a 1 1 ​ a 2 1 ​ ⋮ a m 1 ​ ​ a 1 2 ​ a 2 2 ​ ⋮ a m 2 ​ ​ … … ⋱ … ​ a 1 n ​ a 2 n ​ ⋮ a m n ​ ​ ⎠ ⎟ ⎟ ⎟ ⎞ ​ 成为一个 m × n m×n m × n 矩阵,简记为 ( a i j ) (a_{ij}) ( a i j ​ ) 。数 a i

一维数组,二维数组,数组指针,指针数组

折月煮酒 提交于 2020-01-01 00:37:49
一维数组 int a[]={1,3,5} a:数组首行首元素地址,一级指针 &a:整个数组的首地址,二级指针 a+1:跳4个字节 &a+1:跳12个字节 sizeof(a) :取的是整个数组长度12字节 sizeof(a[0]):取的是数组首元素,4字节 sizeof(&a):传的是一维数组整个数组的地址(首行地址),4个字节 &a :首行地址 *&a -> a:首行首元素地址 ----------------------------------- 数组指针变量 int a[10]; 一种方式 typedef int ARRARY[10]; ARRARY *p; p=&a //p指向a数组,指向一维数组的指针 (*p)[i] //指针操作方式 //p=&a //*p->*(&a)->a //(*p)[i]->a[i] 二种方式:直接定义数组指针变量 int (*p)[10]; p=&a; 三种方式,先定义数组指针类型,再根据类型定义指针变量 typedef int (*Q)[10]; Q=p; p=&a; ---------------------------------------------------------------------- 多维数组 内存中不存在多维数组,都是线性存储的 int a[3][5]={0}; int *b=(int *)a; int i=0 for

动手学深度学习 2

扶醉桌前 提交于 2019-12-31 16:49:04
第二章 预备知识 2.1 2.2 数据操作 在深度学习中,我们通常会频繁地对数据进行操作。做为动手学深度学习的基础,本节将介绍如何对内存中的数据进行操作。 在TensorFlow中,tensor是一个类,也是存储和变换数据的主要工具。如果你之前用过NumPy,你会发现tensor和NumPy的多维数组非常类似。然而,tensor提供GPU计算和自动求梯度等更多功能,这些使tensor更加适合深度学习。 import tensorflow as tf print(tf.__version__) 1.12.0 2.2.1 创建tensor 我们先介绍tensor的最基本功能,我们用arange函数创建一个行向量 x = tf.constant(range(12)) 我们可以通过shape属性来获取tensor实例的形状。 print(x.shape) (12,) 这时返回了一个tensor实例,包含了从0开始的12个连续整数。 print(x) Tensor("Const_9:0", shape=(12,), dtype=int32) 我们也能够通过len得到tensor实例中元素(element)的总数。(注:tf1.0没有len函数) 下面使用reshape函数把行向量x的形状改为(3,4),页就是一个3行4列的矩阵,并记作X。除了形状改变之外,X中的元素保持不变。 X=tf

matlab实现HS

浪子不回头ぞ 提交于 2019-12-30 16:25:52
nargin表示所定义(或引用)的函数的输入参数的个数,例如: || 表示或者的意思。 zeros(n) :形成一个n n的零矩阵 zeros(n,m):形成一个n m的零矩阵 在matlab中,size()用来返回数据序列的行数和列数。 size(A,1)返回的是矩阵A所对应的行数。另外, (1)s=size(A), 当只有一个输出参数时,返回一个行向量,该行向量的第一个元素是矩阵的行 数,第二个元素是矩阵的列数。 (2)[r,c]=size(A), 当有两个输出参数时,size函数将矩阵的行数返回到第一个输出变量r,将矩阵的列数返回到第二个输出变量c。 (3)size(A,n)如果在size函数的输入参数中再添加一项n,并用1或2为n赋值,则 size将返回矩阵的行数或列数。其中r=size(A,1)该语句返回的时矩阵A的行数, c=size(A,2) 该语句返回的时矩阵A的列数。 (:,:,1) 这是三维图形中的第一层,可以拿一个魔方做对比,建立一个空间直角坐标系,(:,:,1)是指在x,y方向无限制,在z方向的长度为1。在(:,1)中,是二位矩阵的第一列。 冒号的意思是从最小下标,到最大下标,(:,:,1); 可以理解为三维数组前二维全取, 第三组只取下标为1的全部数据 6.im1=double(im1); double(I

Flutter 容器类组件:变换(Transform)

主宰稳场 提交于 2019-12-30 15:12:22
前言 Transform可以在其子组件绘制时对其应用一些矩阵变换来实现一些特效。 接口描述 const Transform({ Key key, @required this.transform, this.origin, this.alignment, this.transformHitTests = true, Widget child, }) : assert(transform != null), super(key: key, child: child); 代码示例 // 变换(Transform) // Transform可以在其子组件绘制时对其应用一些矩阵变换来实现一些特效。 import 'dart:math' as math; import 'package:flutter/material.dart'; class TransformTest extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('变换'), ), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children:

奇异矩阵

十年热恋 提交于 2019-12-30 04:15:54
奇异矩阵是线形代数的概念,就是对应的行列式等于0的矩阵。 奇异矩阵的判断方法:首先,看这个矩阵是不是方阵(即行数和列数相等的矩阵。若行数和列数不相等,那就谈不上奇异矩阵和非奇异矩阵)。 然后,再看此方阵的行列式|A|是否等于0,若等于0,称矩阵A为奇异矩阵;若不等于0,称矩阵A为非奇异矩阵。 同时,由|A|≠0可知矩阵A可逆,这样可以得出另外一个重要结论:可逆矩阵就是非奇异矩阵,非奇异矩阵也是可逆矩阵。 对一个 n 行 n 列的非零矩阵 A,如果存在一个矩阵 B 使 AB = BA = I(I 是单位矩阵),则 A 为非奇异矩阵。 一个矩阵非奇异当且仅当它的行列式不为零。 一个矩阵非奇异当且仅当它代表的线性变换是个自同构。 一个矩阵半正定当且仅当它的每个特征值大于或等于零。 一个矩阵正定当且仅当它的每个特征值都大于零。 求行列式的值 行列式的计算 一 化成三角形行列式法 先把行列式的某一行(列)全部化为 1 ,再利用该行(列)把行列式化为三角形行列式,从而求出它的值,这是因为所求行列式有如下特点: 1 各行元素之和相等; 2 各列元素除一个以外也相等。 充分利用行列式的特点化简行列式是很重要的。 二 降阶法 根据行列式的特点,利用行列式性质把某行(列)化成只含一个非零元素,然后按该行(列)展开。展开一次,行列式降低一阶,对于阶数不高的数字行列式本法有效。 三 拆成行列式之和(积)

R语言矩阵运算

主宰稳场 提交于 2019-12-30 02:45:36
R语言矩阵运算 主要包括以下内容: 创建矩阵向量;矩阵加减,乘积;矩阵的逆;行列式的值;特征值与特征向量;QR分解;奇异值分解;广义逆;backsolve与fowardsolve函数;取矩阵的上下三角元素;向量化算子等. 1 创建一个向量 在R中可以用函数 c() 来创建一个向量,例如: > x=c(1,2,3,4) > x [1] 1 2 3 4 2 创建一个矩阵 在R中可以用函数 matrix() 来创建一个矩阵,应用该函数时需要输入必要的参数值。 > args(matrix) function (data = NA, nrow = 1, ncol = 1, byrow = FALSE, dimnames = NULL) data 项为必要的矩阵元素, nrow 为行数, ncol 为列数,注意 nrow 与 ncol 的乘积应为矩阵元素个数, byrow 项控制排列元素时是否按行进行, dimnames 给定行和列的名称。例如: > matrix(1:12,nrow=3,ncol=4) [,1] [,2] [,3] [,4] [1,] 1 4 7 10 [2,] 2 5 8 11 [3,] 3 6 9 12 > matrix(1:12,nrow=4,ncol=3) [,1] [,2] [,3] [1,] 1 5 9 [2,] 2 6 10 [3,] 3 7 11 [4,] 4

XDOJ—190—3*3矩阵对角线求和

家住魔仙堡 提交于 2019-12-30 02:44:54
XDOJ—190—3*3矩阵对角线求和 2019.12.29日 3*3矩阵对角线求和 时间限制:1S 内存限制:10000Kb 问题描述: 求一个的整型矩阵对角线元素之和。 输入说明: 输入3*3的整型矩阵。 输出说明: 输出一个整数,即对角线的和。 输入样例: 1 2 3 4 5 6 7 8 9 输出样例: 15 # include <stdio.h> # define n 3 int main ( ) { int i , j , a [ n ] [ n ] , sum = 0 ; for ( i = 0 ; i < n ; i ++ ) for ( j = 0 ; j < n ; j ++ ) { scanf ( "%d" , & a [ i ] [ j ] ) ; } for ( i = 0 ; i < n ; i ++ ) sum + = a [ i ] [ i ] ; printf ( "%d\n" , sum ) ; return 0 ; } 来源: CSDN 作者: 小眠眠 链接: https://blog.csdn.net/qq_45550139/article/details/103747014

R语言学习——向量,矩阵

孤街浪徒 提交于 2019-12-30 02:33:06
在R中,基本的数据结构有:向量,矩阵,数组,数据框,列表,因子,函数等。 向量:一系列同类型的有序元素构成。 向量是一维结构。 向量是R最简单的数据结构,在R中没有标量。 标量被看成1个元素的向量。 向量元素必须是同类型的。 由于向量是最简单的数据结构,因此本章中以向量为例子来解释各个概念。 矩阵:二维的同类型元素的集合。 矩阵由函数matrix创建。 矩阵需要输入行数,列数。 矩阵是二维的,引用元素可通过双下标做索引。 矩阵在物理实现时,是向量附加行列数属性来实现的,因此也可以通过向量的方式引用其元素。 1、结构类型是指在R语言中,自带的对象的数据结构的类型。主要有 向量、矩阵、数组、数据框、列表等。 2、元素类型是指在一个对象中,其元素所属类型。主要类型有: 数值型:分为整数型和双精度型(默认)。 字符型:夹在双引号或者单引号之间的字符或字符串。 复数型:形如a+bi形式的复数。 逻辑型:只能取TRUE(T)/FALSE(F)。 函数型:函数对象。 RAW:以二进制形式保存的数据。 缺省值:若某值不可得到(not available)或缺少值(missing value),相关位置可被赋NA值;任何NA的运算结果都为NA。 A<-c(2,4,6) B<-c(“Lee”,”Jack”) C<-c(TRUE,FALSE) A是向量,A有三个元素,A的元素是数值型。 B是向量

4. 二维数组中的查找

有些话、适合烂在心里 提交于 2019-12-30 01:12:05
题目 给定一个二维数组,其每一行从左到右递增排序,从上到下也是递增排序。给定一个数,判断这个数是否在该二维数组中 Consider the following matrix: [  [1, 4, 7, 11, 15],  [2, 5, 8, 12, 19],  [3, 6, 9, 16, 22],  [10, 13, 14, 17, 24],  [18, 21, 23, 26, 30] ] Given target = 5, return true. Given target = 20, return false. 解题思路 因为此二维数组的特性,发现可以选取某一个坐标作为参考点进行遍历查询,当查找的数字大于当前选取的位置,则可以从其右边或者下边开始找,如图 但是发现会需要进行多次的判断,不仅得往旁边进行遍历,而且也需要往下边进行遍历,但是会发现变得很复杂 进一步分析 根据此二位数组的特殊性,可以发现,当我们选取右上角的值作为我们的参考点的话,所需要判断的次数会少很多,当一个数值大于此坐标值的话,结果只有一种,那就是在这个坐标的下面,当一个数值小于此坐标值的话,结果也仅有一种,那就是在这个坐标的左边,跟刚开始的方法相比,这就大大的减少了需要对比的次数。不仅如此,我们也可以选取左下角的值作为选取点,效果一致。 代码 public class Solution { public