当前位置:文档之家› Matlab 基础知识——矩阵操作及运算(矩阵、数组区别)

Matlab 基础知识——矩阵操作及运算(矩阵、数组区别)

Matlab 基础知识——矩阵操作及运算(矩阵、数组区别)
Matlab 基础知识——矩阵操作及运算(矩阵、数组区别)

看论文时,经常看到矩阵,但在记忆里又看到数组。那么问题来了,矩阵和数组分别是什么?二者有什么区别?看论文时,经常看到矩阵,但在记忆里又看到数组。那么问题来了,矩阵和数组分别是什么?二者有什么区别?

在数学上,定义m×n个数(i=1, 2…, m ; j=1, 2,…n)排成的m行n列的数表示为m行n列的矩阵,并且用大写加粗黑色字母表示。

只有一行的矩阵:,也称之为行向量;

只有一列的矩阵,也称之为列向量。

矩阵最早来自于方程组的系数即常数所构成的方阵,这一个概念有19世纪英国数学家凯利首先提出。

数组是在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来的一种形式。这些按序排列的同类数据元素的集合称之为数组。

在Matlab中,一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可以分为数值数组、字符数组、单元数组、结构数组等各种类别。

看完上面的内容,矩阵和数组的区别似乎懂了一点。矩阵和数组在Matlab中存在很多方面的区别:

(1)矩阵是数学的概念,而数组是计算机程序设计领域的概念;

(2)作为一种变换或映射算符的体现,矩阵运算有着明确而严格的数学规则。而数组运算是Matlab软件定义的规则,其目的是为了使数据管理方便,操作简单,命令形式自然,执行计算有效。

二者联系主要体现在:在Matlab中,矩阵是以数组的形式存在的。因此,一维数组相当于向量;二维数组相当于矩阵。所以矩阵是数组的子集。

对矩阵的基本操作,主要有矩阵的构建、矩阵维度和矩阵大小的改变、矩阵的索引、矩阵的属性信息的获取、矩阵结构的改变等。对于这些操作,Matlab中都有固定的指令或者相应的库函数与之相对应。在程序用到的时候,每次都要上网查,网上的很散。这里,我对我经常用的做了总结。以后用到可以查阅。

1、矩阵下表引用

下面将常用的几个举例说明:

例如:A=[1 2 3 4 5;

12 12 14 56 657;

23 46 34 67 56 ];

(1)将二维矩阵A转化成一维矩阵(列向量):Matlab 默认将其转化成列向量,需要行向量转置即可。

Matlab程序: A(:) %将二维矩阵其转化成列向量

(2)读取矩阵取前N行或N列的方法

Matlab程序:

A(1:2,:) %读取矩阵A前2行

A(:,1:3) %读取矩阵A前3列

(3)求矩阵中每行或每列的最大值和最小值

①找矩阵A每列的最大值:[max_A,index]=max(A,[],1);

其中,max_A是最大的数值,index是最大的数值所处的位置

②找矩阵A每行的最大值:[max_A,index]=max(A,[],2);

其中,max_A是最大的数值,index是最大的数值所处的位置

同理可求出每行,每列的最小值。

③找矩阵A每列的最小值:[min_A,index]=min(A,[],1);

其中,min_A是最小的数值,index是最小的数值所处的位置

④找矩阵A每行的最小值:[min_A,index]=min(A,[],2);

其中,min_A是最小的数值,index是最小的数值所处的位置

2、矩阵合并

已知矩阵:

A=[1 2 3 4 5;

12 12 14 56 657;

23 46 34 67 56];

B=[1 1 1 1 1;

2 2 2 2 2;

3 3 3 3 3];

(1)矩阵A,B左右合并:horzcat(A,B); %矩阵A,B左右合并

(2)矩阵A,B上下合并:vertcat(A,B); %矩阵A,B上下合并

3、矩阵运算(加、减、乘、除、点乘、点除等)

(1)A+B; 表示矩阵A和矩阵B相加(各个元素对应相加);(2)A-B; 表示矩阵A和矩阵B相减(各个元素对应相减);(3)A*B; 表示矩阵A和矩阵B相乘;

(4)A.*B; 表示矩阵A和矩阵B对应元素相乘(点乘);

(5)A/B; 表示矩阵A与矩阵B相除法;

(6)A./B; 表示矩阵A和矩阵B对应元素相除(点除);

(7)A^B; 表示矩阵A的B次幂;

(8)A.^B; 表示矩阵A的每个元素的B次幂。

Matlab平台提供了大量的运算函数,很强势。下面列举了常用的函数

---------------------

作者:在水一方xym

来源:CSDN

原文:https://https://www.doczj.com/doc/c116155214.html,/zaishuiyifangxym/article/details/81746332 版权声明:本文为博主原创文章,转载请附上博文链接!

MATLAB中的矩阵与向量运算

