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

📄 suramp.c

📁 su 的源代码库
💻 C
字号:
/* Copyright (c) Colorado School of Mines, 2006.*//* All rights reserved.                       *//* SURAMP: $Revision: 1.11 $ ; $Date: 2006/06/20 18:07:03 $	*/#include "su.h"#include "segy.h"/*********************** self documentation **********************/char *sdoc[] = {" 									"," SURAMP - Linearly taper the start and/or end of traces to zero.	"," 									"," suramp <stdin >stdout [optional parameters]				"," 									"," Required parameters:							"," 	if dt is not set in header, then dt is mandatory		"," 							       		"," Optional parameters							","	tmin=tr.delrt/1000	end of starting ramp (sec)		","	tmax=(nt-1)*dt		beginning of ending ramp (sec)		"," 	dt = (from header)	sampling interval (sec)			"," 									"," The taper is a linear ramp from 0 to tmin and/or tmax to the		"," end of the trace.  Default is a no-op!				"," 									",NULL};/* Credits: * *	CWP: Jack K. Cohen, Ken Larner  * * Trace header fields accessed: ns, dt, delrt *//**************** end self doc ***********************************/segy tr;intmain(int argc, char **argv){	int nt;			/* number of sample points on traces	*/	float dt;		/* time sampling interval		*/	float *taper1=NULL;	/* vector of taper weights (up ramp)	*/	float *taper2=NULL;	/* vector of taper weights (down ramp)	*/	int ntaper1;		/* number of taper weights (up ramp)	*/	int ntaper2;		/* number of taper weights (down ramp)	*/	float tmin;		/* end of up ramp			*/	float tmax;		/* start of down ramp			*/	/* Initialize */	initargs(argc, argv);	requestdoc(1);	/* Get info from first trace */	if (!gettr(&tr))  err("can't get first trace");	nt = (int) tr.ns;	if (!getparfloat("dt", &dt))	dt = ((double) tr.dt)/1000000.0;	if (!dt) err("dt field is zero and not getparred");	/* Get parameters */	if (!getparfloat("tmin", &tmin))  tmin = tr.delrt/1000.0;	if (!getparfloat("tmax", &tmax))	tmax = (nt - 1)*dt;		/* Make sure that ntaper1 and ntaper2 never < 0 */	ntaper1 = NINT(MAX(0,(tmin - tr.delrt/1000.0)/dt));	ntaper2 = NINT(MAX(0,(tr.delrt/1000.0 + (nt - 1)*dt - tmax )/dt));	/* Set up taper weights */	if (ntaper1) {		register int i;		taper1 = ealloc1float(ntaper1);		for (i = 0; i < ntaper1; ++i)			taper1[i] = (float) (i+1)/ntaper1;	}	if (ntaper2) {		register int i;		taper2 = ealloc1float(ntaper2);		for (i = 0; i < ntaper2; ++i)			taper2[i] = (float) (ntaper2 - i)/ntaper2;	}								/* Main loop over traces */	do {		register int i;		if (ntaper1) {			for (i = 0; i < ntaper1; ++i)				tr.data[i] *= taper1[i];		}		if (ntaper2) {			for (i = 0; i < ntaper2; ++i)				tr.data[nt - ntaper2 + i] *= taper2[i];		}		puttr(&tr);	} while (gettr(&tr));	return(CWP_Exit());}

⌨️ 快捷键说明

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