Matlab-矩阵的索引

原创 2017年01月03日 12:45:15
%% 矩阵的索引
%% 1.Accessing Single Elements (单个数据的索引)
% Syntax
%  A(row, column)
% Example
 A(4, 2)
%% 2.Linear Indexing (线性索引)采用单个角标的方式索引
% matlab 矩阵的实际存储方式
% MATLAB stores matrices and arrays not in the shape that they appear when displayed in the MATLAB Command Window, but as a single column of elements
% matlab 储存矩阵不是像我们看到的那样行列(二维),而是以列储存的
% So, matrix A
% 
% A = [2 6 9; 4 2 8; 3 5 1]
% A =
%      2     6     9
%      4     2     8
%      3     5     1
% is actually stored in memory as the sequence
% 
% 2, 4, 3, 6, 2, 5, 9, 8, 1
% 行列双角标索引与单角标的关系
% A has size [d1 d2]
%  If you supply two subscripts (i, j) representing row-column indices
% A((j-1) * d1 + i) 与 A(i, j) 等价
%% 3.Functions That Control Indexing Style (控制索引方式的函数)
% sub2ind 实现 行列->单角标 的转化
% ind2sub 实现 单角标->行列 的转化
%% 4.Accessing Multiple Elements (索引多个数据)
% Consecutive Elements
A = magic(4);
A(1:3, 2) % 1-3行/2列
% Nonconsecutive Elements
A(1:3:16)
% nonvector (依然按单角标的索引,将 C 中的每一个数据换成 A(C))
C = [1 3 6; 7 9 10];
A(C)
% end 的使用
A(1:3:end) = -10
% Specifying All Elements of a Row or Column (索引全部的行或列)
A(:, 2) % 第二列所有的元素
A(:) % A 所有的元素
%% 5. Using Logicals in Array Indexing (逻辑01在矩阵索引的运用)
% 不同于以上基于值的索引(行列的值/单角标的值->其实最后都会转化为单角标的索引)
% 这种索引是基于索引矩阵中 1 的位置索引的,索引矩阵是 1 的时候,被索引矩阵这个位置的元素才可以被索引
% A = [1 2 3; 4 5 6; 7 8 9]
% A =
%      1     2     3
%      4     5     6
%      7     8     9
% 
% B = logical([0 1 0; 1 0 1; 0 0 1]);
% B =
%      0     1     0
%      1     0     1
%      0     0     1
% 
% A(B) 
% ans =
%      4
%      2
%      6
%      9

% 这里通过 find 函数将索引矩阵 B 转化为单角标的索引
% A(B) 与 A(find(B)) 等价

% Example 1
rng(0,'twister');     % Reset the random number generator
A = rand(5);
B = A > 0.5;
A(B) = 0
% A(A > 0.5) = 0

% Example 2 :索引矩阵不与被索引矩阵一样大
A = [1 2 3;4 5 6;7 8 9]
B = logical([0 1 0; 1 0 1])
A(B) 
% 可以理解为: 使用 find 将 B 转化为单角标然后进行索引
% 或理解为: 将 B 补齐
% MATLAB treats the missing elements of the indexing array as if they were present and set to zero, as in array C below
% Add zeros to indexing array C to give it the same number of 
% elements as A.
% B = logical([B(:);0;0;0]);
%% 6.Single-Colon Indexing with Different Array Types 
n = [1 2 3; 4 5 6];
c = {1 2; 3 4};
s = cell2struct(c, {'a', 'b'}, 1);  s(:,2)=s(:,1);
n(:)
c{:}
s(:).a
%% 矩阵索引的注意事项:(索引/赋值成功的标准)
% 1.利用行列索引时,不应超过矩阵的维数
% 2.向量式索引,赋值时,等号左右的元素数量相等 A(5,1:4) = B(5:8)
% 3.向量式索引,赋值时,等号左右的向量的顺序与长度匹配 
% A(1:4, 3, 3:9) = B(5:8, 1:7) 
% ignoring the one scalar subscript 3 忽略标量 3 
% 左边 1:4 对应 右边 5:8 
% 左边 3:9 对应 右边 1:7

