删除元胞数组中的单个元素
Delete individual elements in a cell array
我有一个 100 X 1 (n1) 元胞数组,每个元胞都持有更大数据集的索引 (100 X 100, n2)。我做了一个嵌套循环以访问每个单独的元素(索引)并将另一个数据集的值与这些索引与 if 条件进行比较。如果条件成功,我想将该元素从原始元胞数组中删除到新的元胞数组中。但是,当我在 matlab 中将元素设置为 [] 时,元胞数组的值不会改变。代码如下:
for i = 1:length(n1)
for j = 1:length(n1{i, 1})
if n2(i,n1{i,1}(1,j)) > n3(i) && n2(i, n1{i,1}(1,j)) > n4(n1{i, 1}(1, j))
n1{i,1}(1,j) == [];
end
end
end
我认为 n1(i,1)
始终是行向量,因此您应该使用,
n1{i,1}(j) = [];
如果 n1(i,1)
不是列或行,则不可能从中间删除元素。
例如:
A = {[1 2 3],[5 8 9]}
A{1,2}(1,2) = []
给出错误:A null assignment can have only one non-colon index
。
但是A{1,2}(2) = []
没问题。
我有一个 100 X 1 (n1) 元胞数组,每个元胞都持有更大数据集的索引 (100 X 100, n2)。我做了一个嵌套循环以访问每个单独的元素(索引)并将另一个数据集的值与这些索引与 if 条件进行比较。如果条件成功,我想将该元素从原始元胞数组中删除到新的元胞数组中。但是,当我在 matlab 中将元素设置为 [] 时,元胞数组的值不会改变。代码如下:
for i = 1:length(n1)
for j = 1:length(n1{i, 1})
if n2(i,n1{i,1}(1,j)) > n3(i) && n2(i, n1{i,1}(1,j)) > n4(n1{i, 1}(1, j))
n1{i,1}(1,j) == [];
end
end
end
我认为 n1(i,1)
始终是行向量,因此您应该使用,
n1{i,1}(j) = [];
如果 n1(i,1)
不是列或行,则不可能从中间删除元素。
例如:
A = {[1 2 3],[5 8 9]}
A{1,2}(1,2) = []
给出错误:A null assignment can have only one non-colon index
。
但是A{1,2}(2) = []
没问题。