How to draw probability density function in MatLab?

后端 未结 4 1846
花落未央
花落未央 2021-01-03 00:13
x = [1 2 3 3 4]
cdfplot(x)

After Googling, I find the above code will draw a cumulative distribution function for me in Matlab.
Is there a simp

相关标签:
4条回答
  • 2021-01-03 00:25

    type "ksdensity" in matlab help and you will find out the function that will give you the continuous form of PDF. I guess this is exactly what you are looking for.

    0 讨论(0)
  • 2021-01-03 00:35

    If you want a continuous distribution function, try this.

    x = [1 2 3 3 4]
    subplot(2,1,1)
    ksdensity(x)
    axis([-4 8 0 0.4])
    
    subplot(2,1,2)
    cdfplot(x)
    grid off
    axis([-4 8 0 1])
    title('')
    

    Which outputs this. enter image description here

    The Cumulative Distribution Function is on the bottom, the Kernel Density Estimate on the top.

    0 讨论(0)
  • 2021-01-03 00:43

    In addition to the smooth PDF obtained by ksdensity(x), you can also plot a smooth CDF plot using ksdensity(x,'function','cdf').

    enter image description here

    0 讨论(0)
  • 2021-01-03 00:44

    You can generate a discrete probability distribution for your integers using the function hist:

    data = [1 2 3 3 4];           %# Sample data
    xRange = 0:10;                %# Range of integers to compute a probability for
    N = hist(data,xRange);        %# Bin the data
    plot(xRange,N./numel(data));  %# Plot the probabilities for each integer
    xlabel('Integer value');
    ylabel('Probability');
    

    And here's the resulting plot:

    enter image description here


    UPDATE:

    In newer versions of MATLAB the hist function is no longer recommended. Instead, you can use the histcounts function like so to produce the same figure as above:

    data = [1 2 3 3 4];
    N = histcounts(data, 'BinLimits', [0 10], 'BinMethod', 'integers', 'Normalization', 'pdf');
    plot(N);
    xlabel('Integer value');
    ylabel('Probability');
    
    0 讨论(0)
提交回复
热议问题