用 Matlab 计算并画出大量数据的CDF

     这篇 blog 将展示用 matlab 计算并画出大量数据的 CDF (累计分布函数)的两种方法。第一种是我自己于2012年写的,后来用的过程中发现有缺陷;后来2014年写另一篇paper时,搜寻到第二种简易又高效的方法。这里我给出它们各自的用例,包括画图用的数据与脚本,以及效果图。For your reference.

============================================================================================

     Section A. 第一种方法

     今天(2012-10-17)有一些数据需要处理,这些数据好不容易从文件中剥离了出来,然后自己写了一个function,计算并控制 plot 这些数据的 CDF 图。因为第一种方法用到的例子的数据文件太大,就没有贴上来。如果有想亲自试验一下这个过程的同学,请参照下文中第二个方法中的完整用例。

% ----------------------- 自实现 CDF 计算 function:  funcCDF.m

% para@1: CNT_pnts, the number of points to denote the CDF;
% para@2: Range_low, the lower bound of variable;
% para@3: Range_up, the upper bound of variable;
% para@4 : arr_Vals, array of the values to be processed.

function [x, CDF_Vals] = funcCDF(CNT_pnts, Range_low, Range_up, arr_Vals)
data = sort( arr_Vals' ); % T', horizon arrays of T.
N = length(data);
stepLen = (Range_up-Range_low)/CNT_pnts;
Counter = zeros(1,CNT_pnts);
for i = 1:1:N
	for j = 1:1:CNT_pnts
		if ( data(1,i) <= (Range_low + j*stepLen) )
			Counter(1,j) = Counter(1,j) + 1;
		end
	end
end
CDF = Counter(1,:)./N;
CDF_Vals = CDF(1,:)';
x = (Range_low+stepLen):stepLen:Range_up;
% ---- end of func.


% --------------------- 2 use cases:

CNT_pnts = 100;
deadline_N500r1 = 550;
deadline_N500r3 = 270;
deadline_N500r5 = 240;
PntVal_N500Tau100r1 = textread('N500Tau100r1.tr','%*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %.2f');
[x_r1,cdf_r1] = funcCDF(CNT_pnts, 0, deadline_N500r1, PntVal_N500Tau100r1);
plot(x_r1, cdf_r1, 'ob')
hold on

PntVal_N500Tau100r3 = textread('N500Tau100r3.tr','%*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %.2f');
[x_r3,cdf_r3] = funcCDF(CNT_pnts, 0, deadline_N500r3, PntVal_N500Tau100r3);
plot(x_r3, cdf_r3, 'or')
hold on

PntVal_N500Tau100r5 = textread('N500Tau100r5.tr','%*s %*s %*s %*s %*s 
  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值