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

bza*_*zak 8 matlab

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

ind2remove = (A(1,:) == 0);
A(:,ind2remove) = [];
Run Code Online (Sandbox Code Playgroud)

如果A是细胞,我该怎么做?我想删除第一行元素为0的列.

我试过了:

ind2remove = (A{1,:} == 0);
A{:,ind2remove} = [];
Run Code Online (Sandbox Code Playgroud)

但是我收到了错误消息:

??? Error using ==> eq
Too many input arguments.

Error in ==> ind2remove = (A{1,:} == 0);
Run Code Online (Sandbox Code Playgroud)

abc*_*bcd 10

索引使用{ }为您提供单元格的内容,而索引使用( )返回与原始对象相同的类型,即,如果A是单元格,A{i,j}将返回它所持有的内容,A(i,j)并将始终返回单元格.你需要后者.

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

A(:, cellfun(@(x)x==0, A(1,:))) = [];
Run Code Online (Sandbox Code Playgroud)

这里的假设是第一行中的每个单元格只包含一个数字元素,根据您的注释.