4.1 数组运算和矩阵运算 从外观形状和数据结构来看,二维数组和数学中的矩阵没有区别.但是,矩阵作为一种变换或映射算符的体现,矩阵运算有着明确而严格的数学规则.而数组运算是MATLAB软件所定义的规则,其目的是为了数据管理方面,操作简单,指令形式自然和执行计算有效.所以,在使用MATLAB时,特别要明确搞清数组运算和矩阵运算的区别.表 4.1.1 数组运算和矩阵运算指令形式和实质内涵 数组运算矩阵运算 指令含义指令含义 A.'非共轭转置A'共轭转置 A=s把标量s赋给数组A的每个元素 s+B把标量s分别与数组B的每个元素相加s-B, B-s标量s分别与数组B的元素之差 s.*A标量s分别与数组A的元素之积s*A标量s分别与矩阵A的元素之积 s./B, B.\s标量s分别被数组B的元素除s*inv(B)矩阵B的逆乘标量s A.^n数组A的每个元素的n次方A^n A为方阵时,矩阵A的n次方 A+B数组对应元素的相加A+B矩阵相加 A-B数组对应元素的相减A-B矩阵相减 A.*B数组对应元素的相乘A*B内维相同矩阵的乘积 A./B A的元素被B的对应元素除A/B A右除B B.\A一定与上相同B\A A左除B(一般与右除不同) exp(A)以e为底,分别以A的元素为指数,求幂expm(A) A的矩阵指数函数 log(A) 对A的各元素求对数logm(A) A的矩阵对数函数 sqrt(A) 对A的积各元素求平方根sqrtm(A) A的矩阵平方函数 从上面可以看到,数组运算的运算如:乘,除,乘方,转置,要加"点".所以,我们要特别注意在求"乘,除,乘方,三角和指数函数"时,两种运算有着根本的区别.另外,在执行数组与数组运算时,参与运算的数组必须同维,运算所得的结果数组也是总与原数组同维. 4.2 数组的基本运算 在MATLAB中,数组运算是针对多个数执行同样的计算而运用的.MATLAB以一种非常直观的方式来处理数组. 4.2.1 点转置和共轭转置 . ' ——点转置.非共轭转置,相当于conj(A'). >> a=1:5; >> b=a. ' b = 1 2 3 4 5 >> c=b. ' c = 1 2 3 4 5 这表明对行向量的两次转置运算便得到原来的行向量. ' ——共轭转置.对向量进行转置运算并对每个元素取其共轭.如: >> d=a+i*a

MATLAB实验二 矩阵基本运算(一)答案

实验一 矩阵基本运算(一) (1)设A 和B 是两个同维同大小的矩阵,问: 1)A*B 和A.*B 的值是否相等? ????? ?? =763514432A ???? ? ??=94 525 313 4B A=[2 3 4;4 1 5;3 6 7]; B=[4 3 1;3 5 2;5 4 9]; A*B, A.*B ans = 37 37 44 44 37 51 65 67 78 ans = 8 9 4 12 5 10 15 24 63 2)A./B 和B.\A 的值是否相等? A=[2 3 4;4 1 5;3 6 7]; B=[4 3 1;3 5 2;5 4 9]; A./B, B./A

ans = 0.5000 1.0000 4.0000 1.3333 0.2000 2.5000 0.6000 1.5000 0.7778 ans = 2.0000 1.0000 0.2500 0.7500 5.0000 0.4000 1.6667 0.6667 1.2857 3)A/B和B\A的值是否相等? A=[2 3 4;4 1 5;3 6 7]; B=[4 3 1;3 5 2;5 4 9]; A/B, B/A ans = -0.3452 0.5119 0.3690 0.7857 -0.7857 0.6429 -0.9762 1.3095 0.5952 ans = 110.0000 -15.0000 -52.0000

92.0000 -13.0000 -43.0000 -22.0000 4.0000 11.0000 4)A/B和B\A所代表的数学含义是什么? 解: A/B是B*A的逆矩阵 B\A是B*A的逆矩阵 (2)写出完成下列操作的命令。 1)将矩阵A第2—5行中第1,3,5列元素赋给矩阵B。 A=[0.9501 0.4565 0.9218 0.4103 0.1389 0.0153 0.2311 0.0185 0.7382 0.8936 0.2028 0.7468 0.6068 0.8214 0.1763 0.0579 0.1987 0.4451 0.4860 0.4447 0.4057 0.3529 0.6038 0.9318 0.8913 0.6154 0.9355 0.8132 0.2722 0.4660 0.7621 0.7919 0.9169 0.0099 0.1988 0.4186] B=A(2:5,[1,3,5]) A = 0.9501 0.4565 0.9218 0.4103 0.1389 0.0153 0.2311 0.0185 0.7382 0.8936 0.2028 0.7468 0.6068 0.8214 0.1763 0.0579 0.1987 0.4451 0.4860 0.4447 0.4057 0.3529 0.6038 0.9318 0.8913 0.6154 0.9355 0.8132 0.2722 0.4660 0.7621 0.7919 0.9169 0.0099 0.1988 0.4186 B = 0.2311 0.7382 0.2028 0.6068 0.1763 0.1987 0.4860 0.4057 0.6038 0.8913 0.9355 0.2722 2)删除矩阵A的第7号元素。 A=rand(6,6); >> A(7)=[inf] A = 0.8385 Inf 0.1730 0.1365 0.2844 0.5155

2-matlab矩阵的代数运算 (1)

