MATLAB根据第1列条件维护2列

时间:2016-03-30 10:21:50

标签: matlab matrix slice matrix-indexing

我有以下数据样本

Time(s)    Speed(m/s)
1.2          7
2.5          4.2
2.6          8
3.1          12
3.6          3.2
3.9          9.1
4.3          1.6
4.6          3.8

我希望只有2-4秒的时间范围内的数据。

我可以做到这一点没问题
Extracted_Time_Data = Data_Times(Data_Times>2 & Data_Times<4);

但是我只有时间而不是伴随(在这种情况下)速度值。我知道我可以使用像

这样的东西
Extracted_Speed_Data = Data(2:5,2);

然后我可以使用它来制作矩阵

End_Goal = [Extracted_Time_Data,Extracted_Speed_Data]

然而,我已回答了我自己的问题,但如果我使用了包含数百行数据的其他数据集,该怎么办?我仍然希望数据在相同的时间范围2-4 seconds,但我希望MATLAB能够自动存储速度及其伴随时间。

我希望这个问题足够清楚,先谢谢你给予的任何帮助。

1 个答案:

答案 0 :(得分:3)

逻辑索引将会这样做。

(Data_Times(:,1)>2 & Data_Times(:,1)<4将选择行。然后,您只需使用:运算符选择所有列。

rows = Data_Times(:,1)>2 & Data_Times(:,1)<4;
Data_Times(rows,:);

Data_Times((Data_Times(:,1)>2 & Data_Times(:,1)<4),:)

ans =

2.5000    4.2000
2.6000    8.0000
3.1000   12.0000
3.6000    3.2000
3.9000    9.1000