Как узнать значение индексов с помощью функции find? - PullRequest
0 голосов
/ 23 октября 2018

У меня есть матрица 4096x2, которая называется datos1.Я пытаюсь построить график от максимального значения с [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 голосов
/ 23 октября 2018

[row,col]=find(LogicalExpression) дает индексы строки / столбца для каждого элемента, придерживающегося LogicalExpression.Так что в вашем случае: везде, где элемент второго столбца datos1 равен скалярному значению conteomin, он будет записан как true, а canal_minimo будет иметь номер строки;и valor_minimo, очевидно, равен единице, поскольку это номер столбца вектора столбца, понятный как первый день, конечно.[row,col,val]=find() дает значение в третьем выводе, но вам это не нужно, учитывая, что вы сравниваете его с жестким числом (что является плохой идеей, как @ CrisLuengo сказал ).Это потому, что val будет равно conteomin, , так как это то, что вы просили .Бесполезно (в данном случае) выводить его явно.

...