2

この場合、ベース ワークスペースにニューラル ネットワーク (NN) インスタンスがあり、これを Simulink でのシミュレーションで使用したいと考えています。ネットで使用する必要がある入力引数を使用して、Embedded Matlab 関数で NN の使用をラップしました。

原則として、私は次のようなことをしたいと思っています:

function XBDDprime = NN(F, XB, XBD, XBDD)
%#eml
global net;
XBDDprime = net([F XB XBD XBDD]');

目標はnet、ベース ワークスペース (クラスのインスタンスnetwork) からオブジェクトをフェッチすることです。

evalinこれは、ワークスペースから変数を読み取っていた問題のスイングです。

function XBDDprime = NN(F, XB, XBD, XBDD)
%#eml
eml.extrinsic('evalin');
net = evalin('base', 'net'); %Fetch net from workspace
XBDDprime = net([F XB XBD XBDD]'); %Error!

simulink は net が配列であり、net(...)配列の添え字であると考えているように見えるため、これはコンパイルされません (実際のエラー メッセージ: mxArray への添え字はサポートされていません)。

Simulink は、埋め込まれた matlab 関数をコンパイルできるようにするために使用されるオブジェクトの完全な定義を持っている必要があるように思えますが、それは正しいですか? 解決策はありますか?Simulink.Signalどうにかして NN をラップし、それを引数として関数ブロックに追加できますか?

編集

ファイルからloadシリアル化されたオブジェクトをロードするためにも使用してみました。netそれもうまくいきませんでした。コンパイラsmxArray.

function XBDDprime = NN(F, XB, XBD, XBDD)
%#eml
eml.extrinsic('load')
s = load('net');
XBDDprime = s.net([F XB XBD XBDD]');

解決

最後に、上記の例のように見える matlab 関数ブロックに行きました。

4

2 に答える 2

1

netパラメータをNN関数の入力として定義し、From Workspaceブロックを使用してモデルに取り込むことができます。これがEmbedded MATLAB functionブロックで機能するかどうかはわかりません。ブロックに切り替える必要があるかもしれませんM Code

于 2011-04-12T13:46:52.863 に答える
-2

ニューラル ネットワーク シミュレーション用の Simulink ブロックの生成 構文 gensim(net,st) ヘルプを表示するには help network/gensim と入力します。

于 2011-09-17T10:28:47.460 に答える