MATLAB: Ttest error – undefined variable – error nanmean nanvar etc.

ttestttest2

Dear All,
I am trying to perform a simple statistics:
two vectors and a ttest or ttest2.
I have done that before, but now I am getting an error. Ranksum works instead.
e.g.1) ttest(x)
Undefined variable "coder" or class "coder.internal.scalarEg".
Error in nan_sum_or_mean (line 11)
XZERO = coder.internal.scalarEg(x);
Error in nanmean (line 7)
y = nan_sum_or_mean('mean',varargin{:});
Error in ttest (line 131)
xmean = nanmean(x,dim);
e.g.2) ttest2(x,y)
Undefined function or variable 'eml_is_const'.
Error in nanvar (line 29)
coder.internal.assert(eml_is_const(dim), …
Error in ttest2 (line 169)
s2x = nanvar(x,[],dim);
I found in the forum several suggestions like:
-make sure you have statistics toolbox. I have statistics and machine learning and I re-installed everything from scratch, just to be extra sure.
-make sure you are using "official" functions and I do.
I have no clue as to why it is not working.
I am using matlab 2016b
Can anyone help me figure it out?
Thank you in advance,
Ilaria

Best Answer

Error in nanvar (line 29)
coder.internal.assert(eml_is_const(dim), ...
In R2016b, the release you are using, nanvar has 30 lines of comments and then one line of narginchk and then one line of calling var() with 'omitnan' . There is no coder.internal.assert call in it.
... Not unless one of the following is true:
  1. You are attempting to compile the code using MATLAB Coder which would be important to know for this purpose; OR
  2. You are calling nanmean in Simulink within a MATLAB Function Block, and you have Acceleration turned on or Rapid Acceleration turned on; OR
  3. You have found the files intended to be used for code replacement for nanvar when using MATLAB Coder (or Simulink Coder), and you have put those directories onto your MATLAB Path earlier than the correct directories. If so then restoredefaultpath; rehash toolboxcache;