2013-10-04 122 views
0

我對Matlab Simulink很陌生,我試圖在Matlab函數塊中實現一個循環,該循環在整個仿真過程中不間斷地進行。 輸入:如何在Matlab函數塊中實現定時循環

從一個簡單的時鐘「t」,使它繼續下去,直到模擬持續。

「v」和「i」是什麼給出了一個特定的「p *」值,通過稍微改變ouptut「D」我想檢查這個「p *」值是變大還是變小模型「v」和「i」爲「d」的影響)

function D = fcn(v,i,t) 
%#codegen 
p1 = v*i; 
D = 0.5; 
D = D + 0.05; 

while t > 0 

p2 = v*i; 

if p1 > p2 
    D = D - 0.05; 

else 
    D = D + 0.05; 

end; 

p1 = p2; 

end; 

功能塊的說,這是正確的,但是當我開始運行它,它凍結。我想要做的下一步(但從來沒有達到過)是在其中放置一個計時器,執行這個循環可以說每0.01秒或什麼。這是與Matlab功能塊兼容還是有什麼辦法實現這一點?

+0

有沒有中斷,沒有T遞增? – Vuwox

+0

您是否考慮過「If-action子系統」塊和「While迭代子系統」塊?他們使用起來非常方便。 – thewaywewalk

+1

因爲你有一個無限循環,你就凍結了。在t> 0的第一個模擬時間步,當調用這個模塊時,它不會退出while循環。 –

回答

0

你可能想要做if t > 0而不是while t > 0。 Simulink已經有了定時器循環,它會在每個時間步t處調用你的函數fcn。你不想在那裏開始你自己的循環。