2015-05-19 63 views
0

我有使用MATLAB這樣的問題正整數或邏輯:問題:混淆:指數必須

我寫了這個功能:

function E = f(x, lamda) 

E = 1 - exp(-lamda * x); 

end 

當我寫:Prob = f(1000, lamda);其中lamda = 3.4274e-004 我得到這個錯誤:

??? Attempted to access f(1000,0.000341565); index must be a positive integer or logical. 

我知道它需要一個正整數,但爲什麼?我需要lamda纔是真實的。這裏有什麼問題?你能告訴我我哪裏錯了嗎?

+2

檢查您的工作空間中是否有名爲'f'的變量。您的錯誤消息表明您正在嘗試訪問矩陣f的第1000行和第0.000341565列。 –

+0

所以可能是我用f定義了兩個變量,是的? –

+1

您可能已經定義了一個名爲'f'的變量和另一個函數'f'。 –

回答

2

你有一個功能f和變量f在同一時間宣佈。做clear f;然後再次嘗試你的代碼。這裏發生的事情是變量聲明優先於你的函數,所以f會首先嚐試訪問變量f

如果您使用f作爲地方一個變量,不能改變這一點,那麼重命名你的函數比f ......也許...... comp或東西以外的東西。一旦你這樣做,一定要改變你的文件名,這樣它被稱爲comp.m,然後執行:

Prob = comp(1000, lamda); 
1

你的錯誤信息表明,有一個名爲您的工作空間和MATLAB f變量會認爲你只是試圖訪問其元素。使用clear('f')刪除變量f或將該函數重命名爲其他內容,並且應該沒問題。