【问题标题】:MATLAB conditional min function ignoring the condition?MATLAB条件min函数忽略条件?
【发布时间】:2013-09-20 09:24:33
【问题描述】:

我有一个 结构 A,其中包含 字段 BC

B 的值是双倍的,可以取值 1 或 2。 C 的值是两倍,范围从 1 到大约 50。 B 和 C 具有相同数量的元素(当一个值被分配给 C 时,一个 1 或 2 被分配给 B)。

下面的代码应该找到所有 B 等于 1 的索引值,然后使用这些索引值找到 C 的最小值。

>> a=find(A(1).B(:)==1);

>> [value,index]=min(A(1).C(a))

value =   5.020000000000000
index =   630

如下所示,当我将最小值索引放回 B 时,它返回 2。

>> A(1).B(630)

ans =     2

【问题讨论】:

  • 您在A(1) 中找到最小值,但在A(2) 中查找它
  • 对不起@MohsenNosratinia 这是一个错字。它应该是 A(1).B(630)。问题仍然存在。

标签: matlab indexing find min


【解决方案1】:

问题源于向量a 的大小与原始向量A(1).B(:) 的大小不同。所以你在index中得到的值是指a而不是A(1).C(:)中的对应位置来获得正确的索引使用:

A(1).B(a(index))

【讨论】:

  • 这是有道理的。我没有意识到它必须是相同的大小。谢谢你。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-27
  • 2021-11-18
  • 1970-01-01
  • 2022-03-22
  • 2020-05-13
  • 2018-07-13
  • 2013-09-18
相关资源
最近更新 更多