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