Octave 中的 'index out of bounds' 错误是什么?
What is 'index out of bounds' error in Octave?
我一直在 Octave 中过滤数据但出现错误
index out of bounds: value 741 out of bound 740'
X = 892x2 矩阵,第 2 列包含一些值 = 0。我希望删除所有值为 0 的行。
这是我的代码
train_set = csvread('train.csv');
X = [train_set(:,3),train_set(:,7)];
y = train_set(:,2);
m = size(X,1);
for i=1:m,
if train_set(i,7) == 0,
X(i,:)=[];
endif
end
您正在循环中修改 X。这意味着虽然最初它有 892 行,但在第一个零之后,您将其减少到 891 行,然后减少到 890 行,等等。
有时您已将其减少到 740 行;在那之后的某个时候,循环中的 i
达到数字 741.
这会导致以下类型的指令:X(741, :) = []
Octave 尽职尽责地告诉您 X 不再有第 741 行。
相反,您可以做的是标记要删除的行,并在循环后使用单个命令将其删除。或者更好的是,没有 foor 循环,你可以这样做:
Condition = train_set(:,7) == 0; % find all rows you want to delete
X( Condition, : ) = []; % Use logical indexing on rows to delete them.
我一直在 Octave 中过滤数据但出现错误
index out of bounds: value 741 out of bound 740'
X = 892x2 矩阵,第 2 列包含一些值 = 0。我希望删除所有值为 0 的行。
这是我的代码
train_set = csvread('train.csv');
X = [train_set(:,3),train_set(:,7)];
y = train_set(:,2);
m = size(X,1);
for i=1:m,
if train_set(i,7) == 0,
X(i,:)=[];
endif
end
您正在循环中修改 X。这意味着虽然最初它有 892 行,但在第一个零之后,您将其减少到 891 行,然后减少到 890 行,等等。
有时您已将其减少到 740 行;在那之后的某个时候,循环中的 i
达到数字 741.
这会导致以下类型的指令:X(741, :) = []
Octave 尽职尽责地告诉您 X 不再有第 741 行。
相反,您可以做的是标记要删除的行,并在循环后使用单个命令将其删除。或者更好的是,没有 foor 循环,你可以这样做:
Condition = train_set(:,7) == 0; % find all rows you want to delete
X( Condition, : ) = []; % Use logical indexing on rows to delete them.