在matlab中查找函数的意外结果

时间:2012-11-21 22:43:20

标签: function matlab find

t=find(str.tubetime >= str.time,1);

假设tubetime是1 x 1001个元素的矩阵 假设时间是双倍= 0.0012

根据我对代码的理解,它找到了tubetime矩阵的第一个值 等于或大于等于返回在tubetime中找到该值的位置的索引。

如果我是正确的,为什么我的索引值为244.当从231开始到索引点250的索引点包含0.0012的值。

修改

我刚刚检查过我的变量是否准确,因为我目前处于调试模式,并从系统中读取它。谢谢你的意见,你知道它有什么问题吗?

以下是显示值

的屏幕截图

screenshot

3 个答案:

答案 0 :(得分:2)

当您在printscreen中查看值时,它可能会在小数点后4位后切断。在原始帖子上查看我上面的评论。

答案 1 :(得分:0)

您对FIND的描述是正确的,但您的一个变量并不像您所描述的那样。例如,

t=find([1 1 2 3 4 5 6] >= 3,1)

应该返回4。

答案 2 :(得分:0)

您已经明确要求它只返回语法中的一个元素

time = zeros(1,1001);
time(231:250) = 0.0012 % setting an array where indices 231 - 250 are 0.0012 else is zero
find(time>=0.0012)
% gives all indices
find(time>=0.0012,1)
%returns 231 only
find(time>=0.0012,2)
%returns 231,232

PLUS检查值是否以短格式显示,即它们是0.001199但显示为0.0012。