【问题标题】:How to plot numeric values in a column when values in another column are equal to specific number当另一列中的值等于特定数字时如何在列中绘制数值
【发布时间】:2016-06-17 20:26:41
【问题描述】:

当另一列(比方说第 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')

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

【问题讨论】:

标签: matlab matlab-figure


【解决方案1】:

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

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

然后你会想要使用这个01 数组作为行索引。这将只抓取第 9 列等于 4 的行。这称为logical indexing

E(bool, 10)

然后你可以绘制这个

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

正如所指出的,由于浮点表示,这些值可能不是完全到 4。为了解决这个问题,您只需使用非常小的 epsilon 来检查它们是否“足够接近”。

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

【讨论】:

  • 我认为 OP 想在 E(:,9)==4 上建立索引
  • @BillBokeey 谢谢。显然,我还在喝第一杯咖啡。
  • 这正是我想要做的。几天来我一直在尝试解决这个问题,但我没有意识到我需要研究逻辑索引。非常感谢,你让我很开心。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-14
  • 1970-01-01
  • 2020-07-31
  • 1970-01-01
  • 2021-08-26
相关资源
最近更新 更多