我有一个包含4列的excel文件。第一列是基于秒的时间,其他三列是我的功能。如何在时间列中找到特定值的时间?让我举个例子:
假设我想在第二列中找到这个值的位置:0.7636位于时间列?我手动找到它,位于6960-7020 enter link description here之间。
所以,如果我有几个值,并且还考虑了不同的功能,那么很难手动完成。
我希望听到你们的支持。 谢谢Sepideh
答案 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]
。