index out of bounds numel = 1

时间:2014-10-29 12:42:11

标签: matlab function

我收到此错误:

"Attempted to access v(2); index out of bounds because numel(v)=1.
Error in extractperiod10 (line 8)
        v(month)=v(month) + u;"

我无法弄清楚错误是什么......我用这个来调用函数:

extractperiod10(TEMPUF,@extractperiod, @periodmean,1979,3).

我使用TEMPUF的文件是一个包含17166行和7列的矩阵,其中包含当天的温度和日期以及相应的日期。

my extractperiod10.m

function v=extractperiod10(file, extractperiod, periodmean,year,column)
v=zeros(12,1);

for month=1:12
    for year=year:year+9
        p=extractperiod(file,year,month,column);
        u=periodmean(p);
        v(month)=v(month) + u;
    end
   v=mean(v);
end
end

我的periodmean.m(有些值是-999,我不想在计算中使用它们):

function M=periodmean(values)
invalid = -999;
valid=find(values ~= invalid);
M=mean(values(valid));
end

my extractperiod.m

function T=extractperiod(file,year,month,col)
y=floor(file(:,1)/100);
match=find(y==year*100 + month);
T=file(match,col);
end

编辑:

function v=extractperiod10(file, extractperiod, periodmean,column)
v=zeros(12,1);

for month=1:12
    for y=1970:1979%y=year:1:year:+9 %
        p=extractperiod(file,y,month,column);
        u=periodmean(p);
        v(month)=v(month) + u;
    end
    v(month)=mean(v);
end

v2=zeros(12,1);
for month=1:12
    for y2=2000:2009
        p2=extractperiod(file,y,month,column);
        u2=periodmean(p2);
        v2(month)=v2(month) + u2;
    end
    v2(month)=mean(v2);
end
    v=[v,v2];

end

0 个答案:

没有答案