【问题标题】:How to bins values and plot如何分箱值和绘图
【发布时间】:2019-03-25 17:03:28
【问题描述】:

我有一个包含两列的数据集,第一列是持续时间(时间长度(例如 5 分钟),第二列是发射率。是否可以按照发射率根据相应的持续时间(例如 5、10、15 分钟),然后绘制条形图,y 轴为发射率,x 轴为时间?

【问题讨论】:

  • 是的,它被称为直方图。查看uk.mathworks.com/help/matlab/ref/…了解更多详情。
  • 不,我不想在 y 轴上绘制频率,我希望它是发射率。在投反对票之前,请仔细阅读问题......
  • 您是否正在寻找一个bar plot,其发射率按持续时间(水平轴上的持续时间区间)和垂直轴上的发射率进行分类?您的持续时间值是否仅限于固定箱(5、10、15)或者您是否需要通过一些预处理对它们进行分组?例如(2.4, 4.1, 5.2) --> 5(请edit澄清你的问题,这样你的澄清就不会被埋没在cmets中)
  • 是的,完全正确。他们确实需要预处理才能分组
  • 谢谢!请edit 包含这些说明的问题,这样它们就不会被埋没在 cmets 中。到目前为止,您可以使用您尝试的代码发布一个好的MCV-example 吗?还包括您的版本(例如 2017b 版)。

标签: matlab plot bar-chart


【解决方案1】:

我确信这可以在没有for 循环的情况下完成。下面的解决方案使用discretize 函数来完成分组。其他可能的方法。

% MATLAB R2017a
% Sample data
D = 20*rand(25,1);
FR = 550*rand(25,1);
D_bins = (0:5:20)';

ind = discretize(D,D_bins);                % groups data
FR_mean = zeros(length(D_bins),1);
for k = 1:length(D_bins)
    FR_mean(k) = mean(FR(ind==k));
end

bar(D_bins,FR_mean)                        % bar plot


% Cosmetics
xlabel('Duration (min)')
ylabel('Mean Firing Rate (unit)')

我很肯定有一种更有效的方法可以为每个组获取方法,可能使用arrayfun 或其他一些漂亮的函数,但会推迟到 OP 提供更多详细信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-16
    • 1970-01-01
    • 1970-01-01
    • 2021-04-08
    • 1970-01-01
    • 2023-03-12
    相关资源
    最近更新 更多