当前位置:文档之家› MATLAB之数组索引3

MATLAB之数组索引3

MATLAB之数组索引3
MATLAB之数组索引3

MATLAB? 中的每个变量都是一个可包含许多数字的数组。如果要访问数组的选定元素,请使用索引。

以4×4 幻方矩阵A为例:

A = magic(4)

A =

16 2 3 13

5 11 10 8

9 7 6 12

4 14 1

5 1

引用数组中的特定元素有两种方法。最常见的方法是指定行和列下标,例如

A(4,2)

ans =

14

另一种方法不太常用,但有时非常有用,即使用单一下标按顺序向下遍历每一列:

A(8)

ans =

14

使用单一下标引用数组中特定元素的方法称为线性索引。

如果尝试在赋值语句右侧引用数组外部元素,MATLAB 会引发错误。

test = A(4,5)

Index exceeds matrix dimensions.

不过,您可以在赋值语句左侧指定当前维外部的元素。数组大小会增大以便容纳新元素。A(4,5) = 17

A =

16 2 3 13 0

5 11 10 8 0

9 7 6 12 0

4 14 1

5 1 17

要引用多个数组元素,请使用冒号运算符,这使您可以指定一个格式为start:end的范围。例如,列出A前三行及第二列中的元素:

A(1:3,2)

ans =

2

11

7

单独的冒号(没有起始值或结束值)指定该维中的所有元素。例如,选择A第三行中的所有列:

A(3,:)

ans =

9 7 6 12 0

此外,冒号运算符还允许您使用较通用的格式start:step:end创建等距向量值。

B = 0:10:100

B =

0 10 20 30 40 50 60 70 80 90 100 如果省略中间的步骤(如start:end中),MATLAB 会使用默认步长值1。

VC++中如何调用matlab函数

Visual C++是当前主流的应用程序开发环境之一,开发环境强大,开发的程序执行速度快。但在科学计算方面函数库显得不够丰富、读取、显示数据图形不方便。Matlab是一款将数值分析、矩阵计算、信号处理和图形显示结合在一起,包含大量高度集成的函数可供调用,适合科学研究、工程设计等众多学科领域使用的一种简洁、高效的编程工具。不过由于Matlab使用的是解释性语言,大大限制了它的执行速度和应用场合。基于VC和Matlab混合编程是很多熟悉VC++编程而又需要进行科学计算、数据仿真的科研人员常用的一种方式,其中最简单也最直接的方法就是调用Matlab引擎。本文以下部分将详细介绍通过VC++6.0调用Matlab6.5引擎来达到VC++与Matlab数据共享编程的方法。 1. 什么是Matlab引擎 所谓Matlab引擎(engine),是指一组Matlab提供的接口函数,支持C/C++、Fortran等语言,通过这些接口函数,用户可以在其它编程环境中实现对Matlab 的控制。可以主要功能有: ★打开/关闭一个Matlab对话; ★向Matlab环境发送命令字符串; ★从Matlab环境中读取数据; ★向Matlab环境中写入数据。 与其它各种接口相比,引擎所提供的Matlab功能支持是最全面的。通过引擎方式,应用程序会打开一个新的Matlab进程,可以控制它完成任何计算和绘图操作。对所有的数据结构提供100%的支持。同时,引擎方式打开的Matlab 进程会在任务栏显示自己的图标,打开该窗口,可以观察主程序通过engine方式控制Matlab运行的流程,并可在其中输入任何Matlab命令。 实际上,通过引擎方式建立的对话,是将Matlab以ActiveX控件方式启动的。在Matlab初次安装时,会自动执行一次: matlab /regserver

数组和矩阵的关系 MATLAB

