ライブスクリプトで一定の行区間を実行する方法
29 ビュー (過去 30 日間)
古いコメントを表示
ライブスクリプトで一定の行区間を実行する方法はありますか?
つまり、一定の行区間を別のスクリプトに分けずに実行する方法はありますか?
たとえば、以下のようなコードをabcd.mlxとして保存します。
a=rand;
b=rand;
c=rand;
d=rand;
そして、別のスクリプト上で、
abcd;
と実行すると、abcd.mlxが実行され、変数a,b,c,dがワークスペースに保存されます。
これをスクリプトを分けずに行いたいです。
関数化してもよいのですが、変数が増えると全部を返し値に設定することが大変になるため、関数化しない方法が知りたいです。つまり、指定区間の実行時の変数を全て保持しておきたいということです。
0 件のコメント
採用された回答
Kojiro Saito
2021 年 12 月 1 日
スクリプトにセクションを区切るのがご要望にあっていると思われます。
ライブスクリプトで「セクション区切り」をクリックして、セクションを分けられます。
セクション毎に「セクションの実行」か「実行して次に進む」でマウスカーソルが置いてあるセクションだけを実行できます。
参考ドキュメント:ライブ スクリプトのセクションの実行
3 件のコメント
Kojiro Saito
2021 年 12 月 1 日
セクション2からセクション1の部分を呼び出すことはできないと思います。同じスクリプト内でローカル関数として
function abcd
%
end
で定義するか、abcd.mlxという別のスクリプトにするかが必要になります。
別ののスクリプトにすれば、a~dの変数はメインスクリプトと共有されますが、ローカル関数の場合は共有されません。
function [a,b,c,d] = abcd
a=rand;
b=rand;
c=rand;
d=rand;
end
のようにローカル関数の出力を[a,b,c,d]で定義するか、グローバル変数を使ってメインスクリプトと変数を共有する必要があります。
例:
メインスクリプト
global a b c d
for i=1:10
abcd;
end
ローカル関数
function abcd
global a b c d
a=rand;
b=rand;
c=rand;
d=rand;
end
その他の回答 (0 件)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!