MATLAB Answers

MATLAB(あるい​はSimulink)​とProcessin​gの間でのリアルタイ​ムのデータの渡し方に​ついて

20 views (last 30 days)
koya tanaka
koya tanaka on 18 Jul 2017
Commented: koya tanaka on 21 Jul 2017
javaベースのProcessingという言語で現在,あるキーを押すと表示されるプログラムを作成しています。 また,別のあるキーを押すと色を変化させるパラメータ(変数)を設定してます。この色を変える変数に対応したキーの信号をMATLAB(あるいはSimulink)からの信号に置き換えたいのですが,どのような方法で達成されるのでしょうか?

  3 Comments

jiro
jiro on 21 Jul 2017
Processing という言語については分からないのですが、その言語には外部ソフトとの連携機能としてどういうものがありますか?恐らく、そのテクノロジーを使ってMATLAB/Simulinkからデータを送ることができるかと思います。例えば Windows ですと COM インターフェイスなどがあります。また、Processing のプログラムと MATLAB のプログラムが別の PC に存在するならば、Serial 通信とかで信号を送ることも考えられます。
jiro
jiro on 21 Jul 2017
「リアルタイム」というのはつまりMATLABのプログラムが実行している最中に描画させたいということでしょうか。それとも計算させた結果を再生するように描画させるのではだめでしょうか。後者でも良いのなら、計算結果をファイルなどに出力し、そのファイルを描画プルグラムで読み込んで再生するということも考えられます。
ちなみに、Processingに関しては詳しくないのですが、MATLABの強みの一つは(計算はもちろん)可視化です。一つの環境で作られたプログラムのほうが色々な観点から見ても優れているので計算+描画をMATLABでやるというのも一つの手段かと思います。
koya tanaka
koya tanaka on 21 Jul 2017
jiroさん 1つのPC内で計算処理プログラムと描写プログラムを扱います。 外部「ハード」ではネットでもよく見られて,特にArduinoとProcessingで連携をとっています。どうやら,シリアルポートを使って通信をしているみたいです。 ただし,ソフト間では・・・
「リアルタイム」についてですが,前者になります。 外部から垂れ流しで出てくるデータをまず,MATLAB/Simulinkで処理して,処理した結果を,switch文である動作(色を変更させるパラメータの切り替え)に振り分けます。

Sign in to comment.

Accepted Answer

jiro
jiro on 21 Jul 2017
同じPC内の二つのプロセス通信だと COM や TCP/IP などが考えられます。また、MATLAB には様々な言語から呼べるインターフェイスがありますので、もしかしたら Processing が Java ベースなのでしたら Java 用 AP Iが使えるかもしれません。

  1 Comment

koya tanaka
koya tanaka on 21 Jul 2017
jiroさん お返事ありがとうございます。 挙げていただいたものを参考にして試してみます。

Sign in to comment.

More Answers (1)

mizuki
mizuki on 20 Jul 2017
例えばAを押したら赤、Bを押したら青が表示されるといったように、特定のキーに応じて応答を変えたいというご質問で間違いないでしょうか。
もしそうであれば、以下のように input 関数を使うことでキーボード入力を認識することができます。 Aを入力したら赤色のグラフ、Bを入力したら青色のグラフを描くようなコードになっています。
prompt = 'キーを押してください ';
x = input(prompt, 's'); % コマンドからの入力を要求
if( x == 'A' )
plot(rand(1,5), 'r')
elseif( x == 'B' )
plot(rand(1,5), 'b')
end
既に描いた図の色を変える場合は、グラフの "Color" プロパティを変更します。
figure
h = plot(rand(1,5), 'k'); % プロパティリストを取得
prompt = 'キーを押してください ';
x = input(prompt, 's');
if( x == 'A' )
h.Color = 'r';
elseif( x == 'B' )
h.Color = 'b';
end

  1 Comment

koya tanaka
koya tanaka on 21 Jul 2017
mizukiさん お返事ありがとうございます。
説明が足りませんでした。
ある計算をさせてその処理をもとに絵を描く,ということを目標にしています。 そこで,計算処理が得意なMATLAB/Simulinkと描写に特化したprocessingを 併用しようということなのです。
C言語等ではpipeなる機能(プログラム?)が存在するみたいですが, MATLAB/Simulinkとprocessing間での値の移動のための プログラムは存在するのでしょうか。という質問でした。

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!