Нов съм в използването на GSL и се чудех как мога да върна GSL масив от една функция в друга. Не е като нормален масив...Опитвам се да разбера това от известно време и нямам силен опит в C и това ме подлудява. Ето две псевдо функции, които показват какво се опитвам да направя.
Това е основната функция
#include <stdio.h>
#include <stdlib.h>
#include <gsl/gsl_matrix.h>
void load(gsl_matrix * a);
int main()
{
int row, col,i,j;
row = 6; col = 25;
gsl_matrix *a = gsl_matrix_alloc(6,25);
load(a);
for (i = 0; i < 6; i++)
for (j = 0; j < 25; j++)
printf ("a[%d,%d] = %g\n", i, j,
gsl_matrix_get (a, i, j));
return 0;
}
И това е функцията за зареждане, която зарежда матрица от файл. Тази част изглежда работи... Просто не мога да получа резултата от тази функция към основната функция.
#include <stdio.h>
#include <stdlib.h>
#include <gsl/gsl_matrix.h>
void load(gsl_matrix * a)
{
int row_size, col_size;
row_size = 6; col_size = 25;
int status_obs;
gsl_matrix * obs_map = gsl_matrix_alloc(row_size,col_size);
FILE *f = fopen("obs_map.dat","r");
status_obs = gsl_matrix_fscanf(f,obs_map);
fclose(f);
a = obs_map;
if(status_obs == 0)
printf("Obstacle map loaded: %dx%d\n",row_size,col_size);
gsl_matrix_free (obs_map);
}
Извинявам се, ако това е глупав въпрос, но просто имам нужда от малко помощ в правилната посока. Всяка помощ от всеки, който използва GSL, ще бъде оценена. Само за информация, тук е примери за gsl матрици