数组和矩阵的关系 摘要:数组和矩阵式MATLAB中基本的数据存在形式。一方面,数组是数据结构中的概念,有利于计算机实现层次上的计算;另一方面,矩阵是线性代数中的概念,有利于数学层次上的计算。 关键词:数组,矩阵,MATLAB 我们可以确定数组与矩阵之间的关系:(1)一维数组可以表示行向量或列向量;(2)二维数组可以表示为矩阵。所以,矩阵运算可以看作是基于数组实现的高级运算。 所谓数组,就是相同数据类型的元素按一定顺序排列的集合,即把有限个类型相同的变量用一个名字命名,用编号区分每个元素的变量的集合,这个名字称为数组名,编号称为下标。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。我们必须清楚,数组是用于程序设计的数据结构中的概念,并不是数学上的概念,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来的一种形式。为了实现某种数学运算,可以使用数组来描述某种类型的变量。简而言之,数组的运算是对所有元素进行相同运算。 一,数组与矩阵的创建 直接输入法是创建数组最简单的方法。而且此方法可以自由指定元素的数值。采用基本规则是:(1)所有元素必须用方括号“[ ]”括起来;(2)元素之间必须用逗号“,”或空格“”分割;(3)每个元素可以用MATLAB表达式表示,既可以是实数,也可以是复数。通常,很多数组依赖数据最大值和最小值来产生数组的元素。区间限定法可以代替直接输入法中由用户计算元算的过程,依据指定数据的最大值last和最小值first 自动生成数组的每个元素。与一维数组相比,二维数组增加了一个维度,所以创建方法有所不同。直接输入法的使用增加了一个新规则:在方括号“[ ]”内的行与行之间必须用分号“;”分隔。区间限定法也可以直接用于二维数组的创建。 与数组的创建相似,矩阵的创建可以采用直接输入法。矩阵创建的基本规则是(1)所有元素必须用方括号“[ ]”括起来;(2)在[ ]内矩阵的行与行之间必须用分号“;”分隔;(3)元素之间必须用逗号“,”分隔;(4)每个元素可以用MATLAB表达式表示,既可以是实数,也可以是复数。 二,数组与矩阵的访问

(完整版)matlab中使用结构体汇总

matlab中使用结构体 结构(struct)数组 要在MALTAB中实现比较复杂的编程,就不能不用struct类型。而且在MATLAB中实现struct比C中更为方便。 4. 3.1 结构数组的创建 MATLAB提供了两种定义结构的方式:直接应用和使用struct函数。 1. 使用直接引用方式定义结构 与建立数值型数组一样,建立新struct对象不需要事先申明,可以直接引用,而且可以动态扩充。比如建立一个复数变量x: x.real = 0; % 创建字段名为real,并为该字段赋值为0 x.imag = 0 % 为x创建一个新的字段imag,并为该字段赋值为0 x = real: 0 imag: 0 然后可以将旗动态扩充为数组: x(2).real = 0; % 将x扩充为1×2的结构数组 x(2).imag = 0; 在任何需要的时候,也可以为数组动态扩充字段,如增加字段scale:x(1).scale = 0;

这样,所有x都增加了一个scale字段,而x(1)之外的其他变量的scale字段为空: x(1) % 查看结构数组的第一个元素的各个字段的内容 ans = real: 0 imag: 0 scale: 0 x(2) % 查看结构数组的第二个元素的各个字段的内容,注意没有赋值的字段为空 ans = real: 0 imag: 0 scale: [] 应该注意的是,x的real、imag、scale字段不一定是单个数据元素,它们可以是任意数据类型,可以是向量、数组、矩阵甚至是其他结构变量或元胞数组,而且不同字段之间其数据类型不需要相同。例如: clear x; x.real = [1 2 3 4 5]; x.imag = ones(10,10); 数组中不同元素的同一字段的数据类型也不要求一样: x(2).real = '123'; x(2).imag = rand(5,1);

Matlab使用单元数组和结构数组

Matlab使用单元数组(cell array)和结构数组(struct array) 要在MALTAB中实现比较复杂的编程,就不能不用单元数组(cell array)和结构数组(structarray)。而且在Matlab中实现struct比C中更为方便。 一. 单元数组 单元数组中的每一个元素称为单元(cell). 单元可以包含任何类型的matlab数据, 这些数据类型包括数值数组, 字符, 符号对象, 甚至其他的单元数组和结构体. 不同的单元可以包含不同的数据. 1.1单元数组创建与显示: 1、直接赋值法:按单元索引法和按内容索引法。(其实也就是将花括号放在等式的右边或是左边的区别)。注意:“按单元索引法”和“按内容索引法”是完全等效的,可以互换使用。通过下面实例,我们看到:花括号{}用于访问单元的值,而括号()用于标识单元(即:不用于访问单元的值)。具体理解{}和()区别可以在下面代码最后分别输入A{2,2}和A(2,2)。就会发现“按内容索引法{}”能显示完整的单元内容,而“按单元索引法()”有时无法显示完整的单元内容。 >> A(1,1)={[1 2 3; 4 5 6;7 8 9]}; % 按单元索引法 >> A(1,2)={2+3i}; >> A(2,1)={'A character'}; >> A(2,2)={12:-2:0}; >> A%要想详细显示A中的内容,可用指令:celldisp(A) A = [3x3 double] [2.0000 + 3.0000i] 'A character' [1x7 double] >> B{1,1}=[1 2 3;4 5 6;7 8 9]; % 按内容索引法。 >> B{1,2}=2+3i; >> B{2,1}='A character'; >> B{2,2}=12:-2:0; >>B B = [3x3 double] [2.0000 + 3.0000i] 'A character' [1x7 double] 2、利用cell函数法:即首先用cell函数生成一个空的单元数组,然后再向其中添加所需的数据。下面的代码生成一个2X3的空单元数组: >> C=cell(2,3) C = [] [] [] [] [] [] 利用cell生成空单元数组后,可以采用“按单元索引法”和“按内容索引法”对其进行赋值。在赋值时,用户一定要注意{}和()的用法。 >> C(1,1)={'This does work'} C = 'This does work' [] [] [] [] [] >> C{2,3}='This work' C = 'This does work' [] [] [] [] 'This work'

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”表示最后一列或列,“en d-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

