声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 940|回复: 2

[综合讨论] if语句的代码与求出结果不符合,请问该如何解决和修改?

[复制链接]
发表于 2009-8-3 11:50 | 显示全部楼层 |阅读模式

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

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

x
if语句的代码与求出结果不符合,请问该如何解决和修改?
x_farm有4个因子(列);4个对象(行),我想对x_farm进行因子剔除,通过计算相关系数和方差,要求两者(i,j)相关系数大于0.9,若i 的方差大于j 的方差,就剔除j 因子。我的代码如下
clear
x_farm=[167.6200 100.4584 100.1472 160.3753;171.3246 93.5399 97.7215 148.9536;159.2697 88.2294 92.2526 142.8844;177.3102 102.1516 102.4093 163.5383]
cov=var(x_farm) %计算方差
C=corrcoef(x_farm)%计算相关系数
for i=1:length(x_farm)
for j=i:length(x_farm)
if C(j,i)>=0.9 && cov(i)>cov(j)
x_farm(:,j)=[]
else
x_farm(:,j)=x_farm(:,j)
end
end
end
结果如下:
x_farm =
167.6200 100.4584 100.1472 160.3753
171.3246 93.5399 97.7215 148.9536
159.2697 88.2294 92.2526 142.8844
177.3102 102.1516 102.4093 163.5383

cov =
56.9966 41.3726 19.0307 93.5436

C =
1.0000 0.7887 0.9010 0.7617
0.7887 1.0000 0.9740 0.9961
0.9010 0.9740 1.0000 0.9565
0.7617 0.9961 0.9565 1.0000
x_farm =
167.6200 100.4584 100.1472 160.3753
171.3246 93.5399 97.7215 148.9536
159.2697 88.2294 92.2526 142.8844
177.3102 102.1516 102.4093 163.5383

x_farm =
167.6200 100.4584 100.1472 160.3753
171.3246 93.5399 97.7215 148.9536
159.2697 88.2294 92.2526 142.8844
177.3102 102.1516 102.4093 163.5383

x_farm =
167.6200 100.4584 160.3753
171.3246 93.5399 148.9536
159.2697 88.2294 142.8844
177.3102 102.1516 163.5383
??? Attempted to access x_farm(:,4); index out of bounds because size(x_farm)=[4,3].
Error in ==> test at 10
x_farm(:,j)=x_farm(:,j)
回复
分享到:

使用道具 举报

发表于 2009-8-3 18:34 | 显示全部楼层
错误信息已经提示了,x_farm的第四列已经被剔出了,可是后面的运算还要访问第四列
发表于 2009-8-5 14:45 | 显示全部楼层

回复 沙发 nemia 的帖子

可以考虑把x_farm赋给一个中间变量
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-10-1 03:23 , Processed in 0.061211 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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