这篇文章涉及“删除元素”操作,该操作使用空括号[]。
我正在尝试使用[]删除单元格中的特定元素。之前的帖子提到,使用(而不是{}和[]作为数组是删除元素而不是整个单元格的合适语法。但是,此语法似乎不起作用(错误:() - 索引必须出现在索引表达式的最后。)我的原始代码如下,它使用{}而不是()从inter2的相应单元格中删除newinter的每个单元格中包含的元素。
for i=1:11
inter2{i}(newinter{i}) = [];
end
inter2是1X11阵列。 newinter也是1x11阵列。我使用数组与矩阵,因为这些数组的单元格中包含的每个向量的长度是不同的。
提前致谢!
答案 0 :(得分:2)
从您的评论中可以看出,newinter
不包含索引,而是包含实际值,但您使用它进行索引。要按值删除元素,可以使用此代码
for i=1:11
inter2{i}(ismember(inter2{i}, newinter{i}))=[];
end
答案 1 :(得分:0)
目前我不在MATLAB电脑附近,但请尝试:
for i=1:11
inter2{i}(1,newinter{i})=[];
end
请注意,如果您尝试删除单元格的内容而不是单元格本身,那么您已经倒退了。 {}
访问单元格的内容,而()
返回单元格本身,因此如果要保持单元格完整,则应使用{}
。有关示例案例,请参阅this link。
答案 2 :(得分:0)
如果你想使用[]
删除元素,那么带有intersect的解决方案肯定是要走的路,但是一般来说,从一个向量中获取不在另一个向量中的元素的最简单方法是使用{{1 }}。
setdiff
我可以想象,如果这是一个值得关注的话,这会带来更好的表现。