help-gsl
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Help-gsl] A Vector as the 3rd Argument in GSL_vector_set


From: Matthew Boulton
Subject: [Help-gsl] A Vector as the 3rd Argument in GSL_vector_set
Date: Mon, 27 Aug 2007 23:20:34 +0100

Hello. I'm a little confused with some code I'm working on.

At present I have a vector called kernel_vec which is defined as follows:

"kernel_vec = (DATA_TYPE **)malloc( ncomp_kernel * sizeof(DATA_TYPE *) )"

now the extra * in the sizeof(DATA_TYPE *) at the end initlaly had me a bit
worried. Later in the code it turns out that the following line is run:

"kernel_vec[nvec] = kernel_vector( nvec , idegx , idegy , ig , &test );"

where kernel_vector is a function that returns an entire vector. Now in GSL
form those two bits of code look as follows:

"kernel_vec = gsl_vector_calloc( ncomp_kernel );"
"gsl_vector_set( kernel_vec , nvec , kernel_vector( nvec , idegx , idegy ,
ig , &test ) );"

Now I have no experience with a vector as the third argument of
GSL_vector_set rather then a single value. At the moment I'm getting errors
at compilation such as:

get_stamp_vectors.c:48: error: incompatible type for argument 1 of
'gsl_vector_set'
get_stamp_vectors.c:48: error: incompatible type for argument 3 of
'gsl_vector_set'

I have produced a test programme below which illustrates what I am trying to
do:

--Vector_as_argument_test.c

#include <stdio.h>

#include <gsl/gsl_vector.h>

gsl_vector *kernel_vec;

gsl_vector *kernel_vector( int , int , int , int , char * );

int main()

{

int i;
int ncomp_kernel = 196;
int nvec = 0;

kernel_vec = gsl_vector_calloc( ncomp_kernel );

while( nvec < 10 )

{

for ( i = 0 ; i < ncomp_kernel ; i++ )
{
printf("kernel_vec[%d] = %g\n" , i , gsl_vector_get( kernel_vec , i ) );
}
gsl_vector_set( kernel_vec , nvec , kernel_vector( 1 , 2 , 3 , 4 , "Test" )
);
for ( i = 0 ; i < ncomp_kernel ; i++ )
{
printf("kernel_vec[%d] = %g\n" , i , gsl_vector_get( kernel_vec , i ) );
}

nvec++;

}

return 0;

}


-- Kernel_Vector_test.c

#include <stdio.h>
#include <gsl/gsl_vector.h>

gsl_vector *vector;

gsl_vector *kernel_vector( int n , int deg_x , int deg_y , int ig , char
*test )

{
int ncomp_kernel = 196;

vector = gsl_vector_calloc( ncomp_kernel );

gsl_vector_set_all( vector , 10.0 );

return vector;

}




Any ideas how I can proceed?

Kind Regards,

Matt


reply via email to

[Prev in Thread] Current Thread [Next in Thread]