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
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
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 个评论
Taylor C
Taylor C 2017-2-27
The cumulative Gaussain function is
f(x) = 1/2*erf((x-mu)/(sigma(sqrt(2)))
my teacher gave us a hint that mu is the parameter for the bias and sigma is the parameter for the slope
Guillaume
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 CenterFile Exchange 中查找有关 Startup and Shutdown 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by