2017-02-26 39 views
1

我正在模擬熱水,我需要創建特定條件,我不知道如何正確創建它。MATLAB - 如何創建具有特定要求的條件

水的所需溫度爲55°C。最低溫度是50°C。最高溫度爲70°C。

我有兩種類型的加熱 - 電加熱將水加熱到所需溫度55°C,光伏加熱可將水加熱到最高溫度。

我需要創建一個條件,只有當溫度降到50°C以下才開啓電加熱,並在達到55°C後停止。如果溫度在50和55之間,而在50°C之前沒有先前下降,則只有光伏加熱是可能的,並且電加熱關閉。

溫度每分鐘檢查一整年。條件將被放置循環。

現在,我有沒有條件需要的溫度(55°C)是這樣的:

for i = 1:525600 
    if (temeprature(i) < 70) 
      heating = 1; %heating from photovoltaic 
     else 
      heating = 0; % heating off 
     end 
     if (temperature(i) < 50) 
      heating = 2; % electric heating when there is not enough power from PV     
     end 
    if heating==0 
    calculations 
    calling functions 
    etc. 
    ... 
    end 
    if heating==1 
    calculations 
    calling functions 
    etc. 
    ... 
    end 
    if heating==2 
    calculations 
    calling functions 
    etc. 
    ... 
    end 
computing temperature with results from conditions 
end 

感謝您的任何建議。

+0

你需要一個switch語句,case(temp <50)打開電加熱,在while循環中加1加熱到50,然後打開並進入while語句的光伏加熱,直到+1 55.如果(溫度> 50 &&溫度<55)打開光伏發熱直到55。 –

+0

也許我不明白你的意思,但我不認爲這會做到這一點。我不希望它跳入光伏發電加熱器中......一旦它下降到50以下,電加熱將一直持續到55.溫度可以升高0.1或0.5°C(取決於加熱器的功率)。另外我需要循環來保持計數分鐘。如果它跳進去,而它不會計算「我」直到離開週期(或者我錯了嗎?)。也許簡化(現在)會更好。假設只有電加熱是可能的。這意味着「加熱器== 2」和「加熱器== 0」的條件。 –

+0

50-55之間的溫度,不發熱。如果它下降到50以下,加熱到55. –

回答

0

我會做一個功能與電加熱持久變量:

function [el, pv] = whatHeating(T) 
persistent elHeat 
if (isempty(elHeat)) 
    elHeat = false; % Initialize to false. The only thing where it matters is if you start at 50<T<55. 
end 

if (T < 50) 
    elHeat = true; 
elseif (T > 55) 
    elHeat = false; 
end 
el = elHeat; % You can't return persistent variable directly. 

if (T > 70) 
    pv = false; 
else 
    pv = true; 
end 

然後你只需要調用這個函數在主之一。

+0

如果我使用(調用)你的函數,而不是像在我的第一篇文章中的條件那樣:'[el,pv] = whatHeating(T(i))'and'if el ==真 計算 調用函數 等 ... end'和'如果EL ==假 計算 調用函數 等 ... end'和'如果光伏==真 計算 呼叫功能 等。 ... end'只有光伏發熱開啓,並且電力全部關閉。編輯:我不知道如何將整塊代碼添加到評論中,所以我這樣做了。 –

+0

@LamaObecna我試過了,它對我來說似乎很好。不知道是什麼問題。 T = [53,52,51,50,49,51,53,55,57,60,63,67,70,72,75,70, 56,60];產生的 el = [0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0]和 pv = [1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1]。對於i = 1:長度(T) [el(i),pv(i)] = whatHeating(T(i)),測試碼爲 。 結束 –

+0

我想問你是否會如此友善,看看劇本。我把它放在這裏:https://webshare.cz/file/6QL57g2rv6/simulation-7z 我真的不明白爲什麼它不工作。我用我的母語(捷克語)重寫了大部分英語。有3個文件,你的功能,我的模擬和PV數據(它們是自動加載的)。我刪除了所有現在不重要的東西。主要的「事情」正在循環中發生(正如我在第一篇文章中發表的那樣),語法相同。其他的東西只是參數定義和顯示結果。繪製一張年度溫度圖。 –

相關問題