【求助】一个matlab 简单程序问题
X=[2.0 1500 20000 5.5 5 92.5 2700 18000 6.5 3 5
1.8 2000 21000 4.5 7 7
2.2 1800 20000 5.0 5 5];
for j=1:3
Z1(:,j)=(X(:,j)-min(X(:,j)))/(max(X(:,j))-min(X(:,j)));
for j=4
Z2=(min(X(:,j))-X(:,j))/(max(X(:,j))-min(X(:,j)));
for j=5:6
Z3(:,j)=(X(:,j)-min(X(:,j)))/(max(X(:,j))-min(X(:,j)));
Z=;
end
end
end
Z
结果为
Z =
0.2857 0 0.6667 -0.5000 0 0 0 0 0.5000 1.0000
1.0000 1.0000 0 -1.0000 0 0 0 0 0 0
0 0.4167 1.0000 0 0 0 0 0 1.0000 0.5000
0.5714 0.2500 0.6667 -0.2500 0 0 0 0 0.5000 0
中间有四列0是由于
for j=5:6
Z3(:,j)=(X(:,j)-min(X(:,j)))/(max(X(:,j))-min(X(:,j)));
这里出了问题,但不知道是什么问题。 望高人指教 你的目的是什么? zhangc_ningbo 发表于 2012-8-10 10:48 static/image/common/back.gif
你的目的是什么?
用极差变换法把X归一化,得到归一矩阵Z 当你写这一行程序 for j=5:6 Z3(:,j)=(X(:,j)-min(X(:,j)))/(max(X(:,j))-min(X(:,j)));已经默认Z3是一个四行六列的矩阵只不过前面四列都默认为0后面两列存储了数据,而后面Z=;这时候你的Z是一个四行十列的矩阵,所以中间会有四列的0 for j=1:3
Z1(:,j)=(X(:,j)-min(X(:,j)))/(max(X(:,j))-min(X(:,j)));
for j=1
Z2=(min(X(:,j+3))-X(:,j+3))/(max(X(:,j+3))-min(X(:,j+3)));
for j=1:2
Z3(:,j)=(X(:,j+4)-min(X(:,j+4)))/(max(X(:,j+4))-min(X(:,j+4)));
Z=;
end
end
end
Z
这样就可以了 for j=1:3
Z1(:,j)=(X(:,j)-min(X(:,j)))/(max(X(:,j))-min(X(:,j)));
end
for j=1
Z2=(min(X(:,j+3))-X(:,j+3))/(max(X(:,j+3))-min(X(:,j+3)));
end
for j=1:2
Z3(:,j)=(X(:,j+4)-min(X(:,j+4)))/(max(X(:,j+4))-min(X(:,j+4)));
end
Z=
不过我这样写和你那样写是同样的作用,不明白你为什么要嵌套进去,其实这样更好理解吧 gaoxian 发表于 2012-8-10 11:51 static/image/common/back.gif
for j=1:3
Z1(:,j)=(X(:,j)-min(X(:,j)))/(max(X(:,j))-min(X(:,j)));
end
谢 啦~ 编程不是很好,在学习中~ 还不错,就是不知道怎么运行
页:
[1]