c++ - 如何在matlab mex文件中输出整数向量?
问题描述
我有一个 c++ 代码,它生成一些整数序列。我需要为 matlab 编写一个 mex 文件,它会给我输出。
#include "mex.h"
#include <vector>
#include <random>
void
mexFunction(int nlhs,mxArray *plhs[],int nrhs,const mxArray *prhs[])
{
double *Input;
mxArray *mxInput,*mxOutput;
//associate inputs
mxInput = mxDuplicateArray(prhs[0]);
Input=mxGetPr(mxInput);
// number of Steps
int NumOfSteps = (int) Input[0];
// collect diffs
std::vector <int> result_vector;
// Initialize random generator
std::random_device rnd_device;
std::mt19937_64 rg(rnd_device());
std::normal_distribution<double> Xi(0,1);
// iterate
for (int iStep=0; iStep<NumOfSteps;iStep++)
{
if ((Xi(rg)-Xi(rg)) >= 0.5)
{
result_vector.push_back(iStep);
}
}
// Here i should copy result_vector to output
}
我知道如何通过循环来做到这一点,以元素方式应对结果,但我希望应该有更好的解决方案。
你能给我一些建议如何result_vector
在我的 mex 文件中输出吗?
更新:
我找到了以下解决方案:
int vecN = result_vector.size();
mxOutput = plhs[0] = mxCreateDoubleMatrix(1,vecN, mxREAL);
Output=mxGetPr(mxOutput);
std::copy(result_vector.begin(),result_vector.end(),Output);
我在 C++ 中真的很糟糕,这是正确的方法吗?
解决方案
推荐阅读
- java - 如何使用 webview 获取最后更新的 HTML 内容?
- javascript - 如果按下 Enter,则获取输入的值 - 从外部函数
- arrays - 如何使用 Twitter API 中的 User_Id 列表?
- mysql - MySQL使用外键访问父行?
- php - Laravel - 在 Jobs 中使用图像干预。路径错误
- tensorflow - 为什么没有将 L2 正则化添加回原始损失函数?
- c++ - 当我尝试在我的代码中使用宏时,我收到类似“预期标识符”的错误
- python - 如何在Python中数字的不同位置添加点分隔符?
- python - 无法通过 PyXero payroll API 提交休假
- scala - 如何评估使用 InterfaceStability 注释的代码(因“涉及类 InterfaceStability 的非法循环引用而失败”)?