Возврат значений октав в Scilab

Я пишу код на С ++, который возвращает выходные данные функции Octave в среду Scilab.

Соответствующий код приведен ниже

//Pass values from Scilab to Octave
sciErr= getMatrixOfDouble(pvApiCtx, piAddr, &iRows, &iCols, &pdblReal);
Matrix matrix_double = Matrix (iRows,iCols);
for (r=0;r<iRows;r++)
{
for(c=0;c<iCols;c++)
{
matrix_double(r,c)=(pdblReal[r]+c);
}
}
in(i-2)=octave_value (matrix_double);

octave_value_list out = feval (pstData[0], in, 1);//Call Octave function

dim_vector d = (out(0).matrix_value().dims()); //Get dimensions of Octave output

//Return Octave output to Scilab
if(out(0).is_double_type())
{
poutput = (double*)malloc(sizeof(double) * d(0) * d(1));
for(int l = 0 ; l < d(0) ; l++)
{
for(int m = 0 ; m < d(1) ; m++)
{
poutput[l+d(0)*m]=(out(0).matrix_value ()(l,m));
}
}
}
sciErr=createMatrixOfDouble(pvApiCtx, nbInputArgument(pvApiCtx) + 1, d(0), d(1),poutput);
free(poutput);
AssignOutputVariable(pvApiCtx, 1) = nbInputArgument(pvApiCtx) + 1;
ReturnArguments(pvApiCtx);

На консоли Scilab ввод

-->a=[1 24 92; 59 28 211]
a  =

1.     24.    92.
59.    28.    211.-->b=call_octave("transpose",a)
b  =

1.    59.
2.    60.
3.    61.

Для любой функции Octave первая строка вывода верна. Последующие строки имеют 1 добавлен к предыдущей строке. Куда я иду не так?

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]