微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

matlab:“要删除的元素的索引超出了矩阵尺寸”当我不删除任何元素时

如何解决matlab:“要删除的元素的索引超出了矩阵尺寸”当我不删除任何元素时

| 我得到错误
???  Index of element to remove exceeds matrix dimensions.

Error in ==> myfile at 111
    C(i)=s{i,3};
代码是:
C=zeros(num_of_tris,1);
for i=1:size(C,1)
    C(i)=s{i,3};
end
我没有显示用于创建
s
代码,但我认为它在要点旁边,因为
s
仅出现在作业的右侧... 为什么说
element to remove
?我要删除哪个元素?     

解决方法

        好的,这就是正在发生的事情。
s
可能已初始化为空单元格(注意:不必完全为空-参见最后一段)。因此,将元素
s
索引为
s{i,3}
将返回
[]
。删除向量元素的MATLAB操作是
C(i)=[];
因此,当您遍历循环时,您将一个一个地删除
C
的元素,最终,索引ѭ11vector超出了(现已减小)向量的大小。 这是一个重现您的问题的小示例:
s=cell(10,5);           %#initialize s to an empty cell
%#note that any cell returns []
s{3,4}

ans =

     []

%#This is your code from above
C=zeros(10,1);          %#initialize C
for i=1:size(C,1)
    C(i)=s{i,3};
end
  ???要删除的元素索引超过矩阵尺寸。 出现此错误时,您将发现索引
i
numel(C)/2+1
。换句话说,直到
i=5
(在此示例中),您将删除removing10ѭ的每个奇数元素,而在at17ѭ处,
C
中剩余的元素数为5,因此您将获得一个索引超出范围错误。 注意:
s
甚至不必完全为空。考虑以下示例:
s=cell(10,1);
s([1,2,6,8])=num2cell(rand(4,1));
C=zeros(10,1);
for i=1:numel(C)
    C(i)=s{i};
end
  ???要删除的元素索引超过矩阵尺寸。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。