24小时热门版块排行榜    

查看: 268  |  回复: 2

minstrel

木虫 (正式写手)

道法自然

[交流] 【求助】报错了,谁能帮帮我。金币奉上 已有1人参与

下面是我的一段代码。
在Test(1,: )=Train(i,: ); %语句出出错了。


在这个循环之前,在debug模式下,我查看了Train数组的大小
size(Train)
ans =
      100000           3
大小和我if语句循环停止的量是一样的,为何还是报错了。

数据太大了,单步调试真的不容易。而且是初学者,大家指教吧。金币奉上!谢谢

function Leaveoneout()

nr = 100000;
ni = 1682;
nu = 943;
rmse = 0;

Train = load('u.data');

Train(:,4)=[];
Trainuimatrix = zeros(nu,ni);

for i = 1:nr
    Trainuimatrix( Train(i, 1), Train(i, 2) ) = Train(i, 3);
end

Dresult = zeros(nr, 5);
Dresult(:, 1) = Train(:, 3);

for i = 1:1:nr
    Test(1,: )=Train(i,: ); %此处出错了,nr值为100000,运行到10000的时候还没有出错
    Train(i,: )=[];
    [rating] = Userbased(Train, Test, Trainuimatrix, nr, nu, ni);

    Dresult(i, 2) = rating;
end

[ Last edited by minstrel on 2010-5-10 at 22:41 ]
回复此楼

» 猜你喜欢

已阅   关注TA 给TA发消息 送TA红花 TA的回帖

minstrel

木虫 (正式写手)

道法自然

顶下...
2楼2010-05-10 22:22:12
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

minstrel

木虫 (正式写手)

道法自然


nono2009(金币+1):谢谢说明。 2010-07-23 20:54:39
我终于找到原因了
在于Train(i,: )=[];
它在每次的循环的时候,都减去一行。
于是它的大小是在不停减小的

等到运行到中间的时候,i的大小就超过了它的下界。

我把
    Test(1,: )=Train(i,: );
    Train(i,: )=[];
放到自定义的子函数里面就好了。

嵌套的子函数,只在这个子函数里面改变它的值,跳出这个函数的时候,它的值又恢复了。


此贴可以结了。版主能否帮我编辑一下。谢谢。
3楼2010-05-10 23:00:51
已阅   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 minstrel 的主题更新
信息提示
请填处理意见