Hello,

I try to use the dll example copyAtoB using matrix 10 * 10:

//load the shared library into GAUSS

dlibrary ECOS;

//size of vectors

nelems = 10;

//Fill in 'A' with random normal numbers

A = rndn(nelems, 10);

//Pre-allocate 'B' to be the same size as 'A'

B = zeros(nelems, 10);

//Call your C function

dllcall copyAtoB(A, B, nelems);

How can I modify the c funtion to have the expected results? I tried double pointer but without sucess.

thanks

## 3 Answers

0

a matrix n x n is avector 1 x n^2

0

Assuming you used the C code from the accepted answer in this post, based on your GAUSS code above, I would expect that when `B` comes back from the `dllcall` it contains the first 10 numbers from `A` and the rest zeros.

In C you operate on an element at a time, so the `nelems` input to `copyAtoB` needs to be equal to the total number of elements in each matrix. For example, this should work:

//load the shared library into GAUSS dlibrary ECOS; //size of vectors nrows = 10; ncols = 10; total_elems = nrows * ncols; //Fill in 'A' with random normal numbers A = rndn(nrows, ncols); //Pre-allocate 'B' to be the same size as 'A' B = zeros(nrows, ncols); //Call your C function dllcall copyAtoB(A, B, total_elems);

0

you are right. thanks a lot

## Your Answer

## 3 Answers

a matrix n x n is avector 1 x n^2

Assuming you used the C code from the accepted answer in this post, based on your GAUSS code above, I would expect that when `B` comes back from the `dllcall` it contains the first 10 numbers from `A` and the rest zeros.

In C you operate on an element at a time, so the `nelems` input to `copyAtoB` needs to be equal to the total number of elements in each matrix. For example, this should work:

//load the shared library into GAUSS dlibrary ECOS; //size of vectors nrows = 10; ncols = 10; total_elems = nrows * ncols; //Fill in 'A' with random normal numbers A = rndn(nrows, ncols); //Pre-allocate 'B' to be the same size as 'A' B = zeros(nrows, ncols); //Call your C function dllcall copyAtoB(A, B, total_elems);

you are right. thanks a lot