最近的一个作业要有这个输出计算,直接拿来用的函数没怎么找到,合计着就编一个吧,没多少时间仔细编,但能用。
程序支持:Matlab2019b,以往的版本应该也能用。
function [d,zb1,ps] = pinshutongji(a,b)
% a:输入的矩阵
% b:要分成的组别,默认为10
% 输出为:d(组别zb 频数ps 累积lj(%)) zb1(组别数值矩阵double) ps(频数数值矩阵double)
% 效果为:
% " 组别 " " 频数" "累积(%)"
% "-0.0040612 0.0032426" "44" "91.6667"
% " 0.0032426 0.010546" "3" "97.9167"
% " 0.010546 0.01785" "1" "100"
if nargin==1
b = 10;
end
ps = zeros(b,1);lj = zeros(b,1);
zb = (min(a):(max(a)-min(a))/b:max(a));zb = zb'; % 建立组别
for i = 1:1:length(a) % 计算频数
temp = a(i);
for j = 2:1:b+1
if temp<=zb(j,1)
ps(j-1) = ps(j-1)+1;
end
end
end
asum = length(a);
for i = 1:1:b % 计算累积
lj(i) = (ps(i,1)/asum)*100;
end
c = [" 组别 "," 频数","累积(%)"];
zb1 = [zb(1:end-1,1),zb(2:end,1)];
zb2 = num2str(zb1); zb2 = cellstr(zb2);
ps = [ps(1,1);ps(2:end,1)-ps(1:end-1,1)];
ps1 = num2cell(ps); lj = num2cell(lj);
d = [c;zb2,ps1,lj];
end
