queshangxintou 发表于 2006-8-21 00:37

用于计算数据在各个区间的频数

在处理数据的时候我们经常要算各个区间的频数,但是在matlab中没有这样的命令.当数据比较大的时候自己数就比较麻烦,这里编了个小程序,希望对大家有所帮助.(^_^)

代码如下:

function =pinshu(A)
%用于计算数据在各个区间的频数,其中数据以矩阵的格式输入
%A是要输入的矩阵
%用法:pinshu(A)---A是数据的矩阵
%输出结果分别是各个区间的频数和区间的范围
%Lzl778
%2006.7.18
Nu=numel(A);
if Nu<8
    error('数据个数太少,最小的数据个数必须>=8')
end
Min=min(min(A));
Max=max(max(A));
K=ceil(sqrt(Nu));%取K个区间
D1=floor(Min);
Dn=ceil(Max);
JJ=(Dn-D1)/K;%区间的间距
for i=1:K
    if i==1
      D(i)=D1;
      U(i)=D1;
    end
    if (U(i)<Max)
      U(i+1)=U(i)+JJ;
    end
    if i~=K
    Geshu(i)=numel(find(U(i)<=A&A<U(i+1)));
    else
    Geshu(i)=numel(find(U(i)<=A&A<=U(i+1)))
    end
   Geshu;
end
K %区间的个数
U%各个区间的范围
hist(A,K);%画数据的直方图
hold on
axis on
axis tight;%把数据范围直接设为坐标范围
title('以区间个数为数据个数的平方根的直方图');
xlabel('采样距离');
ylabel('观测数据x的值');
hold off

[ 本帖最后由 suffer 于 2006-10-9 20:40 编辑 ]
页: [1]
查看完整版本: 用于计算数据在各个区间的频数