我有一个矩阵M(mx2)。第一列是我的箱子,第二列是与每个箱子相关的频率。我想在matlab中为这个直方图拟合一条平滑的曲线,但我所尝试的大多数(如kdensity)需要真正的数据分布,我没有它们。
是否有任何功能可以采取垃圾箱及其频率,并给我一个平滑的bin-freq曲线。 ?
答案 0 :(得分:0)
这是一个适合你的黑客攻击:从你的直方图中生成一个样本,然后在样本上运行ksdensity。
rng(42) % seed RNG to make reproducible
% make example histogram
N = 1e3;
bins = -5:5;
counts = round(rand(size(bins))*N);
M = [bins' counts'];
figure
hold on
bar(M(:,1), M(:,2));
% draw a sample from it
sampleCell = arrayfun( @(i) repmat(M(i,1), M(i,2), 1), 1:size(M,1), 'uniformoutput', false )';
sample = cat(1, sampleCell{:});
[f, x] = ksdensity(sample);
plot(x, f*sum(M(:,2)));