第5章 matlab数组和数组运算(2)

1. 标准数组:全1数组,全0数组,单位矩阵,随机矩阵,对角矩阵以及元素为指定常数的数组。 2.全1数组用ones函数,全0数组用zeros函数。 对于ones和zeros函数,当只有一个输入参数时,即ones(n)或 zeros(n),Matlab就分别生成一个n×n的全1或者全0数组。当有两个输入参数时,即ones(r,c)或者zeros(r,c),Matlab就分别生成r 行c列的全1或者全0数组。要想生成一个与其他数组相同维数的全1或者全0数组,用户只要在ones或者zeros的参数中调用size函数就可以了。测试数组:ones(4),m = ones(4,8) zeros(4),zeros(3,5),size(m),zeros(size(m))。 3.单位矩阵用eye函数。该函数用与ones和zeros函数相同的语法格式来生成单位矩阵。单位矩阵或数组是具有如下取值的矩阵或数组:除 A(i,i)之外,所有其他元素都为0,其中i=min(r,c),min(r,c)是矩阵A中的行数和列数的最小数。 4.随机矩阵用rand函数。函数rand生成均匀分布的随机数组,其元素取值介于0-1之间。直接调用rand产生一个随机数,随机数组用 rand(n)。另外randn函数将生成均值为0,方差为1的正态分布矩阵。rand和randn用法和ones相同。 5.对角矩阵用diag函数。在该数组中,一个向量可以被放在与数组的主对角线平行的任何位置。验证:a = 1:5 diag(a) diag(a,1)diag(a,-2) 6.几种生成所有元素都相同的数组的方法,先令d=pi (1)d*one(3,4) slowest method (2)d+zeros(3,4) slower method (3)d(ones(3,4)) fast method (4)repmat(d,3,4) fastest method 数组的数据量较小时,4种方法都可以。随着数组维数的增大,含有标量乘法的方法d*one(3,4)就会使矩阵生成过程变慢。因为加法通常都比乘法运算速度快,较好的办法就是将用到的标量加到加到一个全0数组zeros(3,4)上。 后两种方法虽不直观,它们却是生成大数组的最快方法,因为都用到了数组索引。(3)d(ones(r,c))先生成一个r×c的全1数组,然后用这个数组来索引和复制标量d。尽管这种方法没有用到浮点运算,但生成一个全1临时数组将会占用内存,并且消耗时间,因此使得这种方法的速度变慢。 方法repmat(d,r,c)调用函数repmat,即replicate matrix(复制矩阵)的缩写。对于标量,该函数执行如下操作步骤:

matlab数组操作

