ライブスクリプトで一定の行区間を実行する方法

18 views (last 30 days)
Yuki Koyama
Yuki Koyama on 1 Dec 2021
Commented: Yuki Koyama on 1 Dec 2021
ライブスクリプトで一定の行区間を実行する方法はありますか?
つまり、一定の行区間を別のスクリプトに分けずに実行する方法はありますか?
たとえば、以下のようなコードをabcd.mlxとして保存します。
a=rand;
b=rand;
c=rand;
d=rand;
そして、別のスクリプト上で、
abcd;
と実行すると、abcd.mlxが実行され、変数a,b,c,dがワークスペースに保存されます。
これをスクリプトを分けずに行いたいです。
関数化してもよいのですが、変数が増えると全部を返し値に設定することが大変になるため、関数化しない方法が知りたいです。つまり、指定区間の実行時の変数を全て保持しておきたいということです。

Accepted Answer

Kojiro Saito
Kojiro Saito on 1 Dec 2021
スクリプトにセクションを区切るのがご要望にあっていると思われます。
ライブスクリプトで「セクション区切り」をクリックして、セクションを分けられます。
セクション毎に「セクションの実行」か「実行して次に進む」でマウスカーソルが置いてあるセクションだけを実行できます。
  3 Comments
Kojiro Saito
Kojiro Saito on 1 Dec 2021
セクション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
Yuki Koyama
Yuki Koyama on 1 Dec 2021
詳細なご回答ありがとうございます。
セクションの一部を呼び出すことは現時点ではできないということで承知しました。関数化することといたします。
global変数の使用法は知らなかったため勉強になりました。
いつもご回答ありがとうございます。またよろしくお願いいたします。

Sign in to comment.

More Answers (0)

Categories

Find more on プログラミング in Help Center and File Exchange

Products


Release

R2021b

Community Treasure Hunt

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

Start Hunting!