Simulinkで得​たscopeのデータ​をExcelに書き込​む方法は?

123 views (last 30 days)
mw51
mw51 on 18 Dec 2018
Commented: Aoi Midori on 20 Dec 2018
Simulinkを使って、シミュレーションを行い、波形をscopeで表示しました。しかし、scopeの波形は細かく見れないので、シミュレーションのデータをexcelで読み込み、それをもとにexcelで波形を作ることにしました。ところが、Simulinkのデータをexcelに読み込もうとしましたが、excelに入れる方法が分かりません。simulinkのデータをexcelで読み込み、グラフを作成するにはどのような方法で行えばよいですか?

Accepted Answer

Aoi Midori
Aoi Midori on 19 Dec 2018
Simulink上で"To Workspace"に枝分かれさせてみてはいかがでしょうか?
ToWorkspace.PNG
そうすることで、(デフォルトでは)MATLABのワークスペース上に"simout"という変数ができ、その中に時間情報やデータなどが入っています。excelに波形を出力される際は、データだけでよければ、MATLABのコマンドウィンドウ上で下記の通り入力して頂けたらと思います。
xlswrite("file.xlsx", simout.Data);
もちろん、excelに出力しなくても、MATLAB上でのグラフ作成も可能です。
plot(simout);

More Answers (6)

mw51
mw51 on 19 Dec 2018
その方法で試してみましたが、”simout”または"simout.data"を定義してくださいとエラーが出ました。これらの関数はどのようにして定義しますか?
  3 Comments
Aoi Midori
Aoi Midori on 19 Dec 2018
mw51さん、
写真の添付ありがとうございます。接続は問題なさそうですね。また、出力される変数名もsimoutという名前で良さそうです。一点だけ気になったのが、
simout.Data
こちら、上記の通り、大文字Dから書いて頂けますでしょうか?

Sign in to comment.


mw51
mw51 on 20 Dec 2018
Edited: mw51 on 20 Dec 2018
上記のプログラムでDを大文字にし、一部書き直しました。エラーがでてしまい、エクセルへのデータの書き込みが実行されません。どうすればいいですか。
function xlswrite
a = sim('control1','SimulationMode','normal');
b = a.get('simout')
assignin('base','b',b);
CC0=3802.28;
DD0=1.90114;
CC=CC0;
DD=DD0;
Sigma=0.0075;
SS=-1/0.002;
xlswrite("file.xlsx", simout.data);
end
出たエラーは以下のとおりです。
変数 "simout" またはクラス "simout.data" は未定義です。
エラー: SetParameter (line 12)
xlswrite("file.xlsx", simout.data);
>>
  1 Comment
Aoi Midori
Aoi Midori on 20 Dec 2018
Edited: Aoi Midori on 20 Dec 2018
mw51さん、
a = sim('control1','SimulationMode','normal');
b = a.get('simout')
既に上記のように書かれているのであれば、
xlswrite("file.xlsx", b.Data);
こちらのソースでいかがでしょうか?
なお、
sim('control1')
だとsimout変数が見えましたが、mw51さんのコードだと確かに同じエラーになりました。

Sign in to comment.


mw51
mw51 on 20 Dec 2018
Edited: mw51 on 20 Dec 2018
xlswrite("file.xlsx", b.Data);に書き換えましたが、またつぎのようなエラーが出ました。どこかでxlswriteの定義をした方が良いですか?
function SetParameter
a = sim('control1','SimulationMode','normal');
b = a.get('simout')
assignin('base','b',b);
CC0=3802.28;
DD0=1.90114;
CC=CC0;
DD=DD0;
Sigma=0.0075;
SS=-1/0.002;
xlswrite("file.xlsx", simout.data);
end
この型の変数ではドット インデックスはサポートされていません。
エラー: SetParameter (line 11)
xlswrite("file.xlsx", b.Data);
  1 Comment
Aoi Midori
Aoi Midori on 20 Dec 2018
xlswriteは、もともとMATLABに備わっている関数なので、定義をする必要はありません。
help xlswrite とMATLABのコマンドウィンドウに入力すると何が出てきますか?
上で書いて頂いているSetParameter関数の中身は、まだsimout.dataのままになっていますが、b.Dataに書き直してエラーになられたということですよね?
SetParameter()実行後に、MATLABのコマンドウィンドウに表示される内容をコピペ頂くこと可能でしょうか?

