南卓铜 ([email protected])
任务描述: 有一批数据,需要将其histogram拟合成Gamma分布,histogram分20个bin,从0到100。结果如下图所示:
实现步骤:
1. 装载数据进来,数据文件是data.for.hist.txt,文件结构是一列无header的数据,共43个数据。
>> data=load(‘data.for.hist.txt’)
data是43×1的矢量。
2. 打开distribution fitting tool
>> dfittool
选择Display type为Density(PDF)。点击Data…,弹出Data对话框。
在此对话框内,设置Data为 ‘data’矢量,Censoring和Frequency为 none。设置data set name为dataset,然后点击 Create Data Set。
点击Set Bin Rules,设置Bin width为5。其余不变,OK确认关闭Set Bin Rules。这时,我们将data的histogram设置为每个bin长度为5。在不同的应用里,bin根据具体情况调整。关闭Data对话框。
3. Gamma拟合
点击New Fit…,在New Fit对话框里选择Data为dataset,Distribution为Gamma,点击Apply进行拟合。点击Close关闭New Fit对话框。
此时,看到下图的效果:
我们需要修改它的X域,使之匹配我们的histogram的X最大值100。点击Tools菜单下的Axes Limit Control,将X Lower Limit和X Upper Limit更改为 0和100。
4. 导出成figure
使用File菜单下的Print to Figure导出成figure。对figure进行必要修改。
>>figure(1) (注,如果已经打开多个figure窗口,导出的figure序号可能不是1而是其它数字,注意figure窗口标题上的Figure n里的n)
>>legend hide
>>xlabel ‘1/32 degree, mm/day’
>>ylabel ‘Frequency’
此时效果如下,
5. 修改figure格式
设置figure为Tools-> edit plot状态,打开View->Property Editor。
将histogram的plot type从line改成Area,配置合适的face color和edge color。
将x轴的范围X Limits设置为0 to 100。
这时,histogram压着拟合曲线,选择拟合曲线,右键Cut后,再Paste进来,可以将拟合曲线带到最上面。
6. 修改数据
注意到目前为止,Y轴仍是Density。我们需要将Y坐标修改为Frequency(或者count)。Count=Density x bin width x data count,这里bin width是5,data count是43。因此,我们需要对Ydata乘以5×43=215。
选择拟合曲线,
>>ydata=get(gco,’YData’)
>>ydata_215 = ydata*215
>>set(gco,’YDATA’,ydata_215)
选择histogram,
>>set(gco,’YDATA’,get(gco,’YDATA’)*215)
修改xlim和ylim
>>ylim([0 10])
>>xlim([0 100])
将figure还原为非编辑状态。Tools->Edit Plot,并关闭Property editor。
以上步骤中数次修改xlim和ylim,并不是每次都需要,这里仅是为了演示需要。
7. 保存图形
>>print -dpng ‘histogram_dist.png’
在figure对话框的File-> Save As…保存为MATLAB Figure(.fig),以后可以通过File->Open…打开。
结论
本文演示了如何使用Matlab对数据的histogram使用Gamma分布进行拟合。介绍了matlab的常用命令,Distribution Fitting Tool,figure的格式化编辑功能,对figure对像数据的修改等。也介绍了比如如何调整figure里对像的z-order等实用技巧。
請問你的dfittool 的m檔可以給我嗎??
拜託~
dfittool是matlab本身带的