a * b * y中的错误:不合格数组

阿里·汗
Cold <- matrix(c(1.89,3.76,2.47,4.76),2,2,byrow=TRUE)
X <- matrix(c(0,2,2,4,3,6),3,2,byrow=TRUE)
y <- matrix(c(1,5,6))

m <- 2;
R <- 2;
Ec <- 0.001;
p <- 1/(m-1)

C <- mat.or.vec(R,R)
M <- length(X[,1])
mu <- mat.or.vec(M,R)
#mu=matrix(,M,R)
Q1=0;Q2=0;
pl <- 1/(m-1)
F=0;
it <- 0;
ph <- 1;


repeat
{




####################
for (i in 1:M)
{
for (j in 1:R)
{
Q1=0;Q2=0;F=0
Q1 <- sum((X[i,]-Cold[j,])^2)
for (k in 1:R)
{
Q2 <- sum((X[i,]-Cold[k,])^2)
F=Q1/Q2+F
}
mu[i,j] <- solve(F)
}
}


####################






##########centre Update
B=mat.or.vec(1,2);
for (j in 1:R)
{
A=mat.or.vec(1,2);
for (i in 1:M)
{
A=X[i,]*mu[i,j]^m+A

#C=(t(mu)*X)/colSums(mu)
}
B=colSums(mu^m)
C[j,] <- A/B[j];
}
#########centre update end



ph <- abs(sqrt(sum((C - Cold)^2)))
Cold <- C
##################
if(ph < Ec)  
{
break;
}
it <- it+1
}
##################


X
plot(X[,1],X[,2],pch=5,lwd=6,col = "blue",cex = .6)
for(i in 1:length(C[,1]))
{
points(C[i,1],C[i,2],pch=4,lwd=4)       
}

library(MASS)

w <- rep(1,nrow(X))
X <- cbind(w,X)
X <- as.matrix(X)
para <-  mat.or.vec(3,R)
 #i<-0

h <- mat.or.vec(3,3)
a <- mat.or.vec(3,3)
b <- mat.or.vec(3,3)
for(i in 1:R)
#while (i<3)
{
h <- t(X)*(diag(mu[,i]))^2*X
a <- solve(t(X)*(diag(mu[,i]))^2*X)
b <- (t(X)*diag(mu[,i])^2)
para[,i] <- a*b*y
}

这是用于聚类的代码,它对数据进行聚类,效果很好,但是在计算规则结果的最后部分给了我一个错误,最终使我付出了代价。它显示了错误“ *中的错误” b * y:不一致的数组”,有人可以帮助我吗?

里奇棉花

短语“可整合数组”是线性代数术语,表示“可以明智地一起使用的数组”。

例如,如果要将两个数组加在一起,则它们的大小必须相同。

事实上,由于在标准的数学运算符,+-*/^,等操作元件逐元素,总是需要的阵列(或矩阵)为相同的大小。

对于(内部)矩阵乘法,%*%第一个矩阵中的列数必须与第二个矩阵中的行数相同。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章