Как мне использовать функцию MATLAB RANDN в C ++?

Я пытаюсь реализовать этот код, но я получаю следующую ошибку компилятора: randn wasn't declared in the scope,

void levyflt()
{
int j;
double beta=1.5,sigma,rand_num;

sigma=pow((tgamma(1+beta)*sin(M_PI*beta/2)/(tgamma((1+beta)/2)*beta*pow(2,((beta-1)/2)))),(1/beta));

for(j=0;j<d;j++)
{

rand_num=randn(-1,1);
u[j]=rand_num*sigma;
rand_num=randn(-1,1);

v[j]=rand_num;
step[j]=u[j]/pow(fabs(v[j]),(1/beta));
L[j]=0.01*step[j];
}cout<<L[j];
}

1

Решение

Для этого вам нужен Matlab Compiler SDK. Используя Matlab Compiler SDK, вы сможете экспортировать необходимые вам функции Matlab, в вашем случае, возможно, randn функция. Компилятор SDK создает файлы .dll, .lib и .h для функции Matlab, которую вы хотите экспортировать. Затем вы можете вызвать функцию в общей библиотеке из C ++, используя mwArray библиотека, созданная специально для сортировки данных между dll, сгенерированным Matlab, и вашим C ++ кодом. Все это задокументировано Вот.

Постскриптум Я слышал, что они недавно отделили Matlab Compiler от Matlab Compiler SDK, так что будьте осторожны с тем, что вы покупаете.

Это строго ответ на ваш вопрос, как указано, средства генерации случайных чисел в C ++ 11, вероятно, будут вам полезны, как правильно указывает @drescherjm в комментариях.

1

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


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