Effacer les filtres
Effacer les filtres

Undefined function or variable 'lgamma'.

24 vues (au cours des 30 derniers jours)
NMarco
NMarco le 25 Jan 2021
Commenté : Walter Roberson le 8 Fév 2021
Hello experts,
as the title says I have a problem with this undefined 'lgamma'.
I'm trying to run an ANCOVA using the function aoctool() but it stops and throws me that error.
Below I post the entire message:
Undefined function or variable 'lgamma'.
Error in betapdf (line 60)
+ lgamma (a + b) - lgamma (a) - lgamma (b));
Error in betainv (line 87)
h = (betacdf (y_old, a, b) - x) ./ betapdf (y_old, a, b);
Error in finv (line 58)
inv(k) = ((1 ./ betainv (1 - x(k), n/2, m/2) - 1) * n / m);
Error in aoctool>getyvalues (line 777)
crit = sqrt(df1 * finv(1-alpha/bonf, df1, df2));
Error in aoctool (line 335)
[newy, ~, ycov] = getyvalues(allx, allgrps, model, stats, ud);
I'm working on MATLAB R2018b.
Is this related with a MATLAB issue or (most likely) it's just me erroneously defining the ANCOVA variables?
Thank you for your help!
Marco
  3 commentaires
Star Strider
Star Strider le 26 Jan 2021
You need to Contact Support .
I opened betapdf.m in the MATLAB editor, and the last line of the function is 58. That line contains a betaln call, and there are no gamma function calls of any kind in the entire function. (I am using R2020b.)
NMarco
NMarco le 26 Jan 2021
@Adam Danz , @Star Strider thank you for your feedback.
The lgamma is from a internal MATLAB code, that's why I'm concerned about this error.
I will contact the support, I guess..
Thanks anyway!

Connectez-vous pour commenter.

Réponse acceptée

Walter Roberson
Walter Roberson le 26 Jan 2021
I see relevant discussion at https://github.com/wichmann-lab/psignifit/issues/4 . The implications there are that you are picking up a third-party toolbox version of finv that is invoking a third-party betainv that is invoking a third-party betapdf that is asking for lgamma that has not been part of MATLAB for a number of years.
The fix would be to move those that third-party finv (and related) out of your MATLAB path.
By the way, the Mathworks long gamma function is gammaln() these days, and is part of basic MATLAB.
  4 commentaires
NMarco
NMarco le 8 Fév 2021
Cannot you use one before or after the other? Like, use SPM and than make calculations using pTFE upon removing that folder from the path.
Walter Roberson
Walter Roberson le 8 Fév 2021
https://miplab.epfl.ch/BrainHack/Practice/Utilities/spm12/external/fieldtrip/external/stats/ shows that lgamma.m is defined in the external/fieldtrip/external/stats directory that is installed with SPM12.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Introduction to Installation and Licensing dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by