2016-11-07 8 views
0

私はMatlabで関数を記述し、繰り返し呼び出す必要があります。 これは私のコードです:MATLABで関数を繰り返し呼び出すにはどうすればよいですか?

function T=FirstTemperature() 
clc 
T=0.8; 

randVariable=10*rand(1,2); 
ErandVariable=Objectivef(randVariable(1),randVariable(2)); 

present=randVariable; 
Epresent=ErandVariable; 

DEpositive=0; 
positive=0;%for counting DeltaEpositive 



for i=1:10 

randVariable=10*rand(1,2); 
ErandVariable =Objectivef(randVariable(1),randVariable(2)); 

DE=(ErandVariable-Epresent); 

if(DE<0) 
    present=randVariable; 
    Epresent=ErandVariable; 
    % disp('i move there') 

else 
    DEpositive=DE+DEpositive; 
    positive=positive+1;%for counting 

    P=exp(- (DE)/ (2.038*T)); 
    a=rand(1); 

    if(P>a) 
     present=randVariable; 
     Epresent=ErandVariable; 
     %disp('with A probability i accepted') 
    end 

end 



end 

    x0=0.9; 
averag=DEpositive/positive;%average of deltapositive 
T=averag/log(x0); 

end 

、私はこの方法では、スクリプトファイルにこの関数を繰り返し呼び出す:意識することのために、私は「こんにちは」を表示したい

for k=1:10 
disp('Hello') 


T=FirstTemperature() 

エンド

どのように実行されますか。これは出力です:

Hello 

T = 

-135.9965 

>> 

私のコードは10回繰り返す代わりに1回だけ実行されます。どうすればいいですか?

+0

disp( 'Hello')の後にセミコロンが必要なように見える –

+0

@JeremyKahanいいえ、このコードを機能なしで実行し、 'Hello'、10回表示 –

+0

disp( 'Hello')を削除すると、ちょっと温度が上がる? –

答えて

2

この関数はclcを呼び出し、画面をクリアします。関数は10回実行されますが、前回の出力のみが表示されます。

+0

これは理由ではない、私は最初の行でそれを呼び出し、それの後にループを使用し、私は 'clc'なしで自分のコードを実行し、違いは生じなかった。 –

+0

'clc'を削除してみてください。動作します。あなたは*関数*の最初の行でそれを呼び出します。この関数全体、 '関数T = FirstTemperature()'と最後の 'end'の間のすべては、ループによって10倍実行されます。 – hbaderts

関連する問題