Matlab 均值和方差维度不匹配

Matlab 均值和方差维度不匹配,matlab,machine-learning,mean,variance,Matlab,Machine Learning,Mean,Variance,我需要计算训练集的均值和方差来进行异常检测,但不断得到维数不匹配误差 mean_train = 1/(num_train )* sum(Xtrain); var_train = 1/(num_train )* sum(Xtrain - mean_train).^2; 首先显示所有数据,因为我们无法重现您的错误。 我建议您接受此错误,因为: mean_train或num_train是一个向量,我们不能简单地用Xtrain乘以或减去它 但你的答案是: 只需使用内置的Matlab函数和。这使您可以

我需要计算训练集的均值和方差来进行异常检测,但不断得到维数不匹配误差

mean_train = 1/(num_train )* sum(Xtrain);
var_train =  1/(num_train )* sum(Xtrain - mean_train).^2;

首先显示所有数据,因为我们无法重现您的错误。 我建议您接受此错误,因为:
mean_train
num_train
是一个向量,我们不能简单地用
Xtrain
乘以或减去它

但你的答案是: 只需使用内置的Matlab函数和。这使您可以这样使用它:

mean(Xtrain)
避免使用辅助变量,如
num\u train


我检查了您的代码,发现错误:
Xtrain
是一个100x2的阵列。使用
sum
返回1x2数组!您可以在帮助中阅读此内容:

如果A是矩阵,那么sum(A)返回包含该和的行向量 每列的

因此,你的下一步行动:

mean_train = 1/(num_train )* sum(Xtrain);
返回1x2数组,matlab无法执行此操作:
Xtrain-mean\u train

答案很简单:
像这样使用
sum
两次:
sum(sum(Xtrain))

试着观察变量的大小并调试完整的代码可以在这里找到:代码的测试可以在这里找到:@JeandeToit我检查了你的代码,发现了错误。看我编辑的答案!