MATLAB矩阵索引 2
来源:互联网 发布:压缩包for mac 编辑:程序博客网 时间:2024/04/30 17:00
使用矩阵的逻辑索引 A = [1 2 3; 4 5 6; 7 8 9] 例1 A(~B) = 0; % 逻辑索引 A = [1 2 3;4 5 6;7 8 9] 单冒号索引 n(:) c{:} s(:).a 按索引来指定值 length:获取最长一维的长度; ndimas:返回这是几维矩阵; numel:返回元素个数; size:返回矩阵每一维的长度; 示例: 先构造一个示例矩阵: rand('state', 0); % 初始化随即数生成器 A = rand(5) * 10; A(4:5, :) = [] A = 9.5013 7.6210 6.1543 4.0571 0.5789 2.3114 4.5647 7.9194 9.3547 3.5287 6.0684 0.1850 9.2181 9.1690 8.1317 使用numel例,求矩阵均值 sum(A(:))/numel(A) ans = 5.8909 使用ndims,size例,找出大于5小于7的矩阵元素 if ndims(A) ~= 2 return end [rows cols] = size(A); for m = 1:rows for n = 1:cols x = A(m, n); if x >= 5 && x <= 7 disp(sprintf('A(%d, %d) = %5.2f', m, n, A(m,n))) end end end 结果为: A(1, 3) = 6.15 A(3, 1) = 6.07 2 获取矩阵元素的数据类型 isa:判断是否是所指定的类型; iscell/iscellstr/ischar/isfloat/isinteger/isslogical/isnumeric/isreal/isstruct 示例: A = [5+7i 8/7 4.23 39j pi 9-2i]; for m = 1:numel(A) if isnumeric(A(m)) && isreal(A(m)) disp(A(m)) end end 结果为: 1.1429 4.2300 3.1416 3 判断是否是特定的结构类型 isempty isscalar:是否是个标量 issparse:是否是稀疏矩阵 isvector:是否是向量
在选出A矩阵中与B矩阵内非零值位置相同的元素,为一列向量。所以不是根据值来的,而是根据位置来的。B是一个矩阵由逻辑0和1组成。即B中为非零的位置,就是要选出的A元素位置。
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中非零元素的索引,
find(B)
ans =
2
4
8
9
所以也就是选出A中序号为2 4 8 9的元素,组成列向量。
rand('twister', 5489);
B = A > 0.5;
A(B) = 0
A =
0 0.0975 0.1576 0.1419 0
0 0.2785 0 0.4218 0.0357
0.1270 0 0 0 0
0 0 0.4854 0 0
0 0 0 0 0
例2
B = isprime(A) %素数
A = magic(4)
A =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
B =
0 1 1 1
1 1 0 0
0 1 0 0
0 0 0 0
A
A =
0 2 3 13
5 11 0 0
0 7 0 0
0 0 0 0
find(B)
ans =
2
5
6
7
9
13
*使用较小的矩阵作为索引矩阵
大多数情况下,逻辑索引矩阵与对象矩阵大小相同,但索引矩阵也可以小于对象矩阵(不能大于)。
B = logical([0 1 0; 1 0 1])
A =
1 2 3
4 5 6
7 8 9
B =
0 1 0
1 0 1
isequal(numel(A), numel(B))
ans =
0
A(B)
ans =
4
7
8
MATLAB将索引矩阵中缺少的部分视为0。
以上相当于:
isequal(numel(A), numel(C))
C = logical([B(:);0;0;0]);
ans =
1
A(C)
ans =
4
7
8
n = [1 2 3; 4 5 6];
c = {1 2; 3 4};
s = cell2struct(c, {'a', 'b'}, 1); s(:,2)=s(:,1);
%cell2struct,将c编入结构中,成员变量为a,b,变量值为c,1为个体排列维数。
对每个使用单冒号索引:
ans = ans = ans =
1 1 1
4 ans = ans =
2 3 2
5 ans = ans =
3 2 1
6 ans = ans =
4 2
当将一个矩阵的值指定给另一个矩阵时,可以使用任意一种索引方法。
A(J,K,...) = B(M,N,...) JKMN必须是标量,向量或者矩阵。
A中指定元素个数应该与B中指定元素个数相等。Matlab 获取矩阵的信息
- MATLAB矩阵索引 2
- Matlab 矩阵索引
- MATLAB中的矩阵索引
- Matlab-矩阵的索引
- matlab遇到问题-矩阵索引值超维问题
- matlab根据行列索引矩阵寻找元素
- MATLAB中矩阵的逻辑索引方法
- Matlab中对矩阵使用矩阵尺寸的索引
- 问题记录:matlab三维重建“索引超出矩阵维度。”
- Matlab中的矩阵用法2
- MATLAB学习笔记之-----数组、矩阵、向量索引和逻辑索引
- MATLAB矩阵
- Matlab 矩阵
- matlab矩阵
- matlab矩阵
- matlab 矩阵
- MATLAB程序设计教程(2)——MATLAB矩阵及其运算
- Matlab学习笔记(2)矩阵与魔方
- 本土IC首次打入Apple供应链
- Android FrameLayout OnGestureListener手势操作
- Matlab 矩阵索引
- 黛玉传与红楼梦
- 如何在快速启动栏上添加东西?
- MATLAB矩阵索引 2
- Matlab 重塑和扩展矩阵
- 细说 BitmapData
- Out of memory问题总结
- 大音希声
- fedora 8安装kde
- QT中.pro文件的写法
- Windows的SEH机理简要介绍
- 出售弹弹堂2.3Flash网页游戏通讯协议