MATLAB矩阵操作:查找第n个元素的下标方法

1 引言

有时候会需要查找矩阵中某个元素的下标,很多人会第一时间想到find函数,但是find函数在使用的时候会存在一定缺陷。当然利用MATLAB矩阵元素的排列规则也是能够计算出行列数的,但是一旦变成三维矩阵,又需要重新写几行代码来适应三维矩阵的存储结构。因此这里介绍一个小技巧,能准确查找矩阵中第n个元素的下标。

2通常方法的不足

以MATLAB中实例为例子

假如我们需要查找X中的第5个元素存在的下面,通常情况大家可能会用以下方法:

(1)find(X==X(5))

但是显然对于此案例不行,因为有多个值与X(5)相等。

(2)find(X,5)

此方法同样不行,因为这样只是找到前五个非0元素的下标,一旦矩阵中有0,那么这个方法也不适用。

(3)raw, mod(5,size(X,1)); col=ceil(5/size(X,1))]

利用矩阵元素排列顺序的特性求出行列号,若要求第5个元素的行列号,需要除以X的行数并取余数。这个方法是比较可行的,但是对于三维矩阵来说,该代码就不适用了,需要重新写。

(4)最简单的方法?

Z=zeros(size(X));

Z(5)=1;[raw col]=find(Z==1);

生成一个与X完全一样的0矩阵,并对第5个元素赋值为1,这样就确保这个元素是独一无二的,再用find函数就完全可以避免方法(1)、(2)中的问题了。该方法同样适用于三维矩阵。

3讨论

MATLAB或许应该有这样一个可以帮助直接查找矩阵中第n个元素的下标的函数(但是我确实不知道,ind2sub),但是似乎简单的find函数并不能直接达到这个效果。如果有了解相关函数的同学们也可以分享一下。

本文重点还是分享一种求解思路,有点类似于小学奥数中没有计算器的情况下做一些快速的运算。也许以后经常会碰到这种函数没法满足自己需要的情况,这时候稍微变通的一种求解思路可以帮助简化代码以及计算方式。

相关推荐
技术文档
软件下载
QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空