How to create 3D joint density plot MATLAB?

前端 未结 3 452
礼貌的吻别
礼貌的吻别 2021-01-07 13:37

I \'m having a problem with creating a joint density function from data. What I have is queue sizes from a stock as two vectors saved as:

X = [askQueueSize b         


        
3条回答
  •  孤城傲影
    2021-01-07 13:45

    I couldn't see a simple way of doing this. You can get the histogram counts back from hist3 using

    [N C] = hist3(X);
    

    and the idea would be to normalise them with:

    N = N / sum(N(:));
    

    but I can't find a nice way to plot them back to a histogram afterwards (You can use bar3(N), but I think the axes labels will need to be set manually).

    The solution I ended up with involves modifying the code of hist3. If you have access to this (edit hist3) then this may work for you, but I'm not really sure what the legal situation is (you need a licence for the statistics toolbox, if you copy hist3 and modify it yourself, this is probably not legal).

    Anyway, I found the place where the data is being prepared for a surf plot. There are 3 matrices corresponding to x, y, and z. Just before the contents of the z matrix were calculated (line 256), I inserted:

    n = n / sum(n(:));
    

    which normalises the count matrix.

    Finally once the histogram is plotted, you can set the axis limits with:

    xlim([0, 1]);
    

    if necessary.

提交回复
热议问题