矩阵

朝花夕拾之Matlab矩阵表示

我的未来我决定 提交于 2020-01-28 23:24:18
1.实数值矩阵输入 MATLAB的强大功能之一体现在能直接处理向量或矩阵。当然首要任务是输入待处理的向量或矩阵。 不管是任何矩阵(向量),我们可以直接按行方式输入每个元素:同一行中的元素用逗号(,)或者用空格符来分隔,且空格个数不限;不同的行用分号(;)分隔。所有元素处于一方括号([ ])内;当矩阵是多维(三维以上),且方括号内的元素是维数较低的矩阵时,会有多重的方括号。如: >> Time = [11 12 1 2 3 4 5 6 7 8 9 10] Time = 11 12 1 2 3 4 5 6 7 8 9 10 >> X_Data = [2.32 3.43;4.37 5.98] X_Data = 2.43 3.43 4.37 5.98 >> vect_a = [1 2 3 4 5] vect_a = 1 2 3 4 5 >> Matrix_B = [1 2 3; >> 2 3 4;3 4 5] Matrix_B = 1 2 3 2 3 4 3 4 5 >> Null_M = [ ] %生成一个空矩阵 2.复数矩阵输入 复数矩阵有两种生成方式: 第一种方式 例1-1 >> a=2.7;b=13/25; >> C=[1,2*a+i*b,b*sqrt(a); sin(pi/4),a+5*b,3.5+1] C= 1.0000 5.4000 + 0.5200i 0.8544 0

OPENCV对于Mat的理解和操作