乘法运算乘法运算符为”*”,运算规则和现行代数中矩阵乘法运算相同,即放在前面的矩阵的行元素,分别与放在后面的矩阵的各列元素对应相乘并相加。 1、两个矩阵相乘:必须满足前一矩阵的列数等于后一矩阵的行数。 2、矩阵的数乘:返回数与矩阵中每一个元素相乘后的矩阵 3、向量的点乘(内积):维数相同的两个向量的点乘;A.*B表示A与B对应的元素相乘,返回的是一个向量 4、向量点积: (1)C=dot(A,B) %若A、B为向量,A与B长度相同;若为矩阵,则A与B有相同维数 (2)C=dot(A,B,dim) %在dim维数中给出A与B的点积 5、向量叉乘:在数学上,两向量的叉乘是一个过两向量交点且垂直于两向量所在平面的向量。 (1)C=cross(A,B) %若A、B为向量,则返回A与B的叉乘,即C=AXB;若为矩阵,则返回一个3Xn矩阵,其中列是A与B对应列的叉积,A、B都是3Xn矩阵 (2)C=cross(A,B,dim) %在dim维数中给出向量A与B的叉积注:A与B必须具有相同维数,size(A,dim)和size(B,dim)必须是3 6、矩阵卷积和多项式乘法:w=conv(u,v) (反褶积deconv(u,v))长度为m的向量序列u和长度为n的向量序列v的卷积定义为 ∑ = + = k 1 j j) -1 u(j)v(k )k( w,其中w向量序列长度为(m+n-1) 多项式的乘法实际上是多项式系数向量间的卷积运算,举例如下:展开多项式(s2+2s+2)(s+4)(s+1) >>w=conv([1,2,2],conv([1,4],[1,1])) w = 1 7 16 18 8 >>p=poly2str(w,’s’) %将w表示成多项式 p=s^4 +7 s^3 +16 s^2 +18 s + 8 7、张量积 C=kron(A,B) %A为mxn矩阵,B为pxq矩阵,则C为mpxnq矩阵A与B的张量积定义为: 加、减运算加、减运算符为”+”、”--”。运算规则为对应元素相加、减 pow2函数命令:X=pow2(F,E),表示F*2E;命令:X=pow2(E),表示2E 矩阵的代数 运算

matlab矩阵运算和数组运算

matlab矩阵运算和数组运算 作者:佚名教程来源:网络点击数:1368 更新时间:2010-5-3 矩阵运算和数组运算是Matlab的数值运算中的两大类运算。矩阵运算是按矩阵运算法 则进行的运算;数组运算无论是何种运算操作都是对元素逐个进行。 矩阵运算和数组运算指令对照汇总 矩阵运算指令指令含义数组运算指令指令含义 A' 矩阵转置 A.+B 对应元素相加 A+B 矩阵相加 A.-B 对应元素相减 A-B 矩阵相减 A.*B 同维数组对应元素相乘 s+B 标量加矩阵 s.*A A的每个元素乘s s-B,B-s 标量矩阵相减 A./B A的元素被B的对应元素除 A*B 矩阵相乘 B.\A 同上 A/B A右除B s./B, B.\s s 分别被B的元素除 B\A A左除B A.^n A的每个元素自乘n 次 inv(A) 矩阵求逆 log(A) 对A的每个元素求对数 A^n 矩阵的n次幂 sqrt(A) 对A的每个元素求平方根 f(A) 求A的各个元素的函数值 例: a=[1 2 3; 4 5 6; 7 8 9];b=[1 2 3; 3 2 1;1 4 5]; c=[1 1 1;2 3 1;1 0 2]; d=a*c^2+b d = 32 31 36 82 79 82 128 129 134 3.4 矩阵函数和数组函数

3.4.1 基本数组函数 数组函数是对各个元素的函数设计的。 f(.)基本函数表 函数名称功能函数名称功能 sin 正弦 acosh 反双曲余弦 cos 余弦 atanh 反双曲正切 tan 正切 acoth 反双曲余切 cot 余切 asech 反双曲正割 sec 正割 acsch 反双曲余割 csc 余割 fix 朝零方向取整 asin 反正弦 ceil 朝正无穷大方向取整 acos 反余弦 floor 朝负无穷大方向取整 atan 反正切 round 四舍五入到整数 atan2 四象反正切 rem 除后取余数 acot 反余切 sign 符号函数 asec 反正割 abs 绝对值 acsc 反余割 angle 复数相角 sinh 双曲正弦 imag 复数虚部 cosh 双曲余弦 real 复数实部 tanh 双曲正切 conj 复数共轭 coth 双曲余切 log10 常用对数 sech 双曲正割 log 自然对数 csch 双曲余割 exp 指数 asinh 反双曲正弦 aqrt 平方根 f(.)特殊函数表 函数名称功能函数名称功能 bessel 第一、第二类Bessel函数 erf 误差函数

matlab中的矩阵的基本运算命令

1.1 矩阵的表示 1.2 矩阵运算 1.2.14 特殊运算 1.矩阵对角线元素的抽取 函数diag 格式X = diag(v,k) %以向量v的元素作为矩阵X的第k条对角线元素,当k=0时,v为X的主对角线;当k>0时,v为上方第k条对角线;当k<0时,v为下方第k条对角线。 X = diag(v) %以v为主对角线元素,其余元素为0构成X。 v = diag(X,k) %抽取X的第k条对角线元素构成向量v。k=0:抽取主对角线元素;k>0:抽取上方第k条对角线元素;k<0抽取下方第k条对角线元素。 v = diag(X) %抽取主对角线元素构成向量v。 2.上三角阵和下三角阵的抽取 函数tril %取下三角部分 格式L = tril(X) %抽取X的主对角线的下三角部分构成矩阵L L = tril(X,k) %抽取X的第k条对角线的下三角部分;k=0为主对角线;k>0为主对角线以上;k<0为主对角线以下。函数triu %取上三角部分 格式U = triu(X) %抽取X的主对角线的上三角部分构成矩阵U U = triu(X,k) %抽取X的第k条对角线的上三角部分;k=0为主对角线;k>0为主对角线以上;k<0为主对角线以下。3.矩阵的变维 矩阵的变维有两种方法,即用“:”和函数“reshape”,前者主要针对2个已知维数矩阵之间的变维操作;而后者是对于一个矩阵的操作。 (1)“:”变维 (2)Reshape函数变维 格式 B = reshape(A,m,n) %返回以矩阵A的元素构成的m×n矩阵B B = reshape(A,m,n,p,…) %将矩阵A变维为m×n×p×… B = reshape(A,[m n p…]) %同上 B = reshape(A,siz) %由siz决定变维的大小,元素个数与A中元素个数 相同。 (5)复制和平铺矩阵 函数repmat 格式 B = repmat(A,m,n) %将矩阵A复制m×n块,即B由m×n块A平铺而成。 B = repmat(A,[m n]) %与上面一致 B = repmat(A,[m n p…]) %B由m×n×p×…个A块平铺而成 repmat(A,m,n) %当A是一个数a时,该命令产生一个全由a组成的m×n矩阵。 1.3 矩阵分解 1.3.1 Cholesky分解 函数chol 格式R = chol(X) %如果X为n阶对称正定矩阵,则存在一个实的非奇异上三角阵R,满足R'*R = X;若X非正定,则产生错误信息。 [R,p] = chol(X) %不产生任何错误信息,若X为正定阵,则p=0,R与上相同;若X非正定,则p为正整数,R是有序的上三角阵。 1.3.2 LU分解

MATLAB矩阵及其运算函数表

MATLAB 矩阵及其运算函数表 函数名函数功能 abs( ) 绝对值、负数的模、字符串的ASCII码值都可用来求字符串矩阵所 对应的ASCII码数值矩阵double( ) char( ) 可以把ASCII码数值矩阵转换为字符串矩阵 fix( ) 向零方向取整 floor( ) 不大于自变量的最大整数 ceil( ) 不小于自变量的最小整数 round( ) 四舍五入到最邻近的整数 rem(x,y) 求余函数 mod(x,y) % exp( ) 指数函数 [ ] 空操作符 format 格式符设置或改变数据输出格式 (其中格式符决定数据的输出格式) e1:e2:e3 冒号表达式可以产生一个行向量 (其中e1为初始值,e2为步长,e3为终止值) linspace(a,b,n) 产生一个行向量 (其中a和b是生成向量的第一个和最后一个元素,n是元素总数) [注:linspace(a,b,n)与a:(b-a)/(n-1):b等价] A(:,j) 表示取A矩阵的第j列全部元素 A(i,:) 表示A矩阵第i行的全部元素 A(i,j) 表示取A矩阵第i行、第j列的元素 A(i:i+m,:) 表示取A矩阵第i~i+m行的全部元素 A(:,k:k+m) 表示取A矩阵第k~k+m列的全部元素 A(i:i+m,k:k+m) 表示取A矩阵第i~i+m行内,并在第k~k+m列中的所有元素 zeros 产生全0矩阵(零矩阵) ones 产生全1矩阵(幺矩阵) eye 产生单位矩阵 rand 产生0~1间均匀分布的随机矩阵 randn 产生均值为0,方差为1的标准正态分布随机矩阵 zeros(size(A)) 建立一个与矩阵A同样大小的零矩阵 reshape(A,m,n) 在矩阵总元素保持不变的前提下,将矩阵A重新排成m×n的二维矩阵magic(n) 生成一个n阶魔方矩阵(其每行、每列及两条对角线上的元素和都相等) vander(V) 生成以向量V为基础向量的范得蒙矩阵(最后一列全为1,倒数第二列为一个指定的向量,其他各列是其后列与倒数第二列的点乘积) hilb(n) 生成希尔伯特矩阵 invhilb(n) 求n阶的希尔伯特矩阵的逆矩阵 (用一般方法求逆会因原始数据的微小扰动而产生不可靠的计算结果) toeplitz(x,y) 生成一个以x为第1列,y为第1行的托普利兹矩阵(除第1行第1列外,

Matlab常用函数数组及矩阵的基本运算

实验一 Matlab 常用函数、数组及矩阵的基本运算 一、 实验目的 1. 了解Matlab7.0软件工作界面结构和基本操作; 2. 掌握矩阵的表示方法及Matlab 常用函数; 3. 掌握数组及矩阵的基本运算. 二、 实验内容 1. 了解命令窗口(command widow)和变量空间(workspace)的作用,掌握清 除命令窗口(clc )和变量空间(clear)的方法.掌握查询函数(help)的方法. 2. 掌握保存和加载变量的方法. 加载变量:load 变量名. 3. 掌握掌握矩阵的表示方法: 给a,b,c 赋如下数据: ]6,46,23,4,2,6,3,8,0,1[,356838241248 7,278744125431-=??????????--=??????????=c b a 4. 求a+b,a*b,a.*b,a/b,a./b,a^2,a.^2的结果. 5. 将str1=electronic; str2 = information; str3 = engineering; 三个字符串连接 在一起成str = electronic information engineering. 6. 求矩阵a 的逆矩阵a -1,行列式计算。 (inv(a),det(a)) 三、 实验要求 1.上机操作,熟练掌握清除命令窗口和变量空间的方法、查询变量的方法、加载变量的方法。 2.第2道题请写出步骤。 3.对实验内容中第3-6项,写出指令,上机运行. 记录运行结果(数据)。 4.写出实验报告。 四、 实验结果 2. 用save 函数,可以将工作空间的变量保存成txt 文件或mat 文件等. 比如: save peng.mat p j 就是将工作空间中的p 和j 变量保存在peng.mat 中. 用load 函数,可以将数据读入到matlab 的工作空间中. 比如:load peng.mat 就是将peng.mat 中的所有变量读入matlab 工作空间中。

MATLAB基本矩阵运算

Basic Matrix Operations 一、实验目的 1、掌握向量和矩阵的创建方法; 2、掌握向量和矩阵元素的索引方法; 3、掌握向量和矩阵的基本操作; 4、利用MATLAB编写程序进行矩阵运算。 二、基础知识 1、常见数学函数 函数名数学计算功能函数名数学计算功能 Abs(x) 实数的绝对值或复数的幅值floor(x) 对x朝-∞方向取整 Acos(x) 反余弦arcsin x gcd(m,n)求正整数m和n的最大公约数 acosh(x) 反双曲余弦arccosh x imag(x) 求复数x的虚部 angle(x) 在四象限内求复数 x 的相角lcm(m,n) 求正整数m和n的最小公倍数 asin(x) 反正弦arcsin x log(x) 自然对数(以e为底数) asinh(x) 反双曲正弦arcsinh x log10(x) 常用对数(以10为底数) atan(x) 反正切arctan x real(x) 求复数x的实部 atan2(x,y) 在四象限内求反正切Rem(m,n) 求正整数m和n的m/n之余数 atanh(x) 反双曲正切arctanh x round(x) 对x四舍五入到最接近的整数 ceil(x) 对x朝+∞方向取整sign(x) 符号函数:求出x的符号 conj(x) 求复数x的共轭复数sin(x) 正弦sin x cos(x) 余弦cos x sinh(x) 反双曲正弦sinh x cosh(x) 双曲余弦cosh x sqrt(x) 求实数x的平方根:x exp(x) 指数函数xe tan(x) 正切tan x fix(x) 对x朝原点方向取整tanh(x) 双曲正切tanh x 2、常量与变量 系统的变量命名规则:变量名区分字母大小写;变量名必须以字母打头,其后可以是任意字母,数字,或下划线的组合。此外,系统内部预先定义了几个有特殊意义和用途的变量,见下表: 特殊的变量、常量取值

matalb矩阵计算(MATLAB矩阵计算)

matalb矩阵计算(MATLAB矩阵计算)matalb矩阵计算(MATLAB矩阵计算) 4.1 array operations and matrix operations From the appearance of the shape and structure of the data matrix, two-dimensional array and no difference in mathematics. However, as the embodiment of a matrix transformation or mapping operator matrix with mathematical rules, clear and strict. And array operation is defined by the software of MATLAB rules, its purpose is for data management, simple operation. The instruction form nature and perform calculations effectively. Therefore, when using MATLAB, in particular to a clear distinction between clear array operations and matrix operations. Table 4.1.1 lists the similarities and differences between the essence and connotation of two kinds of operation instruction. 4.1.1 array operations and matrix operations, instruction forms and substantive meaning Array operation Matrix operation instructions Meaning instructions Meaning A.' Non conjugate transpose

matlab数组运算

Matlab中数组元素引用有三种方法: 1.下标法(subscripts) 2.索引法(index) 3.布尔法(Boolean) 在使用这三种方法之前,大家头脑一定要清晰的记住,Matlab中数组元素是按列存储(与Fortran一样),比如说下面的二维数组 A= 8 1 6 3 5 7 4 9 2 Matlab的存储顺序是8,3,4,1,5,9,6,7,2,也就是说先行后列,对于3维数组呢,就是先行后列再页 对应个元素的索引和下标分别为 Element Index Subscripts 8 1 (1,1) 3 2 (2,1) 4 3 (3,1) 1 4 (1,2) 5 5 (2,2) 9 6 (3,2) 6 7 (1,3) 7 8 (2,3) 2 9 (3,3) 从上面的例子中已经很清晰的说明了下标和索引的区别了,也就是说Matlab为没有个元素分配了一个唯一识别的ID(即index) 1.下标法引用 A(ii,jj):其中ii和jj可以是一维向量、标量、“:”号或者“end” 大家对下标估计比较熟悉,由于在C语言中接触过,但是我这里需要强调的是,Matlab的下标是可以多行多列同时引用的,而像C语言等一次只能引用一个,比如 A(2:3,3:-1:1)表示引用数组中的2~3行,3~1列对应的元素 A(:,end)表示引用最后一列元素,“:”表示所有列或行,“end”表示最后一列或列,“end-n”表示倒数第n行或列 A(1,end-1)表示引用第1行倒数第2个元素

A([2 1 3 3],[1 1 2 2 1])表示引用按两个向量引用指定的元素,即A中的第2,1,3,3行和第1,1,2,2,1列对应的元素 >>A=magic(3) A = 8 1 6 3 5 7 4 9 2 >>A(2:3,3:-1:1) ans = 7 5 3 2 9 4 >>A(:,end) ans = 6 7 2 >>A(1,end-1) ans = 1 >>A([2 1 3 3],[1 1 2 2 1]) ans = 3 3 5 5 3 8 8 1 1 8 4 4 9 9 4 4 4 9 9 4 2.索引法引用(说白了索引就是存储顺序) A(index):index可以是任意的数组,index的元素必须是正整数,且不大于numel(A),返回的是一个尺寸与index一样的数组 下标和索引之间可以通过ind2sub和sub2ind函数相互转换,具体可以看帮助,很简单 [I,J] = ind2sub(siz,IND)

Matlab实验2-矩阵的基本运算

实验二、矩阵的基本运算 一、 问题 已知矩阵A 、B 、b 如下: ???????? ??????????-------------=0319481187638126542 86174116470561091143A ???????? ??????????------=503642237253619129113281510551201187851697236421B … []1187531=b 应用Matlab 软件进行矩阵输入及各种基本运算。 二、 实验目的: 熟悉Matlab 软件中的关于矩阵运算的各种命令 三、 预备知识 1、 、 2、 线性代数中的矩阵运算。 3、 本实验所用的Matlab 命令提示: (1)、矩阵输入格式:A =[a 11, a 12; a 21, a 22];b =初始值:步长:终值; (2)、求A 的转置:A'; (3)、求A 加B :A +B ; (4)、求A 减B :A -B ; (5)、求数k 乘以A :k*A ; (6)、求A 乘以B :A*B ; (7)、求A 的行列式:det (A ); (8)、求A 的秩:rank (A ); … (9)、求A 的逆:inv (A )或(A )-1; (10)、B 右乘A 的逆:B/A ; (11)、B 左乘A 的逆:A \B ; (12)、求A 的特征值:eig (A ); (13)、求A 的特征向量矩阵X 及对角阵D :[X ,D ]=eig (A ); ( (14)、求方阵A 的n 次幂:A ^n ;

(15)、A与B的对应元素相乘:A.*B; (16)、存储工作空间变量:save '文件名' '变量名'; (17)、列出工作空间的所有变量:whos; 四、《 五、实验内容与要求 1、输入矩阵A,B,b; >> A=[3,4,-1,1,-9,10;6,5,0,7,4,-16;1,-4,7,-1,6,-8;2,-4,5,-6,12,-8;-3,6,-7,8,-1,1;8,-4,9,1,3,0] B=[1 2 4 6 -3 2;7 9 16 -5 8 -7;8 11 20 1 5 5;10 15 28 13 -1 9;12 19 36 25 -7 23;2 4 6 -3 0 5] b=[1,3,5,7,8,11] | A = 3 4 -1 1 -9 10 6 5 0 7 4 -16 1 -4 7 -1 6 -8 2 -4 5 -6 12 -8 ^ -3 6 -7 8 -1 1 8 -4 9 1 3 0 B = 1 2 4 6 -3 2 7 9 16 -5 8 -7 ^ 8 11 20 1 5 5 10 15 28 13 -1 9 12 19 36 25 -7 23 2 4 6 - 3 0 5 b = ) 1 3 5 7 8 11 2、作X21=A'、X22=A+B、X23=A-B、X24=AB; >> X21=A' X22=A+B X23=A-B % X24=A*B X21 = 3 6 1 2 -3 8 4 5 -4 -4 6 -4 -1 0 7 5 -7 9 ; 1 7 -1 -6 8 1 -9 4 6 12 -1 3 10 -16 -8 -8 1 0 X22 = 4 6 3 7 -12 12 (

matlab中矩阵基本运算命令.docx

1.1矩阵的表示 1.2矩阵运算 1.2.14特殊运算 1.矩阵对角线元素的抽取 函数diag 格式X = diag(v,k)% 以向量 v 的元素作为矩阵 X 的第 k 条对角线元素,当 k=0 时, v 为 X 的主对角线;当 k>0 时,v 为上方第 k 条对角线;当 k<0 时, v 为下方第 k 条对角线。 X = diag(v)% 以 v 为主对角线元素,其余元素为 0 构成 X。 v = diag(X,k)%抽取 X 的第 k 条对角线元素构成向量 v。k=0:抽取主对角线元素; k>0 :抽取上方第 k 条对角线元素;k<0 抽取下方第 k 条对角线元素。 v = diag(X)% 抽取主对角线元素构成向量 v。 2.上三角阵和下三角阵的抽取 函数tril% 取下三角部分 格式L = tril(X)%抽取 X 的主对角线的下三角部分构成矩阵L L = tril(X,k)% 抽取 X 的第 k 条对角线的下三角部分; k=0 为主对角线; k>0 为主对角线以上; k<0 为主对角线以下。 函数triu% 取上三角部分 格式U = triu(X)%抽取 X 的主对角线的上三角部分构成矩阵U U = triu(X,k)% 抽取 X 的第 k 条对角线的上三角部分; k=0 为主对角线; k>0 为主对角线以上; k<0 为主对角线以下。3.矩阵的变维 矩阵的变维有两种方法,即用“:”和函数“reshape,”前者主要针对 2 个已知维数矩阵之间的变维操作;而后者是对 于一个矩阵的操作。 (1)“:”变维 (2)Reshape 函数变维 格式 B = reshape(A,m,n)%返回以矩阵 A 的元素构成的 m×n 矩阵 B B = reshape(A,m,n,p,)% 将矩阵 A 变维为 m×n×p× B = reshape(A,[m n p])%同上 B = reshape(A,siz)% 由 siz 决定变维的大小,元素个数与 A 中元素个数 相同。 (5)复制和平铺矩阵 函数repmat 格式 B = repmat(A,m,n)% 将矩阵 A 复制 m×n 块,即 B 由 m×n 块 A 平铺而成。 B = repmat(A,[m n])%与上面一致 B = repmat(A,[m n p]) %B 由 m×n×p× 个 A 块平铺而成 repmat(A,m,n)%当 A 是一个数 a 时,该命令产生一个全由 a 组成的 m×n 矩阵。 1.3矩阵分解 1.3.1Cholesky 分解 函数chol 格式R = chol(X)% 如果 X 为 n 阶对称正定矩阵,则存在一个实的非奇异上三角阵R,满足 R'*R = X ;若 X 非正定,则产生错误信息。 [R,p] = chol(X)% 不产生任何错误信息,若X 为正定阵,则p=0 ,R 与上相同;若X 非正定,则p 为正整数, R 是有序的上三角阵。 1.3.2 LU 分解

Matlab矩阵的简单操作

一、矩阵的表示 在MATLAB中创建矩阵有以下规则: a、矩阵元素必须在”[ ]”内; b、矩阵的同行元素之间用空格(或”,”)隔开; c、矩阵的行与行之间用”;”(或回车符)隔开; d、矩阵的元素可以是数值、变量、表达式或函数; e、矩阵的尺寸不必预先定义。 二,矩阵的创建: 1、直接输入法 最简单的建立矩阵的方法是从键盘直接输入矩阵的元素,输入的方法按照上面的规则。建立向量的时候可以利用冒号表达式,冒号表达式可以产生一个行向量,一般格式是:e1:e2:e3,其中e1为初始值,e2为步长,e3为终止值。还可以用linspace函数产生行向量,其调用格式为:linspace(a,b,n) ,其中a和b是生成向量的第一个和最后一个元素,n是元素总数。 2、利用MATLAB函数创建矩阵 基本矩阵函数如下: (1) ones()函数:产生全为1的矩阵,ones(n):产生n*n维的全1矩阵,ones(m,n):产生m*n 维的全1矩阵; (2) zeros()函数:产生全为0的矩阵; (3) rand()函数:产生在(0,1)区间均匀分布的随机阵; (4) eye()函数:产生单位阵; (5) randn()函数:产生均值为0,方差为1的标准正态分布随机矩阵。 3、利用文件建立矩阵 当矩阵尺寸较大或为经常使用的数据矩阵,则可以将此矩阵保存为文件,在需要时直接将文件利用load命令调入工作环境中使用即可。同时可以利用命令reshape对调入的矩阵进行重排。reshape(A,m,n),它在矩阵总元素保持不变的前提下,将矩阵A重新排成m*n的二维矩阵。 二、矩阵的简单操作 1.获取矩阵元素

Matlab二维数组与其应用

MATLAB画图入门篇--各种基本图形绘制的函数与实例【来自网络】 一.二维图形(Two dimensional plotting) 1. 基本绘图函数(Basic plotting function):Plot, semilogx, semilogy, loglog, polar, plotyy (1). 单矢量绘图(single vector plotting):plot(y),矢量y的元素与y元素下标之间在线性坐标下的关系曲线。 例1:单矢量绘图 y=[0 0.6 2.3 5 8.3 11.7 15 17.7 19.4 20]; plot(y) 可以在图形中加标注和网格, 例2:给例1 的图形加网格和标注。 y=[0 0.6 2.3 5 8.3 11.7 15 17.7 19.4 20]; plot(y) title('简单绘图举例'); xlabel('单元下标'); ylabel('给定的矢量'); grid (2). 双矢量绘图(Double vector plotting):如x和y是同样长度的矢量, plot(x,y)命令将绘制y元素对应于x元素的xy曲线图。 例:双矢量绘图。 x=0:0.05:4*pi; y=sin(x); plot(x,y) (3). 对数坐标绘图(ploting in logarithm coordinate):x轴对数semilogx, y轴对数semilogy, 双对数loglog, 例:绘制数组y的线性坐标图和三种对数坐标图。 y=[0 0.6 2.3 5 8.3 11.7 15 17.7 19.4 20]; subplot(2,2,1); plot(y); subplot(2,2,2); semilogx(y) subplot(2,2,3); semilogy(y); subplot(2,2,4); loglog(y) (4)极坐标绘图( Plotting in polar coordinate): polar(theta,rho) theta—角度,rho—半径 例:建立简单的极坐标图形。 t=0:.01:2*pi; polar(t,sin(2*t).*cos(2*t)) 2. 多重曲线绘图(Multiple curve plotting) (1)一组变量绘图(A group variable plotting) plot(x,y) (a) x为矢量,y为矩阵时plot(x,y)用不同的颜色绘制y矩阵中各行或列对应于x的曲线。例1: x=0:pi/50:2*pi; y(1,: )=sin(x); y(2,:) =0.6*sin(x); y(3, :)=0.3*sin(x); plot(x,y) (b) x为矩阵,y为矢量时绘图规则与(a)的类似,只是将x中的每一行或列对应于y进行绘图。。 例2: x(1,: )=0:pi/50:2*pi; x(2,: )=pi/4:pi/50:2*pi+pi/4; x(3,: )=pi/2:pi/50:2*pi+pi/2; y=sin(x(1,: )); plot(x,y) (c) x和y是同样大小的矩阵时, plot(x,y)绘制y矩阵中各列对应于x各列的图形。 例3: x(:,1 )=[0:pi/50:2*pi]'; x(:,2 )=[pi/4:pi/50:2*pi+pi/4]'; x(:,3 )=[pi/2:pi/50:2*pi+pi/2]'; y(:,1 )=sin(x(:,1 )); y(:,2 )=0.6*sin(x(:,1)); y(:,3 )=0.3*sin(x(:,1));

第一节 MATLAB 中的矩阵的输入

第一节 MATLAB 中的矩阵的输入 §1 直接输入 一、直接在工作窗中输入: A=[2, 4, 6, 8;1 3 5 7; 0 0 0 0;1,0,1,0] 其意义是定义了矩阵 ,0101000075318642?????? ? ??=A 二、如果矩阵中的元素是等步长的,可以用下面的方法 A=[1:0.2:2;1:6;2:2:12] A=[1:5]' “'”号在这里表示为转置,而 1:5 中间少了一个循环步长,此时将步长自动取为 1 。 §2 增删改 设已经定义 A=[1 2 3 4 5;10 8 6 4 2]; B=[0 1;1 0]; C=[1 2;2 4], 即已定义 A= B= C= 1 2 3 4 5 0 1 1 2 10 8 6 4 2 1 0 2 4 则命令:A=[[A(:,1:4);[C ,B]],[0 2 0 4]'] 将 A 定义成: A= 而 A(:,3)=[]; 将删除 A 的第三列 ,得 1 2 3 4 0 A= 1 2 4 0 10 8 6 4 2 10 8 4 2 1 2 0 1 0 1 2 1 0 2 4 1 0 4 2 4 0 4 §3 命令生成 使用 MATLAB 命令生成矩阵一般使用下面的命令 1 命令 linspace ,它有两个格式: a1=linspace(1,100) %生成一个从1到100的有100 个元素的向量 a2=linspace(0,1) %仍然是有 100 个元素但是是从 0 到 1 的向量 a3=linspace(0,-1) %请与上一个向量进行比较 上面是第一种格式 linspace(a,b),它是将 a 到 b 等分成 100份形成的向量。第二种 格式 linspace(a,b,n) 中的 n 为一个正整数,表示是从 a 到 b 等分成 n 份后形成的

MATLAB软件入门(矩阵与数组基本运算)

西安理工大学 学生实验报告 数学实验 实验课程名 称: 实验名称:MATLAB软件入门(矩阵与数组基本运 算) 学院:自动化与信息工程学院学生姓名: 班级: 学号:

一、实验目的及意义 [1]熟悉MATLAB软件的用户环境; [2]了解MATLAB软件的一般目的命令; [3]掌握MATLAB矩阵与数组操作与运算函数。 通过该实验的学习,使学生掌握MATLAB语言的基本特点,能灵活应用MATLAB软件解决一些简单问题,对线性代数所学内容有进一步理解。 二、实验内容 [1]MATLAB软件的矩阵,数组操作及运算练习; [2]线性代数相关知识复习; [3]用MATLAB语言编写命令M文件。 三、实验心得体会 经过腾讯课堂视频教学与展示,以及多次练习,已经能够熟练掌握所学内容,通过MATLAB各种函数的调用,解决矩阵变化中的大量运算,感受到MATLAB的方便与强大。 四、实验任务 完成以下具体实验内容,并写出实验报告。 从输入简单的矩阵开始,学习matlab软件 1.直接生成两个3*3的矩阵A,B;

>>A =magic(3) A= 8 1 6 3 5 7 4 9 2 >> B=diag([ 2 3 4 ]) B = 2 0 0 0 3 0 0 0 4 >> rank(A) ans = 3 >> rank(B)

3 2.熟悉矩阵的+, -, *, /, \, ^, .*, ./, .^, .*, .\ 运算,注意/ 与\ 区别有无“.”的区别; >> A+B ans = 10 1 6 3 8 7 4 9 6 >> A-B ans = 6 1 6 3 2 7 4 9 -2

MATLAB矩阵运算函数

MATLAB矩阵运算函数表 函数名函数功能 abs()绝对值、负数的模、字符串的ASCII码值都可用来求字符串矩阵所 对应的ASCII码数值矩阵double() char()可以把ASCII码数值矩阵转换为字符串矩阵 fix()向零方向取整 floor()不大于自变量的最大整数 ceil()不小于自变量的最小整数 round()四舍五入到最邻近的整数 rem(x,y)求余函数 mod(x,y)% exp()指数函数 []空操作符 format格式符设置或改变数据输出格式(其中格式符决定数据的输出格式) e1:e2:e3冒号表达式可以产生一个行向量 (其中e1为初始值,e2为步长,e3为终止值) linspace(a,b,n)产生一个行向量 (其中a和b是生成向量的第一个和最后一个元素,n是元素总数) [注:linspace(a,b,n)与a:(b-a)/(n-1):b等价] A(:,j)表示取A矩阵的第j列全部元素 A(i,:)表示A矩阵第i行的全部元素 A(i,j)表示取A矩阵第i行、第j列的元素 A(i:i+m,:)表示取A矩阵第i~i+m行的全部元素 A(:,k:k+m)表示取A矩阵第k~k+m列的全部元素 A(i:i+m,k:k+m)表示取A矩阵第i~i+m行内,并在第k~k+m列中的所有元素 zeros产生全0矩阵(零矩阵) ones产生全1矩阵(幺矩阵) eye产生单位矩阵 rand产生0~1间均匀分布的随机矩阵 randn产生均值为0,方差为1的标准正态分布随机矩阵 zeros(size(A))建立一个与矩阵A同样大小的零矩阵 reshape(A,m,n)在矩阵总元素保持不变的前提下,将矩阵A重新排成m×n的二维矩阵magic(n)生成一个n阶魔方矩阵(其每行、每列及两条对角线上的元素和都相等) vander(V)生成以向量V为基础向量的范得蒙矩阵(最后一列全为1,倒数第二列为一个指定的向量,其他各列是其后列与倒数第二列的点乘积) hilb(n)生成希尔伯特矩阵 invhilb(n)求n阶的希尔伯特矩阵的逆矩阵 (用一般方法求逆会因原始数据的微小扰动而产生不可靠的计算结果) toeplitz(x,y)生成一个以x为第1列,y为第1行的托普利兹矩阵(除第1行第1列外,

Matlab实验报告材料(二)矩阵和数组操作

一、实验目的 1.掌握矩阵和数组的一般操作,包括创建、保存、修改和调用等。 2.学习矩阵和数组的加减运算与乘法。 3.掌握对数组中元素的寻访与赋值,会对数组进行一般的操作。二、预备知识 1.常用的产生特殊矩阵的函数 ?eye(m,n) 单位阵 ?rand(m,n) 随机矩阵 ?randn(m,n) 正态分布的随机矩阵 ?zeros(m,n) 零矩阵 ?ones(m,n) 全部元素都为1的矩阵 ?compan(A) 矩阵A的伴随矩阵 ?bankel(m,n) n维Hankel矩阵 ?invhilb(n) n维逆Hilbert矩阵 ?magic(n) n维Magic矩阵 ?toeplitz(m,n) Toeplitz矩阵 ?wilkinson(n) n维Wilkinson特征值测试矩阵 ?handamard(n) n维Handamard矩阵 ?hilb(n) n维Hilbert矩阵 ?kron(A,B) Kronecker量积 ?pascal(n) n维Pascal矩阵 ?vander(A) 由矩阵A产生Vandermonde矩阵 2.通过矩阵的结构变换,获得新矩阵 表2 矩阵结构变化产生新矩阵

3.数组(矩阵)操作 对数组或矩阵的基本操作有插入、重新排列、提取、按列拉长、置空(去掉某行或某列)、置零、用单信下标操作一个矩阵,用逻辑数组操作一个矩阵、按指定条件求子数组,求数组的规模等,下面一一举例说明(对数组和矩阵不加区别)。 X=4:6 x=4 5 6 ①插入通过对x进行插入运算创建矩阵A A=[x-3;x;x+3] A=1 2 3 4 5 6 7 8 9 ②重新排列以逆序重排A的各行形成矩阵B B=A(3:-1:1,1:3) B=7 8 9 4 5 6 1 2 3 ③提取提取A的前两行的后两列形成矩阵C C=A(1:2,2:3) C=2 3 5 6 ④按列拉长对C按列拉长形成矩阵D D=C(:) D=2 5 3

相关主题
文本预览
相关文档 最新文档