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!