![]() |
概率密度函数求解
IA是一个有28800个数值的一维矩阵,其中所包含的最大数为490,用5做为跨度,请问各位大虾,应该使用Matlab中什么函数求出他的概率密度函数曲线?
PS:关于概率密度函数曲线的一个例子如下 A=[15 3 17 18 8 30 23 30 28 29 25 26 27 5 8 4 27 13 15 20]是为一个有20个数值的一维矩阵,其中所包含的最大数为30,使用6做为跨度,那么 在0-6中有(3,5,4)一共3个数值,占总数百分比为15%; 在6-12中有(8,8)一共2个数值,占总数百分比为10%; 在12-18中有(15,17,18,13,15)一共5个数值,占总数百分比为25%; 在18-24中有(18,23,20)一共3个数值,占总数百分比为15%; 在24-30中有(30,30,28,29,25,26,27,27)一共8个数值,占总数百分比为40%。 然后画出一个图像,横坐标为0-6,6-12,12-18,18-24,24-30这些区段,纵坐标为15%,5%,25%,15%,40%这些数值 小弟联系方式[email protected],恳请各位大虾帮忙~ |
回复: 概率密度函数求解
一定要用matlab自带的函数吗?我觉得可以自己写一个啊,可以用循环逐个的去统计。
|
回复: 概率密度函数求解
不知下面程序是你所要的:
A=[15 3 17 18 8 30 23 30 28 29 25 26 27 5 8 4 27 13 15 20]; [a,b]=hist(A,3:6:27); a1=a/length(A); bar(b,a1); axis([0,30,0,.45]) set(gca,'ytick',0:.05:.5,'yticklabel','0|10%|15%|20%|25%|30%|35%|40%|45%|50%') 希望有帮助!!! |
回复: 概率密度函数求解
[QUOTE=yfl;28864]一定要用matlab自带的函数吗?我觉得可以自己写一个啊,可以用循环逐个的去统计。[/QUOTE]
之前我看到别人用hist的函数写的,感觉很方便啊~可惜就是不大会用hist,help也没看明白,期待hist的中文解释…… 不过循环的也是可以的,后来有位高手给我写了程序,得到结果了。 |
回复: 概率密度函数求解
[QUOTE=TTT_IOU;28865]不知下面程序是你所要的:
A=[15 3 17 18 8 30 23 30 28 29 25 26 27 5 8 4 27 13 15 20]; [a,b]=hist(A,3:6:27); a1=a/length(A); bar(b,a1); axis([0,30,0,.45]) set(gca,'ytick',0:.05:.5,'yticklabel','0|10%|15%|20%|25%|30%|35%|40%|45%|50%') 希望有帮助!!![/QUOTE] 可是这个程序运行出来的结果不对啊,我对Matlab不大清楚,出来的横坐标为什么是3,9,15……27呢?应该是6,12,18……30相对应的概率也不对呀~ 不过可以麻烦您解释下hist这个函数吗?最好能举点不同于hlelp文档里的例子,help文档里的hist函数说明看不懂,当初看别人做的时候也是用这个函数,一直没看明白,E文太差了+_+b |
回复: 概率密度函数求解
%先编辑函数,a为已知数组,s为待求密度分布
function s=dens(a) clc N=10; len=ceil(max(a)/N); s=zeros(1,len); for i=1:len s(i)=length(find(a>N*(i-1)&a<=N*i)); end s=s/length(a); %%%%%%%%%%%%%%%%%% 主程序调用: y=dens(a); bar(100*y);%百分率 %区间我设成10了,可以改成别的。 |
回复: 概率密度函数求解
画图函数及自变量的区间自己改吧,plot可以做曲线,想光滑话的话,可以用interp1函数:
k=ceil(max(a)/10);%要和刚才的区间长度一致 y=interp1((1:k)*10-5,s*100,1:0.02:max(a),'spline'); plot(1:0.02:max(a),y) axis([0,max(a),0,max(y)]) |
回复: 概率密度函数求解
[QUOTE=zsy312;28893]%先编辑函数,a为已知数组,s为待求密度分布
function s=dens(a) clc N=10; len=ceil(max(a)/N); s=zeros(1,len); for i=1:len s(i)=length(find(a>N*(i-1)&a<=N*i)); end s=s/length(a); %%%%%%%%%%%%%%%%%% 主程序调用: y=dens(a); bar(100*y);%百分率 %区间我设成10了,可以改成别的。[/QUOTE] 我运行了下,出现这个问题 ??? Error: File: D:\Matlab7\work\wentishiyan.m Line: 12 Column: 1 Missing variable or function. 话说小弟其实是个初学者,您所写的对我来说就是天书一般的存在啊~ 不过这个问题我已经得到答案了,就是用hist函数来写 A=[15 3 17 18 8 30 23 30 28 29 25 26 27 5 8 4 27 13 15 20]; x=3:6:27; num=hist(A,x); p=num/20; plot(x,p) 再次感谢诸位的大力帮助~ |
回复: 概率密度函数求解
改了函数的文件名就运行不了了,因为你后边要同时该命令才行。
用hist能做出来再好不过了,我也有收获。 |
所有时间均为北京时间。现在的时间是 12:55。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.