2013-11-28 27 views
1

我正在嘗試生成HH模型的動作可能性,並且我需要計算alphaN速率。然而,在一些值上,它們是0/0,所以我需要使用L'hopitals規則。我似乎無法使腳本工作。任何人都可以幫忙嗎? 如何爲一系列數字做if語句?像:如何使數字範圍的if語句 - MatLab

if Vm == -50:-49 
     syms Vm; 
     x = diff((0.01.*(10-(Vm+60)))); 
     y = diff((exp((10-(Vm+60))./10)-1)); 
     alphaN = x./y; 
    else 
     alphaN = (0.01.*(10-(Vm+60)))./(exp((10-(Vm+60))./10)-1); % l/ms 
     betaN = 0.125*exp(-(Vm+60)/80);       % 1/ms 
    end 
     plot(alphaN,Vm) 

但是,與上面的腳本,我得到矩陣不同意。我該如何做這項工作?希望這只是我忘記的事情。

感謝您的幫助!

+0

首先你測試一個變量,然後你定義它? –

+0

你會如何處理它? – user2137295

回答

0

您可以使用一個開關/ case結構:

Vm_all = -50:50; %all Vm 

for ii = 1:length(Vm)   
    Vm = Vm_all(ii); 

    switch Vm 
     case {-50,-49} 
      syms Vm; 
      x   = diff((0.01.*(10-(Vm+60)))); 
      y   = diff((exp((10-(Vm+60))./10)-1)); 
      alphaN(ii) = x./y; 
      betaN(ii) = NaN; 
     otherwise 
      alphaN(ii) = (0.01.*(10-(Vm+60)))./(exp((10-(Vm+60))./10)-1); 
      betaN(ii) = 0.125*exp(-(Vm+60)/80);       
    end 
end 

這樣,如果你的特定值是在一排或什麼都無所謂,只要輸入他們逗號分隔。

如果你有你的例外像exc = [-50,-49,-12,42]數組,你可以使用它作爲遵循開關/箱:

case {exc(:)} 
+0

我試過這種方法,但現在它告訴我,使用mupadmex的錯誤。第12行與x./y;錯誤我的Vm值範圍從-60到80 – user2137295

+0

這是符號數學工具箱的錯誤,我沒有。請嘗試沒有任何循環的方程式。 – thewaywewalk

+0

好的!我會嘗試這種方法並回復你。謝謝! – user2137295

3

要測試Vm是否ab之間,你寫

if Vm >= a && Vm <= b %# include a and b 

測試Vm是否爲ab之間的任何整數

if any(Vm == a:b) 
+0

我也試過這個,但我得到一個雙重錯誤。我不知道爲什麼。對不起,如果我與MATLAB不好..也許我錯過了一些簡單的東西?就像我對thewaywewalk說的那樣,我的VM值範圍從-60到80.我只是想告訴matlab在-51到-49之間,取頂部和底部的導數,如果matlab沒有,它會是0/0 = NaN – user2137295

+0

@ user2137295:你說「雙重錯誤」是什麼意思? – Jonas

+0

@ user2137295:事情是,你的錯誤並沒有真正與這個問題有關。你需要將你的代碼分解成一個簡單的例子,讓它適用於'Vm = -49''和另一個單值。然後,你可以嘗試循環,或者,如果你的例外是連續的,jonas的方法 – thewaywewalk