我最近才开始使用MATLAB,因为它非常适合机器学习等。
当前,我正在研究某种类型的分类,如果我试图解释要完成的所有事情,那将是漫长而复杂的分类,因此,我只说出给我带来麻烦的确切代码。
因此,通过某些函数,我得到了1010 x 1764 single
类型的矩阵。假设矩阵称为train_examples_2_2
,如您在下面的屏幕截图的右侧所见。
从上面的屏幕快照(在右侧)中还可以看到对mean
和std
的调用:
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。
我正在犯一个简单的错误,或者这可能是一个错误?
感谢您抽出宝贵的时间来帮助您。
答案 0 :(得分:3)
不同于让我们说python,您不应该/不能/不能重新定义函数名或默认变量。
mean = mean(train_examples_2_2) % <----- error appears here
matlab不能区分可调用的mean()
函数和变量“ mean”。尤其令人困惑,因为索引和调用sth是使用圆括号完成的。
所以...?
称您的变量为……。除mean
以外。 mean_
已经可以解决问题。