Back to Generalized-Gaussian-distributed random numbers
// Description: random_generalized_normal
// DocumentationOf: random_generalized_normal.m
#include "pastelmatlab/pastelmatlab.h"
#include "pastel/sys/random/random_generalizedgaussian.h"
void force_linking_random_generalized_normal() {};
using namespace Pastel;
namespace
{
void matlabRandomGeneralizedNormal(
int outputs, mxArray *outputSet[],
int inputs, const mxArray *inputSet[])
{
enum Input
{
M,
N,
Shape,
Scale,
Inputs
};
enum Output
{
Result,
Outputs
};
ENSURE_OP(inputs, ==, Inputs);
ENSURE_OP(outputs, ==, Outputs);
integer m = matlabAsScalar<integer>(inputSet[M]);
integer n = matlabAsScalar<integer>(inputSet[N]);
dreal shape = matlabAsScalar<dreal>(inputSet[Shape]);
dreal scale = matlabAsScalar<dreal>(inputSet[Scale]);
MatrixView<dreal> result = matlabCreateMatrix<dreal>(m, n, outputSet[Result]);
for (integer i = 0; i < result.size(); ++i)
{
result(i) = randomGeneralizedGaussian<dreal>(shape, scale);
}
}
void addFunction()
{
matlabAddFunction(
"random_generalized_normal",
matlabRandomGeneralizedNormal);
}
CallFunction run(addFunction);
}