Matlab关于find()函数的心得,查找三维数组

您所在的位置:网站首页 matlab查找大于某个数的值 Matlab关于find()函数的心得,查找三维数组

Matlab关于find()函数的心得,查找三维数组

2023-06-29 07:46| 来源: 网络整理| 查看: 265

 

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