在MATLAB中使用均值函数会产生不同的结果

时间:2019-03-07 22:15:23

标签: matlab matrix

我最近才开始使用MATLAB,因为它非常适合机器学习等。

当前,我正在研究某种类型的分类,如果我试图解释要完成的所有事情,那将是漫长而复杂的分类,因此,我只说出给我带来麻烦的确切代码。

因此,通过某些函数,我得到了1010 x 1764 single类型的矩阵。假设矩阵称为train_examples_2_2,如您在下面的屏幕截图的右侧所见。

enter image description here

从上面的屏幕快照(在右侧)中还可以看到对meanstd的调用:

mean = mean(train_examples_2_2)
std = std(train_examples_2_2)

获得正确的结果。

但是,当我多次运行相同的代码时,有时在mean = mean(train_examples_2_2)行会出现错误,指出:

  

数组索引必须为正整数或逻辑值。

我关心的确切代码是:

mean = mean(train_examples_2_2) % <----- error appears here
std = std(train_examples_2_2)
for i=1:size(train_examples_2_2,1)
   train_examples_2_2(i,:) = train_examples_2_2(i,:) - mean;
   train_examples_2_2(i,:) = train_examples_2_2(i,:) ./ std;
end
% end of standardisation process

其中train_examples_2_2由我未创建也无法修改的某些功能提供。

根据MATLAB文档:

  

如果A是矩阵,则mean(A)返回包含   每列的平均值。

这是我在打开Matlab时第一次运行代码的结果,但此后会产生上述错误。

我正在使用MATLAB R2018b。

我正在犯一个简单的错误,或者这可能是一个错误?

感谢您抽出宝贵的时间来帮助您。

1 个答案:

答案 0 :(得分:3)

不同于让我们说python,您不应该/不能/不能重新定义函数名或默认变量。

mean = mean(train_examples_2_2) % <----- error appears here

matlab不能区分可调用的mean()函数和变量“ mean”。尤其令人困惑,因为索引和调用sth是使用圆括号完成的。

所以...?

称您的变量为……。除mean以外。 mean_已经可以解决问题。