我有一个包含4列的excel文件。第一列是基于秒的时间,其他三列是我的函数。如何在时间列中找到特定值的时间?让我举个例子:
假设我想找出这个值在第二列中的什么位置: 0.7636在时间列中?我手动找到它,它位于6960-7020enter link description here之间。
因此,如果我有几个值,并且考虑到不同的函数,那么很难手动完成。
我希望听到你的支持。谢谢赛迪德
发布于 2015-10-26 04:16:34
你必须首先考虑什么是好的解决方案。让我们将您的三个函数称为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)
发布于 2015-10-27 09:45:08
您可以尝试如下操作,以查找数据在column#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]。
https://stackoverflow.com/questions/33334025
复制相似问题