牧云@^-^@ 提交于 2020-01-28 22:17:35
1,Mat 是用来存储图片的数据 他会把图片变成矩阵 Mat src; int main(int argc, char** argv){ src = imread("F:\\视觉\\opencv\\pic\\MatTest.png");//读图片 cout << "灰度化后" << endl; cout << src << endl; } 矩阵的格式如下 图片时这样的: 用dos显示是这样的 灰度化之后是这样的 怎么样是不是看上去有点熟悉 没错,灰度化后直接把每个位置的像素的值,组成一个矩阵, 而没有灰度化时是如图一所示。 2,Mat获取某一点坐标的值 来源: https://www.cnblogs.com/kbqLibrary/p/12239063.html

MATLAB小常识3

微笑、不失礼 提交于 2020-01-28 17:38:32
14.将数据复制到工作区,并将变量命名为X 在工作区右键,新建工作变量( CTRL+N ),命名为X 将Excel中地数据 复制粘贴 进入变量 关掉变量窗口,右键X变量,另存为 .mat 文件 load 命令即可加载数据,注意代码和数据变量需放在同一目录下。 15.向量的运算 行(列)向量A与行(列)向量B对应元素的加减------> A+B / A-B ; 行(列)向量A与行(列)向量B对应元素的乘除------> A.*B / A./B ; 行(列)向量A的最大/最小值-------> max(A) / min(A) ; 行(列)向量A的每个元素与常数n加减乘除-----> A+n / A-n / A*n / A/n ; 16.abs函数   A的绝对值-----> abs(A) ; 17.zeros函数 产生n阶元素全为0的矩阵-----> zeros(n) ; 产生n行列向量-----> zeros(n,1) ; 产生n X m 阶元素全为0的矩阵------> zeros (n,m) ; 18.magic函数 产生由1至n^2构成的n阶矩阵,且每一列的和相等------> magic(n) ; 19.sort函数 对行(列)向量A进行排序-------> sort(A) ;(默认为升序,若要降序: sort(A,'descend') ) ; 对矩阵A的列向量进行排序 --

Linear_algebra_05_相似对角形

旧城冷巷雨未停 提交于 2020-01-28 17:38:13
山东大学——线性代数: http://www.xuetangx.com/courses/course-v1:SDUx+00931800X+sp/courseware/45412e228fef48e08a937bdebd19a5a0/61676d9b49ce410290738e6bbc5ed468/ 自反性:自己跟自己相似,相似变换矩阵E(单位阵)。 对称性:A和B相似,B与A也相似,相似变换矩阵P -1 传递性:A与B相似,B与C相似,则A与C相似。 B= P 1 -1 AP 1 => C = P 2 -1 BP 2 = P 2 -1 P 1 -1 AP 1 P 2 所以A与C的相似变换矩阵式P 1 P 2 2)相似可以推出等价,而等价不能推出相似。 相似矩阵的秩是相同的。 2)方阵的行列式等于行列式的乘积。P的行列式与P逆行列式的倒数。 3)A=P -1 BP => A -1 = P -1 B -1 p 直接做A的k次幂比较难做,而做A的相似矩阵对角阵的k次幂相对更简单。 将P矩阵拆开,再分别与A矩阵相乘。得到了4与-2,及P矩阵。 而(1,2)矩阵就不能与A(1,2)相乘后的矩阵(5,3)线性相关。 任意给定A,Apha,Beta,Aa=ka,而ABeta != kBeta A与a相乘 来源: https://www.cnblogs.com/tlfox2006/p

问题 F: 计算两个矩阵的乘积

回眸只為那壹抹淺笑 提交于 2020-01-28 14:43:39
时间限制: 1.000 Sec 内存限制: 32 MB 提交: 452 解决: 235 [ 提交 ] [ 状态 ] [命题人:外部导入] 题目描述 计算两个矩阵的乘积,第一个是2*3矩阵,第二个是3*2矩阵,结果为一个2*2矩阵。 输入 输入包含多组数据,先输入一个2*3矩阵,再输入一个3*2矩阵。 输出 输出两个矩阵的乘积。 样例输入 Copy 1 1 1 1 1 1 1 1 1 1 1 1 样例输出 Copy 3 3 3 3 [ 提交 ][ 状态 ] #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; const int maxn=10010; const int N=10; int main(){ int t; while(scanf("%d",&t)!=EOF){ int a[2][3]={0},b[3][2]={0},c[2][2]={0}; for(int i=0;i<2;i++) for(int j=0;j<3;j++) if(i==0&&j==0) a[i][j]=t; else scanf("%d",&a[i][j]); for(int i=0;i<3;i++) for(int j=0;j<2;j++) scanf("%d",

稀疏数组

自作多情 提交于 2020-01-28 04:54:36
1. 先看一个实际的需求 编写的五子棋程序中,有存盘退出和续上盘的功能 2. 分析问题: 因为该二维数组的很多值是默认值0, 因此记录了 很多没有意义的数据 .-> 稀疏数组 。 3. 基本介绍 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。 稀疏数组的处理方法是: 记录数组一共有几行几列,有多少个不同的值 把具有不同值的元素的行列及值记录在一个小规模的数组中,从而 缩小程序 的规模 4. 应用实例 使用稀疏数组,来保留类似前面的二维数组(棋盘、地图等等) 把稀疏数组存盘,并且可以从新恢复原来的二维数组数 5. 整体思路分析 二维数组 转 稀疏数组的思路 遍历 原始的二维数组,得到有效数据的个数 sum 根据sum 就可以创建 稀疏数组 sparseArr int[sum + 1] [3] 将二维数组的有效数据数据存入到 稀疏数组 稀疏数组转原始的二维数组的思路 先读取稀疏数组的第一行,根据第一行的数据,创建原始的二维数组,比如上面的 chessArr2 = int [11][11] 在读取稀疏数组后几行的数据,并赋给 原始的二维数组 即可. 6. 代码实现 package com . atguigu . sparsearray ; /** * @author john * @date 2019/12/14 - 17:10 */ public

剑指offer001-二维数组中的查找

不想你离开。 提交于 2020-01-28 03:30:09
题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 方法1:暴力破解,先比较第一行第一个元素,如果target大于该元素,横向查找,如果查找不到结果继续查找下一行;如果target等于该元素,直接输出。 public static boolean find(int[][]array,int target) { if (array == null || array.length < 1 || array[0].length < 1) { return false; } int rows = array.length; int cols = array[1].length; for (int i = 0; i < rows; i++) { if(array[i][0]<target){ for (int j = 0; j < cols; j++) { if(array[i][j]==target) return true; if(array[i][j]>target) break; } }else if(array[i][0]==target){ return true; } } return false; } 方法2

面试题4:二维数组中的查找

拥有回忆 提交于 2020-01-28 00:40:37
题目: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 分析: 分3种情况来分析查找过程: 当前位置等于要查找的数字,查找结束; 当前位置小于要查找的数字,根据数据排序规则,要查找的数字位于当前位置的右边或下边; 当前位置大于要查找的数字,根据数据排序规则,要查找的数字位于当前位置的左边或上边。 首先选取数组中右上角的数字。如果该数字等于要查找的数字,则查找过程结束;如果该数字大于要查找的数字,则剔除这个数字所在的列;如果该数字小于要查找的数字,则剔除这个数字所在的行。也就是说,如果要查找的数字不在数组右上角,则每一次都在数组的查找范围中剔除一行或者一列,这样每一步都可以缩小查找范围,直到找到要查找的数字,或者查找范围为空。 既然可以选择右上角的数字,同理,也可以选择左下角的数据,只是后面剔除行列的时候稍微有些变化。但是不能选择左上角或者右下角,因为数据排序规则,不能剔除某一行或某一列,也就无法缩小查询范围。 解法: package com.wsy; public class Main { public static void main(String[] args) { int[][] a = new int[][]{{1, 2, 8, 9}, {2, 4, 9,

C++——坐标那些事儿

可紊 提交于 2020-01-27 18:59:48
C++——坐标那些事儿 平面直角坐标系 C++中的二维数组 二维数组与坐标 在c++中,很多萌新(包括小编)在做需要地图的程序时会用一个二维数组来当做地图,而在初二或往后的童鞋很可能会直接用 平面直角坐标系 的思维去理解二维数组的行和列:把X轴理解为列,而把Y轴理解为行。 小编在这里要郑重地告诉你: 这种想法是 错 误 的!!! 为了帮助大家理解,小编先讲一下平面直角坐标系。 平面直角坐标系 小编在这里大概地讲一下平面直角坐标系,具体(官方)讲解请点 这里 。 平面直角坐标系是在一个平面内有两条相互垂直且有公共原点的 数轴 ,它们的公共原点O称为直角坐标系的原点。 一般来说 ,在平面直角坐标系内,水平且正方向向右的数轴被称为 X轴 ,而竖直且正方向向上的数轴被称为 Y轴 。 对于平面内任意一点C,过点C分别向X轴、Y轴作垂线,垂足在X轴、Y轴上的对应点a,b分别叫做点C的横坐标、纵坐标,有序数对(a,b)叫做点C的 坐标 。 C++中的二维数组 一般,我们在c++中定义一个二维数组是这样的: 数据类型 数组名 [ 常量表达式 1 ] [ 常量表达式 2 ] ; 例如, int a [ 4 ] [ 3 ] ; 这句话表示创建了一个有4个元素并且每个元素都为有3个元素的数组的数组。 是不是有点蒙? 上图: 有三个元素的数组 ┌──────────┴─────────┐ ┌a [ 0 ]

(3)leetcode--旋转图像

ぃ、小莉子 提交于 2020-01-27 13:37:29
题目: 给定一个 n × n 的二维矩阵表示一个图像。 将图像顺时针旋转 90 度。 说明:你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。 请不要 使用另一个矩阵来旋转图像。 示例 1: 给定 matrix = [ [1,2,3], [4,5,6], [7,8,9] ], 原地 旋转输入矩阵,使其变为: [ [7,4,1], [8,5,2], [9,6,3] ] 示例 2: 给定 matrix = [ [ 5, 1, 9,11], [ 2, 4, 8,10], [13, 3, 6, 7], [15,14,12,16] ], 原地 旋转输入矩阵,使其变为: [ [15,13, 2, 5], [14, 3, 4, 1], [12, 6, 8, 9], [16, 7,10,11] ] 解答 : 思路: 将矩阵看作由外而内的一个个环组成,每个环有四个边;则一次将每个边按顺序调换即可;当前环结束后操作下一个环; class Solution { public: void rotate(vector<vector<int>>& matrix) { if(matrix.size()<=0) return; int left=0, right=matrix.size()-1; //由外而内缩小环 while(left<right) { rotateOneByOne(matrix