使用 find 命令时返回 Scilab 不正确的索引

Scilab incorrect indices returned when using find command

我对 Scilab 比较陌生,我想在我的矩阵中找到一个数字的索引。

我已将我的数字定义为最大变形 (MaxEYY) 并且在显示时它是正确的(我可以仔细检查我的 *.csv 文件)。但是,当我想使用 find 命令确切知道这个数字在我的矩阵中的位置时,只返回 (1,1),但我知道这个数字位于 (4,8) .

我的矩阵不是很大 (4x18),我知道这个数字只出现一次。打开 *.csv 文件时,我删除了 headers 因此没有文本。

谁能帮我解决这个问题?

N=csvRead("file.csv",",",".",[],[],[],[],1)
EYY=N(:,8);
MaxEYY=max(EYY);
MinEYY=min(EYY);
[a,b]=find(MaxEYY);
disp([a,b]);

首先,您需要了解 find() 的工作原理:它在矩阵中查找真值或假值。所以如果你想在其中找到某个值,你应该做 find(value == matrix).

然后,请注意,在您的代码中,您正在将 find() 应用于 MaxEYY,这是一个单一值,即标量,一个 1×1 矩阵。当你这样做时,你只能得到 (1,1) 或 [] 作为结果。

现在,结合这两个信息,这是您应该做的:

[a, b] = find(EYY == MaxEYY);

此外,还有一个更快的方法来获取这个索引:max() 也可以 return 最大值的索引,方法是

[MaxEYY, inds] = max(EYY);

min()也是如此。