私はMatLabでシミュレーションを実行しています.MatLabエンジンを使ってプロットするためにMatLabを使用しながらシミュレーションを実行するには現在C++を学習しています。以下のコードは、変数を生成してMatLabワークスペースに渡し、プロットし、別の変数をC++に渡すために書いたコードの例を示しています。memcpy(MatLabエンジン)の使用方法を説明してください
#include <iostream>
#include "engine.h"
//#include "mex.h"
using namespace std;
void main()
{
//Create pointer for matlab engine
Engine *matlab;
//Open matlab engine interface
matlab = engOpen("null");
//Create variable
double timedata[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
mxArray *T = mxCreateDoubleMatrix(1, 10, mxREAL);
memcpy((void *)mxGetPr(T), (void *)timedata, 10 * sizeof(double));
//Put variable into workspace
engPutVariable(matlab, "workspaceT", T);
//Evaluate strings in MatLab
engEvalString(matlab, "D = workspaceT+2;");
engEvalString(matlab, "plot(workspaceT,D);");
//Get variable from MatLab workspace
mxArray *d = engGetVariable(matlab, "D");
double b[10];
for (int i = 0; i < 9; i++)
{
b[i] = (double)mxGetPr(d)[i];
cout << b[i];
}
cout << endl;
system("pause");
//Close matlab engine interface
engClose(matlab);
}
私が特に興味を持っている部分はこれです...
memcpy((void *)mxGetPr(T), (void *)timedata, 10 * sizeof(double));
私は、コードのこの部分が何をしているか全く見当がつかない。私はドキュメンテーション(http://www.cplusplus.com/reference/cstring/memcpy/)を見て、それは私を正確に啓発していない。私が特に得られない部分は、(void *)の使用です。私が述べたように、私の背景はMatLabにあるので、私はC++の専門家ではないので、誰かが私が5歳であるかのようにここで何が起こっているのか説明できるなら、非常に感謝しています!ありがとう、
memcpy
の