-2

length_act_iwhereと呼ばれる変数がたくさんあります

i=1:6

for ループの一部としてそれぞれを順番に呼び出したいのですが、これは機能しません。

for i=1:6
    I={['length_act_',num2str(i)]};
    subplot(3,2,i)
    [f x]=hist(I,1:2:5);
    bar(x,f./trapz(x,f),'barwidth',0.5,'r');
end

これを行う最も効率的な方法は何ですか?

よろしく、

4

1 に答える 1

5

evalループ内で使用します:

eval(['I = length_act_', num2str(i)]);

プロのヒント:
コマンドevalは通常遅く、非効率的です。代わりに配列を使用してください。あなたの場合、各「length_act_i」変数はそれ自体がベクトルであるように見えるため、セル配列を使用する必要があります。たとえば、それを呼び出してlength_act次のように設定します。

length_act = {length_act_1, length_act_2, length_act_3, ...};

次に、次を使用して配列内の各セルにアクセスします。

for i = 1:length(length_act)
    I = length_act{i};

    ...
end

また、変数の名前として「i」と「j」を使用しないことをお勧めします。

于 2013-03-17T16:57:52.713 に答える