私はMATLABにまったく慣れていないので、C++ファイルからのデータストリーミングのオプションを知りたいです。
この目的でMATLABの「エンジン」を使用することや、engPutVariableなどのいくつかのメソッドを使用することを聞いたことがありますが、誰かがそれを実行する方法の完全な例を教えてくれますか?正弦波のストリーミングを実装しようとしていますが、データのサンプルセットを送信する簡単な例で十分です。
私はMATLABにまったく慣れていないので、C++ファイルからのデータストリーミングのオプションを知りたいです。
この目的でMATLABの「エンジン」を使用することや、engPutVariableなどのいくつかのメソッドを使用することを聞いたことがありますが、誰かがそれを実行する方法の完全な例を教えてくれますか?正弦波のストリーミングを実装しようとしていますが、データのサンプルセットを送信する簡単な例で十分です。
matlab エンジンと mex 関数の 2 つのオプションがあります。Matlab API がシングルスレッドであることに注意することは非常に重要です。ユーザーにバックグラウンド スレッドを表示する方法は絶対にありません。せいぜい、UI イベントの割り込みがあります。
Matlab エンジンを使用すると、アプリケーションは、Matlab をアドイン ライブラリとして使用する C++ アプリケーションになります。C++ から Matlab 関数を呼び出すことができますが、いつでも 1 つのスレッドだけが Matlab にアクセスするようにする必要があります。したがって、アプリケーションの残りの部分からの入力のキューから Matlab にデータを供給するスレッドを持つことができます。C++ は必要な数のスレッドを持つことができますが、Matlab と対話できるのは 1 つだけです。
もう 1 つのアプローチは、Matlab がメイン アプリケーションを制御し、さらにデータが必要なときに C++ コードを呼び出すようにすることです。C++ コードは、Matlab のプラグインとして機能します。C++ コードは必要な数のスレッドを持つことができますが、M ファイルが呼び出すと、Matlab は C++ をポーリングします。MEX 関数のドキュメントを参照してください。