在矩阵中,要删除第一行元素为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);
答案 0 :(得分:10)
使用{ }
建立索引可以获得单元格的内容,而使用( )
建立索引会返回与原始对象相同的类型,即如果A
是一个单元格,A{i,j}
将返回它所持有的内容,A(i,j)
将始终返回一个单元格。你需要后者。
因此,在您的情况下,您可以执行以下操作以消除第一行具有0
的所有列。
A(:, cellfun(@(x)x==0, A(1,:))) = [];
这里的假设是,根据您的评论,第一行中的每个单元格只包含一个数字元素。