【问题标题】:Marking and finding locations of elements of array in Matlab在 Matlab 中标记和查找数组元素的位置
【发布时间】:2014-05-20 18:34:43
【问题描述】:

我有一个值在 [0,1] 之间的矩阵。我想找到并标记那些值 0.9 的元素的位置。

所以我使用了matlab函数find;但它返回了两个向量:一个行向量和一个列向量,这很难分析。那么有没有一种方法可以在不丢失原始矩阵结构的情况下看到哪些元素的位置满足条件呢?

我使用了下面的代码行:

[r,c,v]= find(X<0.1 | X>0.9);    % X is my 512*512 matrix of values

谢谢!

【问题讨论】:

  • 您希望如何查看输出?也许在单元阵列中?只是匹配的索引?对我来说还是很模糊。
  • 具有匹配索引的单元格数组会更好。基本上,逻辑是找到匹配值的位置,然后更改这些特定位置的值以供以后分析。

标签: arrays matlab indexing find


【解决方案1】:

看看这是否适合你 -

%// cell array with each cell housing the  matching indices for each row
out = cellfun(@find,mat2cell(X<0.1 | X>0.9,ones(1,size(X,1)),size(X,2)),'uni',0) 

使用 - celldisp(out) 浏览 out 的值

【讨论】:

  • 是的......这很好......它为我提供了每行发生匹配的各个列!做得好!!谢谢@Divakar
  • @KashifNawaz 太棒了!你知道你也可以投票给答案,不仅仅是这个,还有其他对你有用的答案;)
【解决方案2】:

只要使用这样的条件:

mask = (X < 0.1 | X > 0.9)

将返回一个符合条件的逻辑数组 1。

【讨论】:

  • 哇!!这也是一个非常好的解决方案!它保留了输入矩阵的固有性质。更进一步,我认为可以使用数组索引读出逻辑 1 以进行进一步操作。谢谢@Alexandre Bizeau :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-28
  • 2015-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-17
相关资源
最近更新 更多