Matlab散点图和Lowess曲线

3
我正在撰写一篇研究论文,希望能从我的数据集中绘制出类似于下面这张图的内容: enter image description here 基本上,这是一个 Matlab 散点图,其中显示了每个区间的平均值的低通滤波曲线。
我已经在 Google 上搜索了两天,但还没有找到解决方案或示例代码。
Stack Overflow 现在是我的最后一个选择 :)

1
我认为 这个 很好地实现了你当时要寻找的功能。 - Arthur
2个回答

2

这是我能想到的最简单的代码。假设您已经将数据存储在x和y向量中。

%adjust bins accordingly, or add a line that calculates them based on range.
bins = -0.5:0.01:0.5;
nBins = length(bins);

for index = 1:(nBins-1)

  binVec = (x >= bins(index) & x < bins(index+1));
  lowess(index) = mean(y(binvec));

end
%note that bins are shifted by one half step.
plot(x,y,'.',bins+0.005,lowess,'--r');

这个可以进行向量化处理,但并不值得。至少我找到的方法会使它难以阅读,并且效率可能仅有微小提升。


这个对你有用吗?如果是的话,你能否点击选择它作为答案? - dustincarr
抱歉 Dustin,我不知道为什么我的评论被打断了,我的意思是我理解你的观点,我能够修改你的代码来得出解决方案。谢谢。 - HuyNA

1

嗨John,你的解决方案很优雅,但是我发现smoothhist2D在对数刻度轴上不起作用,而这正是我的情况。不过我喜欢使用histc来计算每个bin中的值,感谢你的建议 :) - HuyNA

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接