在matlab中从两个相关列中查找值的范围

在matlab中从两个相关列中查找值的范围,matlab,Matlab,我有一个包含4列的excel文件。第一列是基于秒的时间,其他三列是我的函数。如何在“时间”列中找到特定值的时间?让我举一个例子: 假设我想在第二列中找到该值的位置:时间列中的0.7636?我手动找到它,它位于6960-7020之间 例如,如果我有两个值,并且考虑了不同的函数,那么很难手动执行 我希望听到你的支持。 谢谢Sepideh您必须首先考虑什么是好的解决方案。让我们调用三个函数f1(t),f2(t)和f3(t)。现在您有了值v=[v1、v2、v3],您想知道最佳匹配时间值 最佳匹配时间值是

我有一个包含4列的excel文件。第一列是基于秒的时间,其他三列是我的函数。如何在“时间”列中找到特定值的时间?让我举一个例子:

假设我想在第二列中找到该值的位置:时间列中的0.7636?我手动找到它,它位于6960-7020之间

例如,如果我有两个值,并且考虑了不同的函数,那么很难手动执行

我希望听到你的支持。
谢谢Sepideh

您必须首先考虑什么是好的解决方案。让我们调用三个函数
f1(t)
f2(t)
f3(t)
。现在您有了值
v=[v1、v2、v3]
,您想知道最佳匹配时间值

最佳匹配时间值是什么?您必须找到某种距离度量,它告诉您数据匹配的程度。默认情况下,我会使用2-范数,除非您有理由使用其他东西。这将是:

%no running code, just a formula
d(t)=sqrt((f1(t)-v1)^2+(f2(t)-v2)^2+(f3(t)-v3)^2)

现在定义了d,您希望最小化它。基本上有两种方法。如果要查找数据中最近的行,请计算每行的d(t)并取最小值。另一种方法是将
f1
插值到
f3
,这样可以填补行之间的空白,然后再次搜索最小
d(t)
您可以尝试类似的方法,以查找第2列中数据的位置:

data=xlsread('Q1.xlsx');
ref=0.7636;%你的参考价值
lb=数据(:,2)ref;%找到更大的价值
下限=查找(数据(:,2)=最大值(数据(磅,2));%找到较低的值位置
上限=查找(数据(:,2)=min(数据(ub,2));%找到更有价值的位置
行=数据(排序([下限上限]),1);%在第#1列中找到位置

结果将是
row=[6960;7020]

谢谢您的回复。但是如果我只有f1(t),而不是f2和f3(t),让我们让它变得更简单。那么,如何才能找到f1(t)值的时间范围呢?然后,您将计算
abs(f1(t)-v1)
,对于匹配,它是最小的。
data            = xlsread('Q1.xlsx');
ref             = 0.7636;               % your reference value
lb              = data(:,2) <  ref;     % find lower value
ub              = data(:,2) >  ref;     % find greater value
lower_bound     = find(data(:,2)==max(data(lb,2))); % find lower value position
upper_bound     = find(data(:,2)==min(data(ub,2))); % find greater value position
row             = data(sort([lower_bound upper_bound]),1);  % find position in column#1