2017-09-22 9 views
1

サードパーティのコードをmexファイルとして実行しようとすると、明らかな問題が発生します。このmexfileのソースは利用可能ですが、私はむしろそれを混乱させません。残念ながら、出力に構造体が返され、MATLABではfminconと互換性がありません。私が得ることができないように私が物事のMATLAB側で行うことができるものはありますか: FMINCONは、関数によって返されるすべての値がデータ型doubleであることを要求します。構造体を返すサードパーティ製のmexFunctionでfminconを実行すると問題が発生する

また、実際のコードを混乱させる必要がありますか?

+1

は、あなたの構造体を取るfmincon'が受け付ける 'フォーマットにデータを入れ、代わりに – Wolfie

+1

はfmincon''と互換性があり、あなたのMEX関数、ラッパーを作成することを使用します。 – m7913d

答えて

0

mex関数の呼び出しを、double型の値をブレークアウトする関数でラップするだけで、それをfminconに与えることはできますか?

% MATLAB flavored Pseudocode... 

function doubleVal = callMex(input) 
    % Function that wraps the mex function call and returns the appropriate type. 
    structVal = mex_function(input); 
    doubleVal = structVal.someVal; 
end 

fmincon(callMex, inputs); % <-- somewhere in another file 
関連する問題