resamp.c

来自「su 的源代码库」· C语言 代码 · 共 83 行

C
83
字号
/* Copyright (c) Colorado School of Mines, 2006.*//* All rights reserved.                       *//* RESAMP: $Revision: 1.8 $ ; $Date: 2003/08/19 21:24:44 $	*/#include "par.h"/*********************** self documentation **********************/char *sdoc[] = {" 									"," RESAMP - RESAMPle the 1st dimension of a 2-dimensional function f(x1,x2)"," 									"," resamp <infile >outfile [optional parameters]				"," 									"," Required Parameters:							"," 									"," Optional Parameters:							"," n1=all                 number of samples in 1st (fast) dimension	"," n2=all                 number of samples in 2nd (slow) dimension	"," d1=1.0                 sampling interval in 1st dimension		"," f1=d1                  first sample in 1st dimension			"," n1r=n1                 number of samples in 1st dimension after resampling"," d1r=d1                 sampling interval in 1st dimension after resampling"," f1r=f1                 first sample in 1st dimension after resampling	"," 									"," NOTE:  resamp currently performs NO ANTI-ALIAS FILTERING before resampling!"," 									",NULL};/**************** end self doc ********************************//* * AUTHOR:  Dave Hale, Colorado School of Mines, 07/07/89 */intmain (int argc, char **argv){	int n1,n2,i2,n1r,i1r;	float d1,f1,d1r,f1r,x1r,*p,*pr,*xr;	FILE *infp=stdin,*outfp=stdout;	/* hook up getpar */	initargs(argc,argv);	requestdoc(1);	/* get parameters */	if (!getparint("n1",&n1)) {		if (efseeko(infp,(off_t) 0,SEEK_END)==-1)			err("must specify n1!\n");		n1 = (int)(eftello(infp)/sizeof(float));		efseeko(infp,(off_t) 0,SEEK_SET);	}	if (!getparint("n2",&n2)) n2 = -1;	if (!getparfloat("d1",&d1)) d1 = 1.0;	if (!getparfloat("f1",&f1)) f1 = d1;	if (!getparint("n1r",&n1r)) n1r = n1;	if (!getparfloat("d1r",&d1r)) d1r = d1;	if (!getparfloat("f1r",&f1r)) f1r = f1;	/* allocate space */	p = ealloc1float(n1);	pr = ealloc1float(n1r);	xr = ealloc1float(n1r);	/* compute output 1st dimension values */	for (i1r=0,x1r=f1r; i1r<n1r; i1r++,x1r+=d1r)		xr[i1r] = x1r;	/* loop over 2nd dimension */	for (i2=0; i2<n2 || n2<0; i2++) {		/* read input data */		if (efread(p,sizeof(float),n1,infp)!=n1) break;		/* resample */		ints8r(n1,d1,f1,p,0.0,0.0,n1r,xr,pr);		/* write input data */		efwrite(pr,sizeof(float),n1r,outfp);	}	return(CWP_Exit());}

⌨️ 快捷键说明

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