在两个依赖的列中找到matlab中的值范围

时间:2015-10-25 19:22:53

标签: matlab

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

假设我想在第二列中找到这个值的位置:0.7636位于时间列?我手动找到它,位于6960-7020 enter link description here之间。

所以,如果我有几个值,并且还考虑了不同的功能,那么很难手动完成。

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

2 个答案:

答案 0 :(得分:0)

你必须首先考虑一个好的解决方案。让我们调用您的三个函数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(t)并取最小值。另一种方法是将f1插入f3,以便填补行之间的空白,然后再次搜索最小d(t)

答案 1 :(得分:0)

您可以尝试这样的方法,在第2列中找到数据的位置:

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

,结果为row = [6960;7020]