我有一个包含两列的数据集,第一列是持续时间(时间长度(例如5分钟),第二列是点火速率)是否有可能以这样的方式将其绘制为:点火速率根据相应的持续时间(例如5、10、15分钟),然后绘制条形图,在y轴上具有点火速率,在x上具有时间?
答案 0 :(得分: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提供更多细节为止。