2014-01-28 213 views
1

我有一個調用matlab函數的小代碼片段(保存在它自己的.m文件中)。用戶可以選擇要調用的matlab函數,它可能也可能不在MATLAB的默認文件夾(〜/ Documents/MATLAB)中。從C++調用Matlab函數

如果它不在默認搜索路徑中,我想將該函數的包含文件夾添加到MATLAB的搜索路徑中。當我嘗試這樣做使用終端(我是在MAC),用這個命令:

/Applications/MATLAB_R2011b.app/bin/matlab -r "addpath(genpath('/Folder/Address/Here'))" 

MATLAB的推出,我可以看到,新的地址已成功添加到搜索路徑。

然而,當我嘗試運行使用這種通過C++程序的命令:

std::string matlabFunctionPath = "/Folder/Address/Here" 
std::string addPathCommand = "/Applications/MATLAB_R2011b.app/bin/matlab -r \"addpath(genpath('"+ matlabFunctionPath + "')\""; 
::popen(shellCommand.c_str(), "r")); 

MATLAB不會推出,但新的地址不會被添加到搜索路徑。我在這裏做錯了什麼?

我很感激幫助。

回答

1

你缺少第二封閉)

std::string addPathCommand = "/Applications/MATLAB_R2011b.app/bin/matlab -r \"addpath(genpath('"+ matlabFunctionPath + "'))\"";