1.一个三维数组由行、列和页三维组成,其中每一页包含一个由行和列构成的二维数组。 2.利用标准数组函数创建多维数组 A=zeros(4,3,2) 生成一个4行3列2页的三维全0数组,ones,rand和randn等函数有相似的用法。 3.利用直接索引方式生成多维数组 A=zeros(2,3) A(:,:,2)=ones(2,3) A(:,:,3)=4 上面的代码先生成一个二维数组作为三维数组的第一页,然后通过数组直接索引,添加第二页、第三页。 4.利用函数reshape和repmat生成多维数组 B=reshape(A,2,9) B=[A(:,:,1) A(:,:,2) A(:,:,3)] %结果与上面一样。 reshape(B,2,3,3) reshape(B,[2 3 3]) %结果与上面一样。 提示:reshape函数可以将任何维数的数组转变成其他维数的数组。 5.利用repmat函数生成多维数组 C=ones(2,3) repmat(C,[1 1 3]) % repmat写出类似reshape的repmat(C,1,1,3)将显示出错 提示:repmat是通过数组复制创建多维数组的,上面的代码即是将数组C在行维和列维分别复制一次,然后再页维复制三次得到2×3×3的三维数组。 6.利用cat函数创建多维数组 a=zeros(2); b=ones(2); c=repmat(2,2,2); D=cat(3,a,b,c)%创建三维数组 D=cat(4,a,b,c) %创建4维数组。 D(:,1,:,:) %查看第一列的数据。 size(D) %可以知道数组D的具体维数。 6.数组运算与处理 数组之间的运算要求两个数组在任何一维都必须具有相同的大小。 (1)squeeze函数用于删除多维数组中的单一维(即大小为1的那些维) E=squeeze(D) size(D) E的数据和D一样,但比D少了一维,只有2行、2列和3页。

Matlab使用单元数组和结构数组

Matlab使用字符串数组、单元数组(cell array)和结构数组(struct array) 要在MALTAB中实现比较复杂的编程,就不能不用单元数组(cell array)和结构数组(structarray)。而且在Matlab中实现struct比C中更为方便。 MATLAB字符串数组的创建与运算 字符串数组主要用于可视化编程内容,如界面设计和图形绘制。 1.字符串变量的创建 字符变量的创建方法是:在指令窗口中先把待建的字符放在“单引号对”中,再按回车键。注意,该“单引号对”必须在英文状态下输入。这“单引号对”是MATLAB用来识别字符串变量所必须的。如: >>a='This is an example.' a = This is an example. >>msg = 'You''re right!' %创建带单引号的字符串 msg = You're right! 2.字符串数组的标识 字符串变量的每个字符(英文字母、空格和标点都是平等的)占据一个元素位,在数组中元素所处的位置用自然数标识。如: >>a='This is an example.' >>b=a(1:4) % 提出一个子字符串 b = This ra=a(end:-1:1) % 字符串的倒排 ra = .elpmaxe na si sihT 又如: >>A='这是一个算例。'; >>B=size(A) % 符号数组A 的“大小” B = 1 7 >>C=A([5 6]) % 提出一个子字符串 C = 算例 3.字符串的ASCII码 字符串的存储是用ASCII码实现的。指令abs和double都可以用来获取串数组所对应的ASCII码数值数组。指令char可把ASCII码数组变为串数组。如

C++和MATLAB的相互调用及多维动态数组定义方式

转载:VC++与Matlab混合编程之引擎操作详解(1) 2009-12-18 10:51 Visual C++是当前主流的应用程序开发环境之一,开发环境强大,开发的程序执行速度快。但在科学计算方面函数库显得不够丰富、读取、显示数据图形不方便。Matlab是一款将数值分析、矩阵计算、信号处理和图形显示结合在一起,包含大量高度集成的函数可供调用,适合科学研究、工程设计等众多学科领域使用的一种简洁、高效的编程工具。不过由于Matlab使用的是解释性语言,大大限制了它的执行速度和应用场合。基于VC和Matlab混合编程是很多熟悉VC++编程而又需要进行科学计算、数据仿真的科研人员常用的一种方式,其中最简单也最直接的方法就是调用Matlab引擎。本文以下部分将详细介绍通过VC++6.0调用Matlab6.5引擎来达到VC++与Matlab数据共享编程的方法。 1. 什么是Matlab引擎 所谓Matlab引擎(engine),是指一组Matlab提供的接口函数,支持C/C++、Fortran等语言,通过这些接口函数,用户可以在其它编程环境中实现对Matlab 的控制。可以主要功能有: ★打开/关闭一个Matlab对话; ★向Matlab环境发送命令字符串; ★从Matlab环境中读取数据; ★向Matlab环境中写入数据。 与其它各种接口相比,引擎所提供的Matlab功能支持是最全面的。通过引擎方式,应用程序会打开一个新的Matlab进程,可以控制它完成任何计算和绘图操作。对所有的数据结构提供100%的支持。同时,引擎方式打开的Matlab进程会在任务栏显示自己的图标,打开该窗口,可以观察主程序通过engine方式控制Matlab运行的流程,并可在其中输入任何Matlab命令。 实际上,通过引擎方式建立的对话,是将Matlab以ActiveX控件方式启动的。在Matlab初次安装时,会自动执行一次: matlab /regserver 将自己在系统的控件库中注册。如果因为特殊原因,无法打开Matlab引擎,可以在Dos命令提示符后执行上述命令,重新注册。 2. 配置编译器 要在VC中成功编译Matlab引擎程序,必须包含引擎头文件engine.h并引入Matlab对应的库文件libmx.lib、libmat.lib、libeng.lib。具体的说,打开一个工程后,做如下设置(以VC6为例): 1) 通过菜单工程/选项,打开设置属性页,进入Directories页面,在目录下拉列表框中选择Include files,添加路径:"C:\matlab\extern\include"(假定matlab安装在C:\matlab目录)。 2) 选择Library files,添加路径:C:\matlab\extern\lib\win32\microsoft\msvc60。(vs2005的话,不加msvc60) 3) 通过菜单工程/设置,打开工程设置属性页,进入Link页面,在Object/library modules编辑框中,添加文件名libmx.lib libmat.lib libeng.lib。 以上步骤1)、2)只需设置一次,而步骤3)对每个工程都要单独设定,对于其它 C++编译器如Borland C++ builder,设置大体相同,不再赘述。

