4

我正在使用 Visual Studio 处理 C++ 代码,并将一些变量发送到 MATLAB 引擎。到目前为止没有问题。想象一下,我打开了 MATLAB 命令窗口和这些变量:

» whos
  Name            Size             Bytes  Class     Attributes

  QWe             1x365             2920  double              
  QWp             1x364             2912  double              
  QWu             1x364             2912  double 

我可以使用标准的 MATLAB 函数,但我已经下载了一个新的 function.m(在设置路径后通常在 MATLAB 中工作),来自 MATLAB 引擎的这个命令窗口无法识别或找到。

» isnormq(Q)
??? Undefined function or method 'isnormq'

我以为它们(命令窗口和 MATLAB)是同步的,但现在我发现它们不是。

我该如何解决这个问题,以便我可以从命令窗口使用我的 function.m?欢迎任何帮助。

4

2 回答 2

3

由于已经很长时间没有人回答我会发布我所做的:

在 Matlab 中,每次您需要一个新工具箱时,您都会将路径链接一次,然后“永远”保持在此处。您可以像使用 Matlab 中的默认函数一样使用工具箱中的函数。

使用 matlab 引擎这不起作用,因此有必要编写命令行:

% Here we load the toolbox for converting quaternion to Euler Angles
addpath(genpath('C:\Program Files (x86)\MATLAB\R2010a\toolbox\SpinCalc')); //for example
于 2012-05-29T14:23:36.237 回答
0

已经很长时间了,但我遇到了同样的问题并找到了一些有趣的信息。

首先在较新版本的 MATLAB (2016a) 中,MATLAB 引擎搜索路径为C:\Program Files\MATLAB\R2016a(或与安装 MATLAB 的路径相同)。因此,如果您不更改它,C++ 可以使用所有内置函数。此外,您可以使用工具箱中的功能!

但是还有另一个问题:用户定义的函数呢?所以我需要将 .m 文件直接放到C:\Program Files\MATLAB\R2016a以使其对 MATLAB 引擎可见。

在这里我们可以采用另一种方式——只需通过 C++ 将 .m 文件的路径添加到 MATLAB:

char CommandChangePath[MAX_PATH];
strcpy(CommandChangePath, "addpath('C:\\Users\\SuperUser\\Documents\\Visual Studio 2017\\Projects\\MyCppProject')");
engEvalString(ep, CommandChangePath);

对我来说,将必要的 MATLAB 函数放在当前的 C++ 项目中非常有用,添加路径然后使用!现在您不需要在每一步都更改路径 - 它始终被记住并且对当前应用程序始终有用。

于 2017-08-11T08:09:38.030 回答