其中进行SRIF滤波解算的代码如下:
double randn(double myu, double sig)
{
double PI = 3.14159265357;
double a,b;
a=((double)rand()+1.0)/((double)RAND_MAX+1.0);
b=((double)rand()+1.0)/((double)RAND_MAX+1.0);
return myu+sqrt(-2.0*log(a))*sin(2.0*PI*b)*sig;
}
void HouseholderUpperTri( double* M,int num_of_row, int num_of_column )
{
int colcount = 0;
int m = num_of_row;
int n = num_of_column;
double* A = M ;
int test = num_of_row<=num_of_column?(m-1):(n-1);
double *u = new double[num_of_row];
while( A != NULL )
{
if( colcount >= test+1 )
{
break;
}
double s =0.0 ,s1 =0.0,b =0.0,r = 0.0 ;
int t =0 , i =0, j = 0 ;
if( *A >= 0 ) t = 1;
else if( *A < 0 ) t =-1;
for( i = 0; i<m;i++ )
{
s1+= (*(A+i*num_of_column ))*(*(A+i*num_of_column ));
}
s = -t*sqrt(s1);
memset(u,0,sizeof(double)*num_of_row);
for( i =0 ; i<m; i++ )
{
if( i == 0 )
{
u[i] = *A - s;
}
else