在Matlab中删除单元格中的元素

8

在矩阵中,要删除第一行元素为0的列,我们可以使用以下方法:

ind2remove = (A(1,:) == 0);
A(:,ind2remove) = [];

如果A是一个单元格,我该怎么做?我想要删除第一行元素为0的列。
我尝试过:
ind2remove = (A{1,:} == 0);
A{:,ind2remove} = [];

但是我收到了错误信息:
??? Error using ==> eq
Too many input arguments.

Error in ==> ind2remove = (A{1,:} == 0);

一个单元格可以容纳不同的数据类型。你的单元格是什么样子的?它只有一个元素(数字)吗?答案很简单,但我想要一个示例数据。 - user616736
@yoda:单元格A的第一行包含数字值,第二行包含矩阵。 - bzak
1个回答

10

使用 { } 进行索引会返回单元格的 内容,而使用 ( ) 进行索引将返回与原始对象相同的类型,即如果 A 是一个单元格,则 A{i,j} 将返回其所持有的内容,而 A(i,j) 将始终返回一个单元格。你需要后者。

因此,在您的情况下,您可以执行以下操作以消除所有第一行具有 0 的列。

A(:, cellfun(@(x)x==0, A(1,:))) = [];
这里的假设是第一行中每个单元格只包含一个数字元素,与您的评论相符。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接