使用有效方法从数组的第二列中查找第一列的对应值? MATLAB

时间:2018-10-10 11:20:10

标签: arrays matlab comparison

我有两列的数组。

第一列是时间,第二列是速度。

我正在使用此代码从第二列中查找对应的时间值。这段代码可以正常工作,但是会使我的仿真变慢。

有人可以建议有效的方法吗?

t=T';                       % Time is in seconds
vv=vel';                    % Speed is in meter per seconds
data= [t, vv];              % both time and velocity in one array
v2 = data(dsearchn(data(:,1),t2),2); 

示例数组:

0.0  0.0
2.3  0.9
3.2  1.2
4.0  1.5
4.6  1.8
5.1  2.0
5.6  2.1
6.0  2.3
6.5  2.5
6.9  2.6
7.2  2.8
7.6  2.9
7.9  3.0
8.2  3.2
8.5  3.3
8.8  3.4
9.1  3.5
9.4  3.6
9.7  3.7
10.0 3.8
10.2 3.9
10.5 4.0
10.7 4.1
11.0 4.2
11.2 4.3

2 个答案:

答案 0 :(得分:1)

尝试类似的东西:

<div class="drop">

然后使用所需的任何值修改值5

答案 1 :(得分:1)

就像注释中所述,您需要定义如果矩阵中未包含时间“选择”(数据的第一列)的情况下想要发生的情况。

以下是一些选项示例。请注意,我根据您的样本制作了data一个nx2矩阵。

仅完全匹配::如果choice中没有data,则结果为空。

results = data(data(:,1) == choice,2)

示例用法:

>> choice = 2.3; %Time contained in data
>> results = data(data(:,1) == choice,2)
results =
    0.9000

>> choice = 2.31; %Time NOT contained in data
>> results = data(data(:,1) == choice,2)
results =
   Empty matrix: 0-by-1

最接近的匹配:返回最接近的匹配

result = data(dsearchn(data(:,1),choice),2)

示例用法:

>> choice = 2.3; %Time contained in data
>> result = data(dsearchn(data(:,1),choice),2)
result =
    0.9000

>> choice = 2.31; %Time NOT contained in data
>> result = data(dsearchn(data(:,1),choice),2)
result =
    0.9000