[英]find range of value in matlab from two columns which are dependent
我有一個包含4列的Excel文件。 第一列是基於秒的時間,其他三列是我的功能。 如何在時間列中找到特定值的時間? 讓我舉個例子吧:
假設我想在第二列中找到該值在哪里:0.7636位於時間列中? 我手動找到它位於6960-7020之間,在此處輸入鏈接描述 。
因此,例如,如果我有幾個值,並且考慮到不同的功能,那么很難手動進行。
我希望聽到您的支持。 感謝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; % 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]
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.