【问题标题】:Matlab error using find commandMatlab使用find命令出错
【发布时间】:2017-03-19 09:39:09
【问题描述】:

我有向量[0 0 1 1 0 1 1 0 1]。我想找到 0 和 1 的索引。我曾尝试使用find 命令,但我得到:

0x1 empty double column vector

【问题讨论】:

  • 请编辑问题并添加您正在使用的确切代码,在这种情况下所需的输出是什么?你想用它做什么?

标签: matlab vector indexing position elements


【解决方案1】:

虽然aahung's answer 正确返回01 的位置,但这些索引的典型用例是从另一个数组中选择与这些位置匹配的元素。如果确实如此,则应该依赖逻辑索引而不是 find:

tfArr = [0 0 1 1 0 1 1 0 1];
data =  reshape(magic(3),1,[]); % [8,3,4,1,5,9,6,7,2]

dataWhereOnes = data(logical(tfArr))
% equivalently to the above : data(~~tfArr)
dataWhereZeros = data(~tfArr)

结果:

dataWhereOnes =
     4     1     9     6     2

dataWhereZeros =
     8     3     5     7

【讨论】:

  • 这里很容易找到位置,但是如果它是一个 1000 元素向量呢
  • 没有任何区别。
【解决方案2】:

我认为这段代码会对你有所帮助:

>> arr = [0 0 1 1 0 1 1 0 1];
>> find(arr == 0)

ans =

     1     2     5     8

>> find(arr == 1)

ans =

     3     4     6     7     9

【讨论】:

  • 我已经尝试过了,但我得到了一个有问题的错误
  • 请发布您的代码和错误,否则我们无法帮助您
猜你喜欢
  • 2012-07-03
  • 2021-06-26
  • 1970-01-01
  • 1970-01-01
  • 2012-08-20
  • 2016-01-16
  • 2012-10-28
  • 2016-11-20
  • 1970-01-01
相关资源
最近更新 更多