MATLAB的Cell数组操作

5.3 Cell数组的基本操作 本小节结合示例对元胞数组的一些基本操作进行介绍。【例3-26】元胞数组的合并。 >> C1 = {'Jan' 'Feb'; '10' '17'; uint16(2004) uint16(2001)}; >> C2 = {'Mar' 'Apr' 'May'; '31' '2' '10'; ... uint16(2006) uint16(2005) uint16(1994)}; >> C3 = {'Jun'; '23'; uint16(2002)}; >> C1 C1 = 'Jan' 'Feb' '10' '17' [2004] [2001] >> C2 C2 = 'Mar' 'Apr' 'May' '31' '2' '10' [2006] [2005] [1994] >> C3

C3 = 'Jun' '23' [2002] >> C4 = {C1 C2 C3} % 生成嵌套元胞数组 C4 = {3x2 cell} {3x3 cell} {3x1 cell} >> C5 = [C1 C2 C3] % 生成元胞数组 C5 = 'Jan' 'Feb' 'Mar' 'Apr' 'May' 'Jun' '10' '17' '31' '2' '10' '23' [2004] [2001] [2006] [2005] [1994] [2002] >> whos % 查看变量的结构 Name Size Bytes Class Attributes C1 3x2 696 cell C2 3x3 1042 cell C3 3x1 348 cell C4 1x3 2422 cell

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 ];

Matlab中数组元素引用

[转载]Matlab中数组元素引用 作者:MyheartVikie 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一样的数组

MATLAB之数组索引3

MATLAB? 中的每个变量都是一个可包含许多数字的数组。如果要访问数组的选定元素,请使用索引。 以4×4 幻方矩阵A为例: A = magic(4) A = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 1 5 1 引用数组中的特定元素有两种方法。最常见的方法是指定行和列下标,例如 A(4,2) ans = 14 另一种方法不太常用,但有时非常有用,即使用单一下标按顺序向下遍历每一列: A(8) ans = 14 使用单一下标引用数组中特定元素的方法称为线性索引。 如果尝试在赋值语句右侧引用数组外部元素,MATLAB 会引发错误。 test = A(4,5) Index exceeds matrix dimensions. 不过,您可以在赋值语句左侧指定当前维外部的元素。数组大小会增大以便容纳新元素。A(4,5) = 17 A = 16 2 3 13 0 5 11 10 8 0

9 7 6 12 0 4 14 1 5 1 17 要引用多个数组元素,请使用冒号运算符,这使您可以指定一个格式为start:end的范围。例如,列出A前三行及第二列中的元素: A(1:3,2) ans = 2 11 7 单独的冒号(没有起始值或结束值)指定该维中的所有元素。例如,选择A第三行中的所有列: A(3,:) ans = 9 7 6 12 0 此外,冒号运算符还允许您使用较通用的格式start:step:end创建等距向量值。 B = 0:10:100 B = 0 10 20 30 40 50 60 70 80 90 100 如果省略中间的步骤(如start:end中),MATLAB 会使用默认步长值1。

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