【发布时间】:2019-03-27 06:55:30
【问题描述】:
我有一个名为 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);
【问题讨论】:
-
我不确定我是否理解。
find将索引返回到datos1(:,2) == conteomin的非零值。也就是说,它会找到datos1(:,2)正好等于conteomin的索引。因此,这些位置的值为conteomin。请注意,浮点值的==很危险,您的矩阵可能不包含任何具有该值的元素。 -
我明白了,主要问题在于
find函数。例如:[valor_maximo, canal_maximo] = [10000 1109][valor_minimo, canal_minimo]=[1 3000]10000 的 5% 是 500。相反,它始终显示为 1。 -
非常感谢大家,我没有意识到
find在为真时会返回1,因此该值已经存储在另一个变量中。如何分配答案以结束问题? -
我将我的 cmets 作为社区 wiki 答案发布。您可以通过单击问题左侧投票箭头下方的复选标记accept the answer。您可能有兴趣参加 tour,其中解释了 Stack Overflow 的工作原理。最后:如果您希望其他(一个)特定用户看到您的评论,请使用
@<username>通知他们;帖子所有者将始终收到通知。因此可以使用@Adriaan通知我。
标签: arrays matlab matrix find indices