2015-05-19 36 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或将该函数重命名为其他内容,并且应该没问题。