MATLAB中的概率密度函数的3D图表

5
我想创建变量概率密度函数的三维图。我有一个矩阵,大小为189x10000,其中行对应于时间,列是模拟结果。有人可以帮助我创建一个随时间变化的密度图吗?我希望我的图像如下所示: enter image description here
    A = [1:185]';  % substitute for date vector
    K = linspace( -20, 20, 100);
    f = zeros(185,100);
    xi = zeros(185,100);
    r = normrnd(0,1,[185,10000]);
     for i=1:185

        [f(i,:),xi(i,:)] = ksdensity(r(I,:));

     end
    a = figure;
    meshc(A, K', f')
    datetick('x', 'yyyy')
    view(85, 50)
    set(gca, 'YLim', [-15, 10])
    set(gca, 'XLim', [A(1), A(end)])
    xlabel('Time')

使用以下代码可以得到下面的效果:

enter image description here


我的Y_pred的每一行都遵循不同时间段的不同分布,我想通过3D图表展示密度的演变。主要问题是当我这样绘制时,无法得到密度,而是以3D形式均匀散布的点。 - user13201583
使用随机数据,你会得到随机分布。那个图中有什么问题呢?如前所述,看起来你实际上想要一个带有底部轮廓的“waterfall()”,而不是同时执行两者的“meshc”,但它沿y轴将不同的分布拼接在一起。 - Adriaan
我的错,我没有画密度图,只是随机数。我已经解决了,但是我仍然得到这个看起来很奇怪的图形,它不像第一个那样“精细”,我认为问题在于我选择用于ksdensity的网格点数太多了,我不确定该如何解决。 - user13201583
这个图看起来还不错。如果你想要更细的网格,也就是更多的点,那么就使用更多的点。你的实际数据有10倍的数量,对吧?否则这已经是最好的了;“改进”你的图表,比如平滑你的数据或其他操作,更像是数据处理而不是科学。 - Adriaan
1个回答

1
  1. 用密度分布替换随机数。

  2. 如果您想要更细的网格,则需要使用更多的点。您的实际数据有10倍,对吗?否则,这就是最好的结果;“改进”您的图表,例如平滑您的数据,比科学更像是数据篡改。

Adriaan提供的解决方案。


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