Error: ()-indexing must appear last in an index expression.
1 次查看(过去 30 天)
显示 更早的评论
Hello,
I am currently stuck on a homework problem and could use some help.
I am supposed to write a function that takes as input 2 variables and outputs parameter estimates for the slope and bias of a cumulative Gaussian psychometric curve to fit to the data.
So far I have:
function [bias, slope] = psychometricFit(x, y)
p = normcdf(x, y, 1)
Gaussian = @(p,x) (0.5*erfc(x-p(1)/(p(2)(sqrt(2)))))
coefEst = nlinfit(x,y,Gaussian,[1 1])
end
I keep getting an error that says:
Error: File: psychometricFit.m Line: 3 Column: 37
()-indexing must appear last in an index expression.
I'm not sure how to fix this or "index" it properly.
Thank you
1 个评论
Stephen23
2017-2-27
As well as the parentheses issue explained by Guillaume below, there is another problem: the third line defines p as an input to an anonymous function, and so the p on the second line
p = normcdf(x, y, 1)
is never used.
回答(1 个)
Guillaume
2017-2-27
In your anonymous function what is
p(2)(sqrt(2))
meant to do? It's clearly not valid matlab. Perhaps you are missing an operator.
3 个评论
Guillaume
2017-2-27
modelFun = @(p,x)*something
is not valid matlab either.
In
f(x) = 1/2*erf((x-mu)/(sigma(sqrt(2)))
sigma(sqrt(2)) is not even mathematically valid notation (unless sigma is a function, which it clearly isn't if it's the value of the standard deviation). The actual definition of the CDF of the normal distribution is:
f(x) = 1/2*erf((x-mu)/(sigma*sqrt(2))
As hinted in my answer, you are missing an operator.
See also, the comment by Stephen about p.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Startup and Shutdown 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!