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

📄 sutaper.c

📁 seismic software,very useful
💻 C
字号:
/* SUTAPER: $Revision: 1.5 $ ; $Date: 90/12/23 16:37:29 $	*//*---------------------------------------------------------------------- * Copyright (c) Colorado School of Mines, 1990. * All rights reserved. * * This code is part of SU.  SU stands for Seismic Unix, a processing line * developed at the Colorado School of Mines, partially based on Stanford * Exploration Project (SEP) software.  Inquiries should be addressed to: * *  Jack K. Cohen, Center for Wave Phenomena, Colorado School of Mines, *  Golden, CO 80401  (jkc@dix.mines.colorado.edu) *---------------------------------------------------------------------- */#include "su.h"#include "segy.h"/*********************** self documentation **********************/string sdoc =" 								\n"" SUTAPER - Taper the edge traces of a data panel to zero.	\n"" 								\n"" sutaper <diskfile >stdout [ntaper=5]				\n"" 								\n"" The taper is an \"ntaper\" point sine-squared taper 		\n"" symmetrically applied at each end of the data set.		\n"" 								\n";/**************** end self doc ***********************************//* Credits: * *	CWP: Chris, Jack */#define NTAPER	5segy tr;main(int argc, char **argv){	int nt;		/* number of sample points on traces	*/	int itr, ntr;	/* trace counter and total 		*/	float *taper;	/* vector of taper weights		*/	int ntaper;	/* number of taper weights		*/	/* Initialize */	initargs(argc, argv);	askdoc(1);	/* Get info from first trace */	if (!(ntr = gettra(&tr, 0)))  err("can't get first trace");	nt = (int) tr.ns;	/* disaster to pass &ushort */	/* Get parameter */	if (!getparint("ntaper", &ntaper))	ntaper = NTAPER;	if (ntaper > ntr/2)	    err("taper vector length, %d, exceeds ntr/2 = %d", ntaper, ntr/2);	/* Set up taper weights */	taper = ealloc1float(ntaper);	{ register int k;	  for (k = 0; k < ntaper; ++k) {		float s = sin(k*PI/(2*ntaper));		taper[k] = s*s;	  }	}							/* Loop over the traces, tapering those at the ends */	/* Take care of the trace already read (taper[0] = 0.0) */	{ register int i;	  for (i = 0; i < nt; ++i)  tr.data[i] = 0.0;	}	puttr(&tr);	/* Taper at the left end of the data set */	for (itr = 1; itr < ntaper; ++itr) {		register int i;		gettr(&tr);		for (i = 0; i < nt; ++i)  tr.data[i] *= taper[itr];		puttr(&tr);	}	/* Pass on traces in the middle of the data set */	for ( ; itr < ntr - ntaper; ++itr) {		gettr(&tr);		puttr(&tr);	}		/* Taper at the right end of the data set */	for ( ; itr < ntr; ++itr) {		register int i;		gettr(&tr);		for (i = 0; i < nt; ++i)  tr.data[i] *= taper[ntr - itr - 1];		puttr(&tr);	}	return EXIT_SUCCESS;}

⌨️ 快捷键说明

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