xcor.c

来自「该程序是用vc开发的对动态数组进行管理的DLL」· C语言 代码 · 共 101 行

C
101
字号
/* Copyright (c) Colorado School of Mines, 2003.*//* All rights reserved.                       *//*********************** self documentation **********************//*****************************************************************************XCOR - Compute z = x cross-correlated with yxcor	compute z= x cross-correlated with y******************************************************************************Function Prototype:void xcor (int lx, int ifx, float *x, int ly, int ify, float *y ,	int lz, int ifz, float *z);******************************************************************************Input:lx		length of x arrayifx		sample index of first xx		array[lx] to be cross-correlated with yly		length of y arrayify		sample index of first yy		array[ly] with which x is to be cross-correlatedlz		length of z arrayifz		sample index of first zOutput:z		array[lz] containing x cross-correlated with y******************************************************************************Notes:See notes for convolution function conv().The operation "x cross correlated with y"  is defined to be:           ifx+lx-1    z[i] =   sum    x[j]*y[i+j]  ;  i = ifz,...,ifz+lz-1            j=ifxThis function performs cross-correlation by(1) reversing the samples in the x array while copying    them to a temporary array, and(2) calling function conv() with ifx set to 1-ifx-lx.Assuming that the overhead of reversing the samples in x is negligible,this method enables cross-correlation to be performed as efficiently asconvolution, while reducing the amount of code that must be optimizedand maintained.******************************************************************************Author:  Dave Hale, Colorado School of Mines, 11/23/91*****************************************************************************//**************** end self doc ********************************/#include "cwp.h"void xcor (int lx, int ifx, float *x,	   int ly, int ify, float *y, 	   int lz, int ifz, float *z)/*****************************************************************************Compute z = x cross-correlated with y; i.e.,           ifx+lx-1    z[i] =   sum    x[j]*y[i+j]  ;  i = ifz,...,ifz+lz-1            j=ifx******************************************************************************Input:lx		length of x arrayifx		sample index of first xx		array[lx] to be cross-correlated with yly		length of y arrayify		sample index of first yy		array[ly] with which x is to be cross-correlatedlz		length of z arrayifz		sample index of first zOutput:z		array[lz] containing x cross-correlated with y******************************************************************************Notes:See notes for convolution function conv().This function performs cross-correlation by(1) reversing the samples in the x array while copying    them to a temporary array, and(2) calling function conv() with ifx set to 1-ifx-lx.Assuming that the overhead of reversing the samples in x is negligible,this method enables cross-correlation to be performed as efficiently asconvolution, while reducing the amount of code that must be optimizedand maintained.******************************************************************************Author:  Dave Hale, Colorado School of Mines, 11/23/91*****************************************************************************/{	int i,j;	float *xr;		xr = alloc1float(lx);	for (i=0,j=lx-1; i<lx; ++i,--j)		xr[i] = x[j];	conv(lx,1-ifx-lx,xr,ly,ify,y,lz,ifz,z);	free1float(xr);}

⌨️ 快捷键说明

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