Octave ztest 中的无效名称参数

问题描述

我正在尝试在 Octave 中创建一个 self.begin = node,但出现了一个奇怪的错误

这是我的代码

Z-test

错误是:

A =[ 7 7 4 5 9 9
     4 12 8 1 8 7
     3 13 2 1 17 7
     12 5 6 2 1 13
     14 10 2 4 9 11
     3 5 12 6 10 7 ];

x = A(:)';
n = length(x);
fprintf(' Volume %d \n',n)
med = mean(x);
fprintf(' Sample mean %f\n',med)
sigma = 5;
m0 = 9;

type = -1; %left tailed test

alpha1 = 0.05; %significance level
alpha2 = 0.01;

fprintf('\n')
fprintf('SIGNIFICANCE LEVEL %f:\n',alpha1)
[h1,p1,ci1,zstat1] = ztest(x,m0,sigma,alpha1,type); 

我想知道为什么会发生这种情况。希望这不是因为我使用 Octave 而不是 Matlab。实际上那是...它适用于 MATLAB Online。

解决方法

该错误的解释非常清楚:Octave 不支持您使用的语法(五个数字参数)。事实上,在 Matlab 中也没有记录该语法,似乎只是为了向后兼容才支持该语法,如 ztest 源代码所示:

if nargin>=4 <p>
   if isnumeric(varargin{1})
       % Old syntax
       %   ZTEST(X,M,SIGMA,ALPHA,TAIL,DIM)
[...]

解决方案是使用 MatlabOctave 官方支持的语法,将超出第三个的参数指定为 parameter,value 对:

[h1,p1,ci1,zstat1] = ztest(x,m0,sigma,'alpha',alpha1,'tail','left');