Matlab关于find()函数的心得,查找三维数组 |
您所在的位置:网站首页 › matlab查找大于某个数的值 › Matlab关于find()函数的心得,查找三维数组 |
find函数语法如下,我们着重讨论下返回值的问题,并对二维以上数组进行查找 1.k = find(X) 2.k = find(X,n) 3.k = find(X,n,direction) 4.[row,col] = find(___) 5.[row,col,v] = find(___)
一、前三个语法返回的是一个线性索引k,如果x是多维数组,则按照第一维,第二维,第三维的顺序遍历(三维以上以此类推)。 例如2x2x2的三维数组,第一维我们称之为行,第二维为列,第三维为页。则第一行第一列第一页为1,第一行第二列第一页为3,第一行第一列第二页为5。
例子:X为m*n*z=2*4*2的数组(假设a为非零元素) val(:,:,1) = 1 0 0 1 1 1 0 1 val(:,:,2) = 0 2 0 2 0 2 2 2
k=find(a)=[1 2 4 7 8 11 12 14 15 16] fix((k-1)/(m*n))+1则得到页索引 fix(rem(k-1),(m*n))/m)+1便得到列索引 rem(rem((k-1),m*n),m)+1便得到行索引
二、第4个语法返回的是行和列索引,对于三维数组,row始终是实际对应的行,col则是从第一页开始顺序遍历,例如2x2x2数组,第一行第一列第一页为[1 1],第一行第一列第二页为[1 3]。三维以上则按照第三维第四维的顺序依次遍历。 例2: 例子:X为m*n*z=2*4*2的数组,元素值: val(:,:,1) = 1 0 0 1 1 1 0 1 val(:,:,2) = 0 2 0 2 0 2 2 2
[row col]=find(a) row=[ 1 2 2 1 2 1 2 2 1 2] col=[ 1 1 2 4 4 6 6 7 8 8] fix((col-1)/n)+1便为页索引 rem((col-1),n)+1便为列索引 三、第5个语法在前面的基础多了个v,返回对应的索引的数值
--------------------------------------------------------------------------------------------------------------------------------- ps:最近在做图像处理方面涉及到多维数组,对最近的使用做个总结。matlab的这个处理机制可能由于多维数组在内存里的存储机制有关,所以遍历的时候都是按照第一维第二维....的顺序依次进行。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |