声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 10644|回复: 19

[编程技巧] 怎么归一化

[复制链接]
发表于 2006-8-24 17:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
p=[397.4 374.4 364.9 351.8 350.8 377.3 407.8 458.7 475.0 495.5 506.3 525.7 514.0 477.3 448.4 456.9 474.5 484.1 501.4 571.8 609.9 580.8 527.3 461.1 11.7 -8.7 0;
   404.1 370.2 357.3 338.0 336.8 345.2 383.9 420.3 436.1 483.7 477.3 487.7 481.9 434.0 426.6 438.7 447.9 451.5 474.2 550.0 596.2 570.9 510.5 440.5 17.2 -0.2 0;
   385.0 353.7 330.2 333.7 323.7 333.4 338.9 425.3 456.7 475.9 456.6 479.1 463.0 419.5 416.6 430.5 432.7 456.7 479.4 552.1 600.8 557.9 516.6 447.4 22.1 1.3 0;
   387.3 365.1 348.2 344.2 341.0 347.1 588.6 448.3 465.8 490.9 491.1 505.8 497.6 452.3 440.8 458.7 458.8 478.7 509.9 587.8 607.5 580.5 531.9 459.7 19.8 6.7 0;
   409.2 375.9 367.9 361.6 358.7 369.2 393.8 432.2 465.7 489.6 486.7 494.4 493.7 443.1 437.5 446.5 447.2 461.7 492.5 553.2 617.4 584.6 535.9 467.2 14.1 3.1 0;
   406.1 374.8 354.6 349.4 341.9 358.8 384.1 410.1 467.7 490.8 471.1 469.2 459.8 431.2 426.4 431.1 448.3 460.9 490.4 545.1 597.2 573.4 518.5 431.0 19.5 1.9 0;
   378.4 344.1 334.6 329.2 333.6 341.7 384.3 440.2 464.1 474.0 471.4 477.8 465.1 424.9 426.0 443.4 450.6 465.5 506.2 569.1 604.3 575.9 524.5 445.4 21.2 5.0 0;
   375.0 348.3 345.7 337.9 324.7 341.4 370.3 413.8 436.1 447.2 457.9 484.1 485.1 434.6 436.6 445.7 446.5 466.3 489.0 534.0 615.0 581.8 523.0 437.9 16.7 5.7 0;
389.2 354.4 340.6 335.3 331.1 353.2 387.6 434.6 460.7 488.0 491.0 510.6 502.7 460.2 456.2 467.3 470.5 502.4 529.3 574.3 616.4 585.2 529.9 447.0 15.6 2.5 0.5;
397.2 374.1 364.4 339.4 341.6 352.5 390.7 451.4 483.8 516.2 497.7 517.2 521.8 480.0 474.3 489.3 502.1 518.6 568.0 621.5 666.8 631.3 575.8 497.2 15.4 4.2 1;
442.5 416.7 408.4 400.8 390.0 412.8 437.1 493.3 517.2 543.1 533.1 532.4 535.2 476.7 485.2 494.0 506.6 515.4 555.9 601.5 670.6 646.3 590.8 510.4 15.7 0.2 0;
452.4 437.6 406.2 389.6 394.0 504.2 426.1 475.6 518.6 542.2 530.0 530.7 535.9 490.7 480.6 499.4 505.2 530.2 552.0 588.0 654.7 624.9 581.4 511.5 20.9 5.8 0;
451.2 405.7 392.1 383.2 386.8 399.7 422.0 477.1 508.5 538.0 514.8 535.6 528.9 495.0 495.9 480.3 495.9 515.7 525.4 558.4 608.4 600.8 558.2 488.2 25.3 6.6 0]';
>> for i=1:27
p(i,:)=(p(i,:)-min(p(i,:)))/(max(p(i,:))-min(p(i,:)));
end
>> p

