如何使用find函数知道索引的值?

时间:2018-10-23 06:11:50

标签: arrays matlab matrix find indices

我有一个称为datos1的4096x2矩阵。我正在尝试从[valor_maximo, canal_maximo]=max(datos1(:,2));的最大值绘制到

的给定百分比(最大值的5%)
conteomin=ceil(valor_maximo*0.05);
[canal_minimo, valor_minimo]=find(datos1(:,2) == conteomin);

我的问题是,既然两种情况下都有索引,如何知道find函数中的值?

目前,[canal_minimo, valor_minimo]=...返回canal_minimo的值,但对于valor_minimo仅返回每一行的入射数,而不返回矩阵中的实际值;即canal_minimo=3558 valor_minimo=1,而不是等于conteomin

fileID=fopen(uigetfile('*.txt', 'Seleccione el archivo'));
[archivo,~,~,~]=fopen(fileID(1));
datos1=dlmread(archivo,' ',10,0);
fclose(fileID);
set(handles.uitable1,'Data',datos1);

[valor_maximo, canal_maximo]=max(datos1(:,2));
conteomin=ceil(valor_maximo*0.05);
[canal_minimo, valor_minimo]=find(datos1(:,2) == conteomin);

1 个答案:

答案 0 :(得分:3)

[row,col]=find(LogicalExpression)给出附着在LogicalExpression上的每个元素的行/列索引。因此,在您的情况下:datos1第二列的元素等于标量值conteomin的任何地方都将注册为true,而canal_minimo将具有行号; valor_minimo很明显是一个,因为它是列向量的列号,当然在第1天就清除了。 [row,col,val]=find()在第三个输出中给出值,但是您不需要这样做,因为您要与一个硬数字进行比较(这对@CrisLuengo said来说是个坏主意)。这是因为val等于conteomin,因为您要的是 。 (在这种情况下)显式输出它毫无用处。