|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
在处理数据的时候我们经常要算各个区间的频数,但是在matlab中没有这样的命令.当数据比较大的时候自己数就比较麻烦,这里编了个小程序,希望对大家有所帮助.(^_^)
代码如下:
- function [B]=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
查看全部评分
-
|