p =

  Columns 1 through 8

    0.2894    0.3760    0.1292    0.1589    0.4419    0.4018    0.0439         0
    0.3241    0.2791    0.1027    0.2246    0.3401    0.3283         0    0.0449
    0.4437    0.3465         0    0.2302    0.4821    0.3120    0.0563    0.1982
    0.3156    0.1229    0.0628    0.2095    0.4525    0.2821         0    0.1215
    0.3855    0.1863         0    0.2461    0.4979    0.2589    0.1408    0.0142
    0.2570    0.0691         0    0.0802    0.2096    0.1487    0.0486    0.0468
    0.2759    0.1802         0    1.0000    0.2199    0.1810    0.1818    0.1258
    0.5841    0.1226    0.1827    0.4591    0.2656         0    0.3618    0.0445
    0.4715         0    0.2497    0.3600    0.3588    0.3830    0.3394         0
    0.5036    0.3806    0.2993    0.4557    0.4421    0.4546    0.2795         0
    0.6497    0.2706         0    0.4510    0.3935    0.1895    0.1935    0.0170
    0.8509    0.2786    0.1491    0.5512    0.3795         0    0.1295    0.2244
    0.7122    0.2904    0.0420    0.4967    0.4455         0    0.0696    0.3325
    0.7656    0.1921         0    0.4344    0.3126    0.1550    0.0715    0.2000
    0.4010    0.1261         0    0.3052    0.2636    0.1236    0.1185    0.2522
    0.3832    0.1190         0    0.4093    0.2322    0.0087    0.1872    0.2206
    0.5656    0.2057         0    0.3532    0.1962    0.2111    0.2422    0.1867
    0.4142         0    0.0661    0.3456    0.1296    0.1194    0.1779    0.1881
    0.2900         0    0.0554    0.3806    0.1951    0.1727    0.3412    0.1578
    0.4320    0.1829    0.2069    0.6149    0.2194    0.1269    0.4011         0
    0.1841         0    0.0618    0.1519    0.2849    0.0134    0.1089    0.2527
    0.2590    0.1471         0    0.2557    0.3020    0.1753    0.2036    0.2704
    0.2092         0    0.0760    0.2665    0.3163    0.0996    0.1743    0.1557
    0.3739    0.1180    0.2037    0.3565    0.4497         0    0.1789    0.0857
         0    0.4044    0.7647    0.5956    0.1765    0.5735    0.6985    0.3676
         0    0.5519    0.6494    1.0000    0.7662    0.6883    0.8896    0.9351
         0         0         0         0         0         0         0         0

  Columns 9 through 13

    0.1835    0.2868    0.8721    1.0000    0.9845
    0.1102    0.3209    0.7765    1.0000    0.6588
    0.1330    0.4373    1.0000    0.9719    0.7916
    0.0852    0.1425    1.0000    0.8436    0.7542
    0.1053    0.2546    0.9431    1.0000    0.8976
    0.1159    0.1118    0.4649    1.0000    0.3882
    0.1950    0.2074    0.3933    0.3492    0.3328
    0.2945    0.4964    1.0000    0.7873    0.8053
    0.2982    0.5782    0.9830    1.0000    0.8776
    0.4254    0.7195    1.0000    0.9906    0.9468
    0.4497    0.5373    1.0000    0.9595    0.7608
    0.6235    0.7229    0.9518    0.9262    1.0000
    0.5637    0.8147    0.9908    1.0000    0.9080
    0.5391    0.8013    0.7576    0.9430    1.0000
    0.4994    0.7276    0.8651    0.8071    1.0000
    0.5341    0.8534    0.9216    1.0000    0.7228
    0.5115    0.9391    1.0000    0.9811    0.8552
    0.6468    0.8526    0.8119    1.0000    0.8158
    0.5874    1.0000    0.8710    0.8294    0.5458
    0.4606    1.0000    0.7714    0.6171    0.2789
    0.2715    0.9489    1.0000    0.7863    0.1640
    0.3088    0.8303    1.0000    0.7579    0.4853
    0.2416    0.8132    1.0000    0.8829    0.5940
    0.1988    0.8224    0.9863    1.0000    0.7106
    0.2868    0.2721    0.2941    0.6765    1.0000
    0.7273    0.8377    0.5779    0.9416    0.9935
    0.5000    1.0000         0         0         0

>> 为什么我的归一化出现这么多0?高手,请指教!

[ 本帖最后由 lxq 于 2006-12-23 10:50 编辑 ]
回复
分享到:

使用道具 举报

发表于 2006-8-24 19:23 | 显示全部楼层
零的位置好像就是那一行的最小值吧。
发表于 2006-8-24 19:58 | 显示全部楼层
在原P中最小值处处理后便为0,因此每行一定有一个0,如果在一行中有另一个数和最小值一样,便出现二个0。应该说,计算结果没有错。

评分

1

查看全部评分

发表于 2006-8-24 21:11 | 显示全部楼层
同意楼上的结论,结果没有问题
 楼主| 发表于 2006-8-29 10:22 | 显示全部楼层

谢谢

可是,我的前24个向量是电力负荷,后3个向量是温度和天气情况,请问电力负荷怎么会有0值呢?请高手继续帮助分析,好吗?
发表于 2006-8-29 14:57 | 显示全部楼层
原帖由 ghm_ghm 于 2006-8-29 10:22 发表
可是,我的前24个向量是电力负荷,请问电力负荷怎么会有0值呢?

