Matlab 如何存储值和绘图

Matlab 如何存储值和绘图,matlab,plot,bar-chart,Matlab,Plot,Bar Chart,我有一个有两列的数据集,第一列是持续时间(时间长度(例如5分钟),第二列是发射率。是否可以按照相应的持续时间(例如5、10、15分钟)对发射率进行分类然后在y轴上绘制带触发频率的条形图,在x轴上绘制带时间的条形图?我确信这可以在不使用for循环的情况下完成。下面的解决方案使用离散化功能来完成分组。其他可能的方法 % MATLAB R2017a % Sample data D = 20*rand(25,1); FR = 550*rand(25,1); D_bins = (0:5:20)'; in

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

我确信这可以在不使用
for
循环的情况下完成。下面的解决方案使用
离散化
功能来完成分组。其他可能的方法

% 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提供更多的细节。是的,这叫做直方图。查看更多细节。不,我不想在y轴上绘制频率,我想它是发射率。阅读问题在你向下投票之前,你是否在寻找一个由持续时间(水平轴上的持续时间仓位)和垂直轴上的持续时间仓位组成的射击率仓位?你的持续时间值是否被限制在固定仓位(5、10、15)内?或者你是否需要通过一些预处理对它们进行分组?例如,(2.4、4.1、5.2)->5(请澄清你的问题,这样你的澄清就不会隐藏在评论中)是的,没错。它们确实需要预处理才能分组谢谢!请将问题包括在这些澄清中,这样它们就不会隐藏在评论中。到目前为止,你能用你尝试的代码发布一篇好文章吗?还包括你的版本(例如2017b版)。