2014-02-15 92 views
1

我想繪製濃度和時間之間的關係。Matlab:無法繪製連續函數

濃度和時間之間的關係被表示爲分段函數

C(t) =0 for       t>=0 & t <=td 
    C(t) =A_max(t-td)      t>=td && t<=t_max 
     3 
    C(t) = Σ a(n)*e^-(b(n)*(t-t_max)) t> t_max /exponential decay 
     n=1 

值TD和T_MAX是此分段函數我已經寫了下面的功能,其攝入量的值的輸入值

TD,T_MAX和係數喜歡A1,A2,A3,B1,B2,B2和情節濃度 - 時間

function c_o = Sample_function(td,t_max,a1,a2,a3,b1,b2,b3) 
t =(1:5:5000); % time of the sample post injection in mins 
c_o =(0 : 2275.3 :113765); % activity of the sample calibrated with Average well counter  
A_max= max(c_o);%Max value of Concentration (Peak of the curve) 

for i=1:length(t) 

if((t(i)>0) && (t(i)<=td)) 
    c_o(i)=0; 

elseif((t(i)>=td) && (t(i)<=t_max)) 
    c_o(i)= A_max*(t(i)-td); 

else(t(i)>t_max) 
    c_o(i)=(a1*exp(-b1*(t(i)-t_max)))+(a2*exp(-b2*(t(i)- t_max)))+(a3*exp(-b3*(t(i)-t_max))); 




end 


end 


fprintf('plotting Data ...\n'); 
%figure ; 
plot(c_o(i)); 
xlabel('time of the sample in minutes '); 
ylabel('Activity of the sample Ba/ml'); 
title (' Input function: Activity sample VS time '); 
pause; 
end 

上述功能必須繪製每個t,td.t_max,a1,a2,a3,b1,b2,b3值的濃度值都是用戶給定的,並且曲線圖必須根據t,td.t_max,a1,a2,a3,b1 ,B2,B3。

請請查看我的代碼,如果這是繪製所述分段函數

+2

任何錯誤信息?沒有輸入數據的情況下運行代碼是不可能的。 – Daniel

+0

沒有錯誤函數,我寫的函數是和平明智的函數,並且td,t_max,a1,a2,a3,b1,b2,b3的輸入值可以變化。例如, Sample_function(10,40,1155,2000,2100,5,4,2)但我無法用這些輸入值繪圖 – Devak

+0

檢查'plot'的輸入,其'0'和標量'0'被繪製。 「擦除模式」,「背景」似乎是無效的功能使用? – Daniel

回答

2

我沒有手頭有Matlab的現在,合適的方式,使我的回答可能無法正常工作。
試試這個:
刪除線:

plot(c_o(t(i)),'erasemode','background'); 

,並把下面一行forend後:

圖(c_o);

還有一件事情看起來不錯。你定義t = [1 501 1001 1501 ... 4501]
然後在你的內部改變c_o值爲c_o(t(i))。這意味着您只能修改c_o的第1,第501,1001st ...個值。這是打算?

+0

非常感謝,我沒有意識到這個錯誤,我想修改每個時間點,而不是501st或1001st,應該如何修改我的代碼,以便每個時間點的數據時間不是間隔500 .. – Devak

+0

我能夠獲得情節,但不幸的是我無法正確地想象我的代碼中的指數衰減值,請讓我知道你是否有任何想法來克服我的問題 – Devak

+1

The現在代碼顯示t有10個值,但c_o有更多值。所以,如果你打算繪製c_o vs t,你應該嘗試糾正錯誤。另一方面,嘗試將'c_o(t(i))'改爲'c_o(i)',看看是否有幫助。請記住,在這種情況下,您只會更改c_o的前10個值。 –