电力负荷并没有为0,这是在计算中计算公式所产生的
p(i,:)=(p(i,:)-min(p(i,:)))/(max(p(i,:))-min(p(i,:)));
这计算公式是得到一行中的最大值为1,最小值为0。当为0时,并不是物理意义上的0(电力负荷为0),而只能说明这时电力负荷最小。
发表于 2006-8-29 15:46 | 显示全部楼层
归一化后的数值不再是实质上的电荷值,得到的结果也要反归一化才能得到你要的结果。

评分

1

查看全部评分

 楼主| 发表于 2006-8-30 15:20 | 显示全部楼层

再请帮忙!

这样一组输入样本,采用何种方法归一最合理?
p=[397.4 374.4 364.9 351.8 350.8 377.3  11.7 -8.7 0]
其中,前5项是电力负荷值,11.7是最高气温,-8.7是最低气温,0表示晴天。
高手请指教!
发表于 2006-8-30 19:37 | 显示全部楼层
matlab中的归一化处理有三种方法
1. premnmx、postmnmx、tramnmx
2. restd、poststd、trastd
3. 自己编程
具体用那种方法就和你的具体问题有关了

评分

1

查看全部评分

 楼主| 发表于 2006-9-1 10:43 | 显示全部楼层

请帮忙!

我试了,可是只有premnmx方法可用,且归一后的数值在-1到1之间,不可取。我请高手将
p=[397.4 374.4 364.9 351.8 350.8 377.3  11.7 -8.7 0;
356.2 368.1 374.2 340.5 360.9 354.2 10.2 -2.1 0]‘;
]
其中,前6项是电力负荷值,11.7是最高气温,-8.7是最低气温,0表示晴天。请高手将此输入样本数据归一到0.1~0.9之间,请将代码写清楚,好吗?谢谢了!
高手请指教!
发表于 2006-9-1 11:59 | 显示全部楼层
0.1+(x-min)/(max-min)*(0.9-0.1)其中max和min分别表示样本最大值和最小值。
反过来不难获得。

for i=1:27
p(i,:)=(p(i,:)-min(p(i,:)))/(max(p(i,:))-min(p(i,:)));
end
这个是归一到0 1 之间
把这句用上面的公式表示就可以了

[ 本帖最后由 jimin 于 2006-9-1 12:06 编辑 ]
发表于 2006-9-1 20:56 | 显示全部楼层
我觉得这样不好,还不如直接
pm=max(abs(p(i,:))); p(i,:)=p(i,:)/pm;
这样0值地方还是0,画出图来更直观。

评分

1

查看全部评分

 楼主| 发表于 2006-9-6 16:54 | 显示全部楼层

你好!

我用pm=max(abs(p(i,:))); p(i,:)=p(i,:)/pm;方法归一,计算效果很好,最后得出

out=[0.8501 0.8593 0.8521 0.9187 0.8931 0.7142 0.6877 0.9008 0.8607 0.8926 0.9295 0.9268 0.8943 0.9315 0.8207 0.9151 0.9973 0.8922 0.8706 0.9083 0.9361 0.9137 0.9494 0.9074]';
请问怎样反归一,算出实际数值!谢谢!
 楼主| 发表于 2006-9-6 16:54 | 显示全部楼层

你好!

我用pm=max(abs(p(i,:))); p(i,:)=p(i,:)/pm;方法归一,计算效果很好,最后得出

out=[0.8501 0.8593 0.8521 0.9187 0.8931 0.7142 0.6877 0.9008 0.8607 0.8926 0.9295 0.9268 0.8943 0.9315 0.8207 0.9151 0.9973 0.8922 0.8706 0.9083 0.9361 0.9137 0.9494 0.9074]';
请问怎样反归一,算出实际数值!谢谢!
发表于 2006-9-8 11:22 | 显示全部楼层
function PGY=GuiYi(P)
[m,n]=size(P);
for i=1:m
   PGY(i,:)=(P(i,:)-min(P(i,:)))/(max(P(i,:))-min(P(i,:)));
end
%反归一化方法。SimP表示输入向量P_Test仿真后的结果,OriginT表示目标向量在
%归一化之前的值。
function FGY=FanGuiYi(SimP,OriginT)
[m,n]=size(SimP);
for i=1:m
   FGY(i,:)=SimP(i,:)*(max(OriginT(i,:))-min(OriginT(i,:)))+min(OriginT(i,:));
end
反归一化的时候注意,不是跟你out归一,而是放到前面样本里,跟样本一起归一,但出来的结果是唯一!~

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-22 16:49 , Processed in 0.060298 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表