数学建模社区-数学中国

标题: 【求助】一个matlab 简单程序问题 [打印本页]

作者: HNzhangjie    时间: 2012-8-10 10:44
标题: 【求助】一个matlab 简单程序问题
X=[2.0         1500        20000         5.5        5        9
2.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=[Z1,Z2,Z3];
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
你的目的是什么?
作者: HNzhangjie    时间: 2012-8-10 10:52
zhangc_ningbo 发表于 2012-8-10 10:48
你的目的是什么?

用极差变换法把X归一化,得到归一矩阵Z
作者: 匿名    时间: 2012-8-10 11:41
当你写这一行程序
作者: gaoxian    时间: 2012-8-10 11:43
for j=5:6 Z3(:,j)=(X(:,j)-min(X(:,j)))/(max(X(:,j))-min(X(:,j)));已经默认Z3是一个四行六列的矩阵只不过前面四列都默认为0后面两列存储了数据,而后面Z=[Z1,Z2,Z3];这时候你的Z是一个四行十列的矩阵,所以中间会有四列的0
作者: gaoxian    时间: 2012-8-10 11:48
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=[Z1,Z2,Z3];
        end
    end
end
Z
这样就可以了
作者: gaoxian    时间: 2012-8-10 11:51
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=[Z1,Z2,Z3]
不过我这样写和你那样写是同样的作用,不明白你为什么要嵌套进去,其实这样更好理解吧
作者: HNzhangjie    时间: 2012-8-10 14:53
gaoxian 发表于 2012-8-10 11:51
for j=1:3
    Z1(:,j)=(X(:,j)-min(X(:,j)))/(max(X(:,j))-min(X(:,j)));
end

谢 啦~ 编程不是很好,在学习中~
作者: k_is_power    时间: 2012-8-10 16:35
还不错,就是不知道怎么运行




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5