2016-11-07 250 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」爲知曉它如何運行。這是輸出:

Hello 

T = 

-135.9965 

>> 

所以,我的代碼只運行一次而不是重複10次,我該怎麼辦?

+0

看起來你需要一個分號後顯示('你好') –

+0

@JeremyKahan不,我運行這個代碼沒有函數&它顯示'你好',10倍 –

+0

如果你刪除disp('你好')你仍然得到一個溫度? –

回答

2

你的函數調用clc,它清除屏幕。該函數運行10次,但只能看到上次輸出。

+0

不,這不是原因,我在第一行調用它,然後在它之後使用一個循環,我沒有使用'clc'運行我的代碼,並且沒有發生任何差異。 –

+0

嘗試刪除'clc' - 它的工作原理。你可以在*函數的第一行中調用它。這個函數,函數T = FirstTemperature()和最後一個結束符之間的所有內容都由循環運行10次。 – hbaderts