⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dat2cdf

📁 跑leach需要的
💻
字号:
#!/usr/bin/perl -w## Copyright (C) 2001 by USC/ISI# All rights reserved.## Redistribution and use in source and binary forms are permitted# provided that the above copyright notice and this paragraph are# duplicated in all such forms and that any documentation, advertising# materials, and other materials related to such distribution and use# acknowledge that the software was developed by the University of# Southern California, Information Sciences Institute.  The name of the# University may not be used to endorse or promote products derived from# this software without specific prior written permission.## THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.## An perl script that transforms a data file (one-column format) into# a ns-style CDF file, used by SAMAN ModelGen## This work is supported by DARPA through SAMAN Project# (http://www.isi.edu/saman/), administered by the Space and Naval# Warfare System Center San Diego under Contract No. N66001-00-C-8066sub usage {        print STDERR <<END;      usage: $0 [-e FirstEpoch] [-i Increment] [-d Dividend] [-t DataFile]        Options:            -e string  specify the starting epoch            -i string  size of each bin            -d string  scaling factor of each epoch            -t string  filename of dataEND        exit 1;}BEGIN {        $dblibdir = "./";        push(@INC, $dblibdir);}use DbGetopt;require "dblib.pl";my(@orig_argv) = @ARGV;&usage if ($#ARGV < 0);my($prog) = &progname;my($dbopts) = new DbGetopt("e:i:d:t:?", \@ARGV);my($ch);                                                                       while ($dbopts->getopt) {        $ch = $dbopts->opt;        if ($ch eq 'e') {                $epoch = $dbopts->optarg;        } elsif ($ch eq 'i') {                 $incr = $dbopts->optarg;        } elsif ($ch eq 'd') {                 $dividend = $dbopts->optarg;        } elsif ($ch eq 't') {                 $tfile = $dbopts->optarg;	} else {                &usage;        };};                          &outputCDF($epoch,$incr,$dividend,$tfile);sub numerically { $a <=> $b; }sub outputCDF {	local($cur_epoch,$incr,$dividend,$tfile) = @_;	local(@data);	local(@dataS);	local(@epoch);	local(@cum);	open(ORIG,$tfile) || die("cannot open $tfile.\n");	$tfileS = join('.',$tfile,"cdf");	$newtfile = join(' ',">",$tfileS);	open(CDF,$newtfile) || die("cannot open $newtfile.\n");	$count = 0;	$cur_time = 0;	$i = 0;	while ($line = <ORIG>) {		chop $line;		$data[$i] = $line;		$i++;	}	close(ORIG);	if ($i eq 0) { exit; }	@dataS = sort numerically @data;	$i = 0;	$sum = 0;	foreach $j (0 .. $#dataS) {		$cur_time = $dataS[$j];		if ($cur_time > $cur_epoch) {        		while ($cur_epoch < $cur_time) {     				$epoch[$i] = $cur_epoch;     				$sum = $sum + $count;     				$cum[$i] = $sum;     				$i++;     				$cur_epoch = $cur_epoch + $incr;     				$count=0;   			}   			if ($cur_time <= $cur_epoch) {      				$count = 1;   			} else {      				$count = 0;   			}		} else {   			$count++;		}	}	$epoch[$i] = $cur_epoch;	$sum = $sum + $count;	$cum[$i] = $sum;	$oldcum = 0;	foreach $j (0 .. $#epoch) {		$prob = $cum[$j]/$cum[$#cum];		$e = $epoch[$j]/$dividend;		if ($cum[$j] ne $oldcum) {			print CDF "$e $cum[$j] $prob\n";		}  		$oldcum = $cum[$j];	}	close(CDF);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -