簡體   English   中英

從相關的兩列中找到matlab中的值范圍

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM