在 MATLAB 中绘制数据的频率分布曲线

Mehak Mubarik 2023年1月30日 2022年5月11日
  1. 在 MATLAB 中使用 sshist() 函数计算密度估计并获得我们数据的频率曲线
  2. 在 MATLAB 中使用 histfit() 函数获取我们数据的频率曲线
在 MATLAB 中绘制数据的频率分布曲线

我们将研究在 MATLAB 中绘制数据频率分布曲线的不同方法。我们将使用不同的示例代码和相关输出来清除你的概念,并使用 MATLAB 为你提供完整的见解。

请注意,MATLAB 允许用户使用不同的函数执行统计操作,例如 histfit()hist()sshist()

频率分布是一个列表/表格/图表,显示我们的数据集中某些可能性发生的频率。我们可以使用 MATLAB 绘制数据的频率分布曲线。

我们可以手动添加数据或从 Excel 工作表中导入数据。使用不同的函数,我们可以很容易地获得所需的曲线。

在 MATLAB 中使用 sshist() 函数计算密度估计并获得我们数据的频率曲线

要在 MATLAB 中绘制频率分布图形曲线,我们首先需要计算直方图的最佳箱数。

对于我们的核密度估计计算,我们将假设我们的频率分布在 MATLAB 中具有直方图的标准箱长度。

尽管如此,这种方法几乎可能是不现实的。第一种方法计算最佳 bin 宽度以产生最清晰的曲线,同时尽可能多地保留核心 PDF。

函数 sshist 不包含在 MATLAB 的标准函数列表中,但我们可以获得函数的源代码并使用它来运行我们的代码来计算 bin 的密度估计。见例子,

Our_data = randn(1,1e4);

optN = sshist(Our_data);

figure(1)
[M,C] = hist(Our_data);
[Nop,Cop] = hist(Our_data,optN);
[f,xi] = ksdensity(Our_data,Cop);

dNom = mode(diff(Center));
dNom = mode(diff(Cop));

plot(Center,N/dNom,'.-',Cop,Nop/dNom,'.-',xi,f*length(Our_data),'.-')
legend('Default','Optimum','ksdensity')
title('Frequency Distribution')

输出:

频率图 1

如上所述,首先要计算 optimal-bin。此计算背后的原因是为我们的频率分布直方图提供结构。

当我们使用 ksdensity 函数时,它返回一个平坦的曲线。因此,这取决于我们工作的性质以及根据我们的数据我们想要的输出图的类型。

请注意,我们使用了一个额外的 m 文件来成功执行此代码。函数 sshist() 未在 MATLAB 中预定义。

这就是为什么我们需要复制这个函数的源代码,创建一个 m 文件,并将复制的代码粘贴到这里。

然后执行代码得到频率分布图。m-file 源代码的链接是 sshist()

在 MATLAB 中使用 histfit() 函数获取我们数据的频率曲线

为了使用 histfit() 构建具有正态分布拟合的频率分布直方图,让我们将数据样本的大小设为 100,方差为 1,平均值为 10。

rng default;
freq_dist_data = normrnd(10,1,120,1);
histfit(freq_dist_data)

输出:

频率图 2

请注意,MATLAB 中的 histfit 函数与 fitdist 函数的工作方式类似,以将我们的频率分布拟合到我们的数据集并返回拟合中使用的所有值。

fitting_values = fitdist(freq_dist_data,'Normal')

输出:

fitting_values = 

  NormalDistribution

  Normal distribution
       mu = 10.0894   [9.88181, 10.297]
    sigma =  1.1484   [1.01919, 1.31541]
Mehak Mubarik avatar Mehak Mubarik avatar

Mehak is an electrical engineer, a technical content writer, a team collaborator and a digital marketing enthusiast. She loves sketching and playing table tennis. Nature is what attracts her the most.

LinkedIn