版权声明:本文为博主原创文章,未经博主允许不得转载。

3.3矩阵下标引用

在MATLAB中,普通二维数组的数字索引分为双下标索引和单下标索引。双下标索引是通过一个二元数组对来对应元素在矩阵中的行列位置。例如A(2,3)表示矩阵A中第2行第3列的元素。但下标索引的方式采用列元...
  • MATLAB_matlab
  • MATLAB_matlab
  • 2016年11月19日 08:59
  • 4238

MATLAB中的矩阵索引

MATLAB中的矩阵索引 作者:SteveEddins and Loren Shure   译:王茂春   利用矩阵的索引取出原矩阵的子集元素是一种有效的方式。MATLAB的多种索引类型不仅...
  • u013457167
  • u013457167
  • 2016年04月18日 21:39
  • 6938

Matlab 矩阵索引

获取矩阵元素 A(row, column) 线性索引 matlab存储矩阵并非以它的形状的形式,而是一个线性元素列,将每一列连接起来。 比如 A = [2 6 9; 4 2 8; ...
  • pretend_b
  • pretend_b
  • 2010年10月26日 19:23
  • 15162

MATLAB学习笔记之-----数组、矩阵、向量索引和逻辑索引

一个矩阵或者数组作为另一个矩阵下标去选取相应的矩阵元素,称为数组索引。 例:  x=10:10:50;  y=[5 4 1 2 3];  z=x(y)  z=  50 40 10 20 30    ...
  • u011650143
  • u011650143
  • 2017年05月10日 14:27
  • 790

Matlab中对矩阵使用矩阵尺寸的索引

转自stackoverflow: Addressing Matlab matrix with Index-matrix涉及bsxfun的使用。Addressing Matlab matrix with...
  • stereohomology
  • stereohomology
  • 2016年03月21日 16:04
  • 501

MATLAB中的逻辑索引与数组索引

常见矩阵元素索引方法矩阵作为MATLAB中的基本单位,灵活地实现对其元素的索引是有效处理矩阵的必要基础。显然地,MATLAB也的确提供了很多的矩阵元素索引方法12。常见的矩阵元素索引方法分别如下所示:...
  • Scut_Aspen
  • Scut_Aspen
  • 2015年12月11日 18:24
  • 4862

Matlab-结构体数组的索引

%% 结构体数组的索引 (Structure Array)% 注意:结构体的创建 与 矩阵/元胞数组 不同,元胞数组以元胞的方式进行储存,而结构体是以 fields 储存的(而不是以对象个数储存的) ...
  • superjunenaruto
  • superjunenaruto
  • 2017年01月03日 12:53
  • 3396

MATLAB中矩阵的逻辑索引方法

MATLAB中对矩阵元素的索引,包括常用的下标法和巧妙的逻辑索引,逻辑索引是用逻辑0或1去判断对应位置的元素是否被选择,所以矩阵和逻辑阵维数必须一致; 如果你要把矩阵中满足一定条件的数赋新值,比方说,...
  • songyunli1111
  • songyunli1111
  • 2017年03月25日 14:25
  • 514

MATLAB中快速删除矩阵中满足条件的行列

设有矩阵 A = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7] 即: (1)删除矩阵A第二列大于2且小于4的元素所在的行(即,删除矩阵A的第二行) i...
  • XX_123_1_RJ
  • XX_123_1_RJ
  • 2016年04月01日 17:38
  • 6938

Matrix Indexing in MATLAB(MatLab中的索引操作)

  • 2011年04月25日 12:20
  • 127KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Matlab-矩阵的索引
举报原因:
原因补充:

(最多只允许输入30个字)