当另一列中的值等于特定数字时如何在一列中绘制数值

How to plot numeric values in a column when values in another column are equal to specific number

当另一列(假设第 9 列)中的数值等于特定数字时,如何获取列(假设第 10 列)中的数值并将其绘制在图表中。

例如,当第9列的值== 4时,获取第10列的对应值并绘制。我使用行索引号作为时间标记。

我正在绘制所有第 10 列以获得波形,然后我想使用第 9 列的数据向我的波形添加标记,这些标记代表在某个时间点发生的命令。

这是我的代码:

E = csvread('Experiment_at_10_45_1.csv');
[signal_rows, signal_columns] = size(E);
t=(1:signal_rows)/128; %128 samples per second

%% SNR plot for down frequency
plot(t,E(:,13),'k')

我希望我的解释是清楚的,因为我第一次尝试使用我的代码的最小工作示例。

您需要使用逻辑索引来执行此操作。您想要首先创建一个包含 0(假)和 1(真)值的数组,其中第 9 列等于您想要的值。

bool = E(:,9) == 4;

然后您需要使用此 01 数组作为行索引。这将仅获取第 9 列等于 4 的行。这称为 logical indexing

E(bool, 10)

然后你可以绘制这个

plot(t(bool), E(bool, 10))

正如指出的那样,由于浮点表示,这些值可能 不完全 到 4。为了解决这个问题,您只想检查它们是否 "close enough" 使用非常小的 epsilon。

bool = abs(E(:,9) - 4) < 1e-12;