【问题标题】:Delete individual elements in a cell array删除元胞数组中的单个元素
【发布时间】:2015-01-22 19:39:41
【问题描述】:

我有一个 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) 的大小是多少?

标签: arrays matlab cell-array


【解决方案1】:

我认为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) = [] 没问题。

【讨论】:

  • 我还将循环更改为向后运行,因为单元格的大小随着每次迭代而变化,这将导致索引超出矩阵维度。谢谢
  • @Mechanic,你说得对,我忘了。我很高兴它对你有用。
猜你喜欢
  • 1970-01-01
  • 2016-10-26
  • 1970-01-01
  • 1970-01-01
  • 2011-09-07
  • 1970-01-01
  • 2015-10-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多