たまに使用するこの機能.すぐに忘れてしまうので,忘備録として投稿します.
MATLAB の M ファイルはテキストなので,古いバージョンで開くことがでできます.それに対して,Simulink モデルを古いバージョンで開くためには,作成したバージョン以降で Simulink モデルを開き,以下のように「以前のバージョンにエクスポート」という作業を行う必要があります.
変更したい Simulink モデルがたくさんあったり,複数のバージョンに変換したいような場合,いちいち,マウスでこのような作業をするのはめっちゃ面倒.
というわけで,ここでは,コマンドベースで Simulink モデルを以前のバーションに変換する方法を説明します(需要は少ないでしょうが).
カレントディレクトリを
- $\verb+D:\Advent_Calendar_2024+$
とし,
- $\verb+D:\Advent_Calendar_2024\R2024b\hoge.slx+$(以前のバージョンで使用できるように変換)
- $\verb+D:\Advent_Calendar_2024\R2024b\design.m+$(単なるコピー)
を以前のバージョン用に変換します.そのために,スクリプト M ファイル
$\verb+trans_ver_simulink.m+$
mkdir R2018a
mkdir R2022a
mkdir R2023a
mkdir R2024a
open_system('R2024b/hoge.slx');
Simulink.exportToVersion('hoge','R2018a/hoge_R2018a.slx','R2018a')
Simulink.exportToVersion('hoge','R2022a/hoge_R2022a.slx','R2022a')
Simulink.exportToVersion('hoge','R2023a/hoge_R2023a.slx','R2023a')
Simulink.exportToVersion('hoge','R2024a/hoge_R2024a.slx','R2024a')
close_system('R2024b/hoge.slx');
copyfile('R2024b/design.m','R2018a/design.m');
copyfile('R2024b/design.m','R2022a/design.m');
copyfile('R2024b/design.m','R2023a/design.m');
copyfile('R2024b/design.m','R2024a/design.m');
を実行します.その結果,
trans_ver_simulink.m の実行結果
>> trans_ver_simulink
エクスポートに成功しました: Simulink R2018a で使用するために 'D:\Advent_Calendar_2024\R2018a\hoge_R2018a.slx' が作成されました。
ans =
'D:\Advent_Calendar_2024\R2018a\hoge_R2018a.slx'
エクスポートに成功しました: Simulink R2022a で使用するために 'D:\Advent_Calendar_2024\R2022a\hoge_R2022a.slx' が作成されました。
ans =
'D:\Advent_Calendar_2024\R2022a\hoge_R2022a.slx'
エクスポートに成功しました: Simulink R2023a で使用するために 'D:\Advent_Calendar_2024\R2023a\hoge_R2023a.slx' が作成されました。
ans =
'D:\Advent_Calendar_2024\R2023a\hoge_R2023a.slx'
エクスポートに成功しました: Simulink R2024a で使用するために 'D:\Advent_Calendar_2024\R2024a\hoge_R2024a.slx' が作成されました。
ans =
'D:\Advent_Calendar_2024\R2024a\hoge_R2024a.slx'
という結果が得られます.
古いバージョン R2018a 用に変換された Simulink モデルを実行すると,正常に動作することが確認できます.
以上,小ネタでした.