Sign in to comment.


mw51
mw51 on 20 Dec 2018
Edited: mw51 on 20 Dec 2018
すみません。b.Dataの時のエラーを貼ります。
function SetParameter
CC0=3802.28;
DD0=1.90114;
CC=CC0;
DD=DD0;
Sigma=0.0075;
SS=-1/0.002;
a = sim('control1','SimulationMode','normal');
b = a.get('simout');
assignin('base','b',b);
xlswrite("control1.xlsx", b.Data);
end
エラーは以下の通りです。
この型の変数ではドット インデックスはサポートされていません。
エラー: SetParameter (line 11)
xlswrite("control1.xlsx", b.Data);
  1 Comment
Aoi Midori
Aoi Midori on 20 Dec 2018
粗いデバッグですみませんが、SetParameter()中の下記の1行、最後尾の";"を消して実行した際に、MATLABのコマンドウィンドウには何が表示されるでしょうか?
b = a.get('simout')

Sign in to comment.


mw51
mw51 on 20 Dec 2018
コマンドウィンドウは以下のように表示されています。
>> SetParameter
b =
0 0 0
0 0 0
0 0 0
0.0000 0.0000 0.0000
35.8541 42.5917 30.9378
98.1342 112.5955 86.8019
204.5778 225.5854 186.4492
340.4558 361.5013 319.9429
487.3527 501.0936 471.3789
623.5955 626.4026 617.6954
718.5054 713.4712 721.7541
775.1662 766.9820 783.1869
807.9472 799.5989 817.0950
826.5585 819.4189 834.7573
837.0014 831.4490 843.4543
842.8169 838.7475 847.4822
846.0396 843.1748 849.2115
847.8198 845.8603 849.8763
848.8010 847.4891 850.0843
849.3410 848.4770 850.1168
849.6380 849.0763 850.0944
849.8012 849.4397 850.0634
849.8909 849.6602 850.0385
849.9401 849.7939 850.0217
849.9671 849.8750 850.0115
849.9819 849.9242 850.0058
849.9901 849.9540 850.0027
849.9946 849.9721 850.0012
849.9970 849.9831 850.0005
849.9984 849.9897 850.0002
849.9991 849.9938 850.0000
849.9995 849.9962 850.0000
849.9997 849.9977 850.0000
849.9999 849.9986 850.0000
849.9999 849.9992 850.0000
850.0000 849.9995 850.0000
850.0000 849.9997 850.0000
850.0000 849.9998 850.0000
850.0000 849.9999 850.0000
850.0000 849.9999 850.0000
850.0000 850.0000 850.0000
850.0000 850.0000 850.0000
850.0000 850.0000 850.0000
850.0000 850.0000 850.0000
850.0000 850.0000 850.0000
850.0000 850.0000 850.0000
850.0000 850.0000 850.0000
850.0000 850.0000 850.0000
850.0000 850.0000 850.0000
850.0000 850.0000 850.0000
850.0000 850.0000 850.0000
850.0000 850.0000 850.0000
850.0000 850.0000 850.0000
850.0000 850.0000 850.0000
850.0000 850.0000 850.0000
850.0000 850.0000 850.0000
850.0000 850.0000 850.0000
この型の変数ではドット インデックスはサポートされていません。
エラー: SetParameter (line 11)
xlswrite("control1.xlsx", b.Data);
  1 Comment
Aoi Midori
Aoi Midori on 20 Dec 2018
ありがとうございます。では下記でどうでしょう?
xlswrite("control1.xlsx", b);

Sign in to comment.


mw51
mw51 on 20 Dec 2018
以下のエラーがでました。
エラー: xlswrite (line 226)
ファイル E:\control1.xlsx は、書き込み可能ではありません。別のプロセスでロックされている可能性があります。
エラー: SetParameter (line 11)
xlswrite("control1.xlsx", b);
  1 Comment
Aoi Midori
Aoi Midori on 20 Dec 2018
エクセルのファイルを一度消してからやり直してみてはいかがでしょうか?

Sign in to comment.

Categories

Find more on Audio I/O and Waveform Generation in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!