我是matlab的新手,编码不是我的工作,我只是将它用于一些辅助项目。所以我不知道我在说什么,我希望你能理解:)
所以我在我的计算机上安装了matlab,并想在我的代码执行期间使用它的库绘制一些非常简单的图形(直方图,散点图,等等)。绘制这些图形不是我的代码的第一个目的,我发现在执行期间更容易绘制它们而不是将它们作为CSV文件导出,然后通过excel手动绘制。
问题:我设法制作了视觉C ++和#34;沟通"用matlab。我正在使用数组传递一些数据,但我也希望传递一个字符串(例如" C:\ test \"这样的路径),因为我想自动保存这些数据图表一旦生成精确的目录。到目前为止,我还没有找到任何办法。
这是我的c ++代码,非常简单:
Engine *ep;
ep = engOpen(NULL);
double *ArrayOne;
double *ArrayTwo;
const int Asize = Area.size();
ArrayOne = new double[Asize];
ArrayTwo = new double[Asize];
for (int i = 0; i <= Area.size() - 1; i++) {
ArrayOne[i] = Area[i][1];
ArrayTwo[i] = Area[i][2]
}
mxArray* ONE = mxCreateDoubleMatrix(Asize, 1, mxREAL);
memcpy((void*)mxGetPr(ONE), (void*)ArrayOne, sizeof(double)*Asize);
engPutVariable(ep, "one", ONE);
mxArray* TWO = mxCreateDoubleMatrix(Asize, 1, mxREAL);
memcpy((void*)mxGetPr(TWO), (void*)ArrayTwo, sizeof(double)*Asize);
engPutVariable(ep, "two", TWO);
engEvalString(ep, "plottest");
delete[]ArrayOne;
delete[]ArrayTwo;
engClose(ep);
文件Plottest.m:
h1= histogram(one);
h1.EdgeColor = 'black';
h1.FaceColor = 'white';
hold on;
h2 = histogram(two);
h2.EdgeColor = 'blue';
h2.FaceColor = [0.5 0.5 0.5];
alpha(h1,.5);
alpha(h2,.8);
saveas(gcf,'C:\PhD\SVG2GMSH\SVG\test.png');
如何通过一个包含它的更优雅的变量将我的硬编码路径替换为我的m文件(&#34; C:\ PhD \ SVG2GMSH \ SVG \ test.png&#34;)?
感谢您的帮助。另外,如果您有任何其他建议以便让我的代码看起来/工作更好,请告诉我:)
弗洛
答案 0 :(得分:0)
当你只需要更新变量的值时,我看不到变量会带来什么好处。
最好的办法是使用相对路径:saveas(gcf, 'test.png')
,然后从当前工作目录中获取文件。 The documentation实际上并没有完全说明这一点,但它基本上就是计算机的工作方式,所以......试试吧!