首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在matlab中从两列相依的列中查找取值范围

在matlab中从两列相依的列中查找取值范围
EN

Stack Overflow用户
提问于 2015-10-26 03:22:53
回答 2查看 60关注 0票数 0

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

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

因此,如果我有几个值,并且考虑到不同的函数,那么很难手动完成。

我希望听到你的支持。谢谢赛迪德

EN

回答 2

Stack Overflow用户

发布于 2015-10-26 04:16:34

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

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

代码语言:javascript
复制
%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)

票数 0
EN

Stack Overflow用户

发布于 2015-10-27 09:45:08

您可以尝试如下操作,以查找数据在column#2中的位置:

代码语言:javascript
复制
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]

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33334025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档