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

12个视图(过去30天)
蓝色的
蓝色的 2020年4月29日
评论: 星际漫游者 2020年4月29日
你好,
我有一个简单的单元格数组,如下所示:
输入={“A”,“B”,“A”,“A”,“A”,“A”,“A”,“A”;“A”,“A”,“B”,“A”,“A”,“A”,“A”,“A”;“A”,“A”,“A”,“A”,“A”,“A”,“A”,“A”}
我想做的是简单地删除所有不包含“B”的列 但只是 最后一列右侧包含“B”的字段。
换句话说,输出将如下所示:
输出={“A”,“B”,“A”;“A”,“A”,“B”;“A”,“A”,“A”}
我该怎么做?
谢谢您,

公认的答案

星际漫游者
星际漫游者 2020年4月29日
试试这个:
输入UTC={“A”,“B”,“A”,“A”,“A”,“A”,“A”,“A”;“A”,“A”,“B”,“A”,“A”,“A”,“A”,“A”;“A”,“A”,“A”,“A”,“A”,“A”,“A”,“A”};
isB=cell2mat(cellfun)(@(x)ismember(“B”,x),在UTC,“统一”,0));
[r,c]=find(isB,1,“最后”);
输出UTC=输入UTC(:,1:c)
生产:
输出UTC=
×3单元排列
{“A”} {“B”} {“A”}
{“A”} {“A”} {“B”}
{“A”} {“A”} {“A”}
我本来可以合并的 “isB” 找到 打一行电话,但是把它分成两行更容易理解。
.

更多答案(1)

纪尧姆
纪尧姆 2020年4月29日
如果您的单元格数组确实是单个字符的单元格数组,则最好将其存储为字符矩阵:
输入=cell2mat(输入);
在这种情况下:
[~,lastc]=最大值(输入==“B”, [], 2);
输出=输入(:,1:max(lastc))

标签

社区寻宝

在MATLAB Central中查找宝藏,了解社区如何帮助您!

开始打猎吧!