如何有条件删除单元格数组中的列

2次观看(最近30天)
你好,
我有一个简单的单元格数组,看起来像这样:
输入= {'一个',,,,'b',,,,'一个',,,,'一个',,,,'一个',,,,'一个',,,,'一个',,,,'一个';'一个',,,,'一个',,,,'b',,,,'一个',,,,'一个',,,,'一个',,,,'一个',,,,'一个';'一个',,,,'一个',,,,'一个',,,,'一个',,,,'一个',,,,'一个',,,,'一个',,,,'一个'}
我要做的就是简单地删除所有不包含“ b'的列 但只有 那些在最后一列的右侧,其中包含A“ B”。
换句话说,Ouput看起来像这样:
ouput = {'一个',,,,'b',,,,'一个';'一个',,,,'一个',,,,'b';'一个',,,,'一个',,,,'一个'}
我该怎么做?
谢谢,

接受的答案

Star Strider
Star Strider 2020年4月29日
尝试这个:
inputc = {'一个',,,,'b',,,,'一个',,,,'一个',,,,'一个',,,,'一个',,,,'一个',,,,'一个';'一个',,,,'一个',,,,'b',,,,'一个',,,,'一个',,,,'一个',,,,'一个',,,,'一个';'一个',,,,'一个',,,,'一个',,,,'一个',,,,'一个',,,,'一个',,,,'一个',,,,'一个'};
ISB = Cell2mat(CellFun(@(x)ISMEMBER)('b',x),inputc,'uni',0);
[r,c] = find(isb,1,'最后的');
outputc = inputc(:,1:c)
生产:
outputc =
3×3个单元大批
{'一个'} {'b'} {'一个'}
{'一个'} {'一个'} {'b'}
{'一个'} {'一个'} {'一个'}
我本可以结合的 '为B' 寻找 呼叫一行,但是将其分为两行很容易理解。

更多答案(1)

Guillaume
Guillaume 2020年4月29日
如果您的单元阵列确实是单个字符的单元格数组,那么最好将其存储为char矩阵:
输入= cell2mat(输入);
在这种情况下:
[〜,lastC] = max(输入=='b',[],2);
输出=输入(:,1:max(lastC))

标签

社区寻宝

在Matlab Central中找到宝藏,发现社区如何为您提供帮助!

开始狩猎!