MATLAB如何将相同的元胞数组删除?

a={[1,2],[1,2],[3,4,5],[3,4,5],[3,4,5],
[6,7,8,9],[6,7,8,9],[6,7,8,9],[6,7,8,9]
}
for i=1:(length(a)-1)
k=length(a);
while(k)
for j=i+1:length(a)
if length(a{i})==length(a{j})
if a{i}(:,1)==a{j}(:,1)&a{i}(:,2)==a{j}(:,2)
a(j)=[];
break;
end
end
end
k=k-1;
end
end
最新回答
只为迩倾尽所有

2024-04-20 07:53:13

你这是属于cell数组,我自己也是新手一枚,所以只能提供一下删除空数组的方法

a{j}=[];

a(cellfun(@isempty,a))=[];

参考MATLAB中文论坛

还有一点是,MATLAB的AND 命令是&&,不是单个&,虽然在你这个数组a中,不需要验证数组的第二个元素。。。

从你的程序来看,有点想做普适性的样子,但是存在a的元素特殊性的干扰,若是无相同数组,while(k)

k=k-1;

end

会无限循环

for i=1:length(a)-1即可,无需添加括号