ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:21.59KB ,
资源ID:12786684      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12786684.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(matlab中数组元素引用.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

matlab中数组元素引用.docx

1、matlab中数组元素引用Matlab中数组元素引用有三种方法:1.下标法(subscripts)2.索引法(index)3.布尔法(Boolean)在使用这三种方法之前,大家头脑一定要清晰的记住,Matlab中数组元素是按列存储(与Fortran一样),比如说下面的二维数组A= 8 1 6 3 5 7 4 9 2Matlab的存储顺序是8,3,4,1,5,9,6,7,2,也就是说先行后列,对于3维数组呢,就是先行后列再页对应个元素的索引和下标分别为Element Index Subscripts8 1 (1,1)3 2 (2,1)4 3 (3,1)1 4 (1,2)5 5 (2,2)9 6

2、(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)表示引用数组中的23行,31列对应的元素A(:,end)表示引用最后一列元素,“:”表示所有列或行,“end”表示最后一列或列,“end-n”表示倒

3、数第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 2A(2:3,3:-1:1)ans = 7 5 3 2 9 4A(:,end)ans = 6 7 2A(1,end-1)ans = 1A(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 42.索引法引用(说白了索引就是存储顺序)A(index):index可以是任意的数

4、组,index的元素必须是正整数,且不大于numel(A),返回的是一个尺寸与index一样的数组下标和索引之间可以通过ind2sub和sub2ind函数相互转换,具体可以看帮助,很简单I,J = ind2sub(siz,IND)IND = sub2ind(siz,I,J)还有使用A(:)就可以将数组A转换为列向量A(8):表示引用A的第8个元素B=A(1 10 5 2 2 1 3):表示依次引用A的第1,10,5,2,2,1,3个元素,返回与index尺寸相同的数组,也就是说size(B)=size(index)A(2 5 9;1 1 1;8 5 6):返回的时侯是一个3*3的矩阵A=mag

5、ic(5)%括号中为索引值A = 17 (1) 24 (6) 1 (11) 8 (16) 15 (21) 23 (2) 5 (7) 7 (12) 14 (17) 16 (22) 4 (3) 6 (8) 13 (13) 20 (18) 22 (23) 10 (4) 12 (9) 19 (14) 21 (19) 3 (24) 11 (5) 18 (10) 25 (15) 2 (20) 9 (25)A(8)ans = 6A(1 10 5 2 2 1 3)ans = 17 18 11 23 23 17 4A(2 5 9;1 1 1;8 5 6)ans = 23 11 12 17 17 17 6 11

6、243.布尔法引用A(X):X是一个有0和1组成布尔型数据,且size(A)=size(X),对应位置为1则留下该数据,0则去掉,最后按A中的存储顺序,返回一个列向量假如说A是3*3的数组A(logical(1 0 0;0 1 0;0 0 1):表示引用了数组A的对角线元素,注意必须使用logical将0/1数组转换为布尔型A=magic(3)%生成一个3*3的数组A= 8 1 6 3 5 7 4 9 2x=logical(1 1 0;0 1 1;1 0 1)%将double转化为boolean型数据x = 1 1 0 0 1 1 1 0 1A(x)%引用对应位置为1的数据,返回列向量ans

7、= 8 4 1 5 7 2x=A5%是有了比较语句,返回布尔型数据,对应位置数据大于5的为1,否则为0x = 1 0 1 0 0 1 0 1 0A(x)%返回大于A中大于5的元素,其实该命令可以一次性执行A(A5)或者find(A5),前者返回具体元素,后者返回大于5的数据的索引值ans = 8 9 6 7A(A5)%一次性执行上面的命令ans = 8 9 6 7indx=find(A5)%查找A中对于5的元素,返回它们的索引(index)值,此时我们可以通过A(index)返回具体的元素index = 1 6 7 8增加内容1、向量的创建1)直接输入:行向量:a=1,2,3,4,5列向量:a

8、=1;2;3;4;52)用“:”生成向量a=J:K 生成的行向量是a=J,J+1,Ka=J:D:K 生成行向量a=J,J+D,J+m*D,m=fix(K-J)/D)3)函数linspace 用来生成数据按等差形式排列的行向量x=linspace(X1,X2):在X1和X2间生成100个线性分布的数据,相邻的两个数据的差保持不变。构成等差数列。x=linspace(X1,X2,n): 在X1和X2间生成n个线性分布的数据,相邻的两个数据的差保持不变。构成等差数列。4)函数logspace用来生成等比形式排列的行向量X=logspace(x1,x2) 在x1和x2之间生成50个对数等分数据的行向量

9、。构成等比数列,数列的第一项x(1)=10x1,x(50)=10x2 X=logspace(x1,x2,n) 在x1和x2之间生成n个对数等分数据的行向量。构成等比数列,数列的第一项x(1)=10x1,x(n)=10x2注:向量的的转置:x=(0,5)2、矩阵的创建1)直接输入:将数据括在中,同一行的元素用空格或逗号隔开,每一行可以用回车或是分号结束如:a=1,2,3;3,4,5,运行后:a = 1 2 3 3 4 52)函数eye,生成单位矩阵eye(n) :生成n*n阶单位Eeye(m,n):生成m*n的矩阵E,对角线元素为1,其他为0eye(size(A):生成一个矩阵大小相同的单位矩阵

10、eye(m,n,classname):对角线上生成的元素是1,数据类型用classname指定。其数据类型可以是:duoble、single、int8、uint8、int16、uint16、int32、uint32 。3)函数ones 用ones生成全1的矩阵ones(n) : 生成n*n的全1矩阵ones(m,n) : 生成m*n的全1矩阵ones(size(A) : 生成与矩阵A大小相同的全1矩阵ones(m,n,p,)生成m*n*p*.的全1的多维矩阵ones(m,n,classname)制定数据类型为classname4)函数zeros 函数zeros生成全0矩阵zeros(n):生成

