2012-01-18 24 views
4

C++コードでVisual Studioを使用していて、MATLABエンジンにいくつかの変数を送ります。これまでのところ問題はありません。Matlab Engineのコマンドウィンドウの "未定義の関数またはメソッド"

» whos 
    Name   Size    Bytes Class  Attributes 

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

私は、標準のMATLAB関数を使用することができますが、私は、このコマンドのことを(パスを設定した後、通常MATLABで動作します)新しいfunction.mをdowloadedている:私は、MATLABコマンドウィンドウが開いていて、これらの変数を想像MATLABのエンジンからのウィンドウは、認識や発見ができません。

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

私は(コマンドウィンドウとMATLAB)が同期していると思っていましたが、今は見えません。

どうすればコマンドウィンドウからfunction.mを使用できるのですか?どんな援助も歓迎されます。

答えて

3

それは長い時間と誰もされているように、私は私がやったことを掲載します答え:Matlabのたびに

あなたは一度パスをリンクし、「永遠に」そこにとどまるnewtoolboxを必要としています。ツールボックスの機能は、Matlabのデフォルト機能のように使用できます。それは長い時間がかかった

% Here we load the toolbox for converting quaternion to Euler Angles 
addpath(genpath('C:\Program Files (x86)\MATLAB\R2010a\toolbox\SpinCalc')); //for example 
0

が、私は同じ問題に直面し、それについての興味深い情報を見つける:

コマンドラインを書き込む必要があるので、これはそのように動作していないMATLABエンジンを使用します。

まず、MATLAB(2016a)の新しいバージョンでは、MATLABエンジンの検索パスはです。C:¥Program Files¥MATLAB¥R2016a(またはMATLABをインストールするのと同じパス)です。だからあなたがそれを変更しなければ、C++はすべての組み込み関数を使うことができます。 さらに、ツールボックスの機能を使用することもできます。

しかし、もう1つの問題があります。ユーザー定義関数はどうですか?そこで、.mファイルを直接C:¥Program Files¥MATLAB¥R2016aに配置して、MATLAB Engineで表示させる必要があります。

ここでは別の道を行くことができます - ちょうどC++を通じてMATLABにあなたの.mファイルのパスを追加します。

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

私にとっては、現在のC++のプロジェクトに必要なMATLAB関数を入れて、その非常に便利な、パスを追加それを使用してください!これで、すべてのステップでパスを変更する必要はありません。現在のアプリケーションでは常に記憶されて便利です。

関連する問題