当另一列中的值等于特定数字时如何在一列中绘制数值
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;
然后您需要使用此 0
和 1
数组作为行索引。这将仅获取第 9 列等于 4 的行。这称为 logical indexing。
E(bool, 10)
然后你可以绘制这个
plot(t(bool), E(bool, 10))
正如指出的那样,由于浮点表示,这些值可能 不完全 到 4。为了解决这个问题,您只想检查它们是否 "close enough" 使用非常小的 epsilon。
bool = abs(E(:,9) - 4) < 1e-12;
当另一列(假设第 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;
然后您需要使用此 0
和 1
数组作为行索引。这将仅获取第 9 列等于 4 的行。这称为 logical indexing。
E(bool, 10)
然后你可以绘制这个
plot(t(bool), E(bool, 10))
正如指出的那样,由于浮点表示,这些值可能 不完全 到 4。为了解决这个问题,您只想检查它们是否 "close enough" 使用非常小的 epsilon。
bool = abs(E(:,9) - 4) < 1e-12;