11、n*n的全0矩阵zeros(m,n:)生成m*n的全0矩阵zeros(size(A): 生成与矩阵A大小相同的全0矩阵zeros (m,n,p,)生成m*n*p*.的全0的多维矩阵zeros (m,n,classname)指定数据类型为classname5)函数rand 函数rand用来生成0,1之间均匀分布的随机函数,其调用格式是:Y=rand:生成一个随机数Y=rand(n):生成n*n的随机矩阵Y=rand(m,n):生成m*n的随机矩阵Y=rand(size(A):生成与矩阵A大小相同的随机矩阵Y=rand(m,n,p,):生成m*n*p*的随机数多维数组6)函数randn 函数ran

12、d用来生成服从正态分布的随机函数,其调用格式是:Y=randn:生成一个服从标准正态分布的随机数Y=randn(n):生成n*n的服从标准正态分布的随机矩阵Y=randn(m,n):生成m*n的服从标准正态分布的随机矩阵Y=randn(size(A):生成与矩阵A大小相同的服从标准正态分布的随机矩阵Y=randn(m,n,p,):生成m*n*p*的服从标准正态分布的随机数多维数组3、矩阵元素的提取与替换1) 单个元素的提取如:a=1,2,3;3,4,5,运行后:a = 1 2 3 3 4 5输入b=a(1,2)b = 22) 提取矩阵中某一行的元素,如:a=1,2,3;3,4,5,运行后:a

13、= 1 2 3 3 4 5输入b=a(1,:)b = 1 2 33) 提取矩阵中某一列:如:a=1,2,3;3,4,5,运行后:a = 1 2 3 3 4 5输入b=a(:,1)b = 1 34) 提取矩阵中的多行元素如:a=1,2,3;3,4,5,运行后:a = 1 2 3 3 4 5输入b=a(1,2,:)b = 1 2 3 3 4 55) 提取矩阵中的多列元素如:a=1,2,3;3,4,5,运行后:a = 1 2 3 3 4 5输入b=a(:,1,3)b = 1 3 3 56) 提取矩阵中多行多列交叉点上的元素如:a=1,2,3;3,4,5,运行后:a = 1 2 3 3 4 5输入b=

14、a(1,2,1,3)b = 1 3 3 57) 单个元素的替换:如:a=1,2,3;3,4,5,运行后:a = 1 2 3 3 4 5输入:a(2,3)=-1a = 1 2 3 3 4 -14、矩阵元素的重排和复制排列1) 矩阵元素的重排B=reshape(A,m,n):返回的是一个m*n矩阵B,矩阵B的元素就是矩阵A的元素,若矩阵A的元素不是m*n个则提示错误。B=reshape(A,m,n,p):返回的是一个多维的数组B,数组B中的元素个数和矩阵A中的元素个数相等B=reshape(A,):可以默认其中的一个维数B=reshape(A,siz) : 由向量siz指定数组B的维数,要求siz

15、的各元素之积等于矩阵A的元素个数2) 矩阵的复制排列 函数是repmatB=repmat(A,n):返回B是一个n*n块大小的矩阵,每一块矩阵都是AB=repmat(A,m,n):返回值是由m*n个块组成的大矩阵,每一个块都是矩阵A。B=repmat(A,m,n,p,):返回值B是一个多维数组形式的块,每一个块都是矩阵A5、矩阵的翻转和旋转1)矩阵的左右翻转 左右翻转函数是fliplr,调用格式:B=fliplr(A):将矩阵A左右翻转成矩阵B。输入:A=1,2,3;3,4,2A = 1 2 3 3 4 2输入:B=fliplr(A)B = 3 2 12 4 32)矩阵上下翻转 函数:flip

16、ud,调用格式:B=flipud(A):把矩阵A上下翻转成矩阵B3) 多维数组翻转 函数:flipdim,调用格式:B=flipdim(A,dim):把矩阵或多维数组A沿指定维数翻转成B4) 矩阵的旋转 函数:rot90,调用格式:B=rot90(A):矩阵B是矩阵A沿逆时针方向旋转90。得到的B=rot90(A,k):矩阵B是矩阵A沿逆时针方向旋转k*90。得到的(要想顺时针旋转,k取-1)6、矩阵的生成与提取函数1) 对角线函数 对角线函数diag既可以用来生成矩阵,又可以来提取矩阵的对角线元素,其调用格式:a) A=diag(v,k):当v是有n个元素的向量,返回矩阵A是行列数为n+|k|的方阵。向量v的元素位于A的第k条对角线上。K=0 对应主对角线,k0对应主对角线以上,k0对应主对角线以上,k0对应主对角线以上,k catCAT arguments dimensions are not consistent.5、permute函数改变维的次序。h=permute(u,3,2,1) %将原来的第三维变为第一维,而原来的第一维改成第三维h(:,:,1) =1 25 6h(:,:,2) =3 47 8h(:)ans =15263748我们注意到数据的物理存储次序发生了变化。6、ipermute函数是permute的逆运算,其实只不过是的书写和阅读比

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1