string - 从 Matlab 中的单元格数组中删除 'NaN' 字符串和 [] 单元格
问题描述
我有一个单元格数组,给出为
raw = {100 3.2 38 1;
100 3.7 38 1;
100 'NaN' 'NaN' 1;
100 3.8 38 [];
'NaN' 'NaN' 'NaN' 'NaN';
'NaN' 'NaN' 'NaN' [];
100 3.8 38 1};
如何删除具有至少一个“NaN”字符串和空单元格 [] 的行?因此,在这种情况下,我想从上述单元阵列中删除第 3、第 4、第 5 和第 6 行。提前致谢!
解决方案
在您的单元格数组中,值 NaN 被定义为字符串而不是“特殊”值NaN
在这种情况下,您可以使用函数isempty
并isfloat
确定单元数组的哪些元素为空或浮点类型:
% Remove rows with empty cells
idx=any(cell2mat(cellfun(@isempty,raw,'UniformOutput',false)),2)
raw(idx,:)=[]
% Remove rows with 'NaN'
idx=all(cell2mat(cellfun(@isfloat,raw,'UniformOutput',false)),2)
raw(~idx,:)=[]
在第一步中,您使用函数查找空单元格isempty
,因为输入是一个单元格数组,您必须使用该函数将函数cellfun
应用于单元格数组的所有元素。
isempty
返回一个 cellarray ,0
where1
标识1
一个空单元格,因此,在将其转换为数组(使用 functino cell2mat
)后,您可以使用 function 标识带有空单元格的 roww 的索引any
。
在第二步中,使用类似的方法,您可以使用函数 `isfloat.
NaN
如果您的单元格数组中的 被定义为“值”而不是字符串,则可以使用相同的方法:
idx=any(cell2mat(cellfun(@isempty,raw,'UniformOutput',false)),2)
raw(idx,:)=[]
idx=any(cell2mat(cellfun(@isnan,raw,'UniformOutput',false)),2)
raw(idx,:)=[]
推荐阅读
- reactjs - Highstocks 带有单个导航器的多个图表 + 导航器外部的标签 + 自定义导航器句柄符号
- javascript - Socket.io 404 错误 - 客户端未连接
- javascript - 使用 Netlify 在 Gatsby 网站上进行 prerenderReady
- android - 即使应用程序崩溃也显示 AlertDialog
- bots - 如何从另一个 Telegram 组和频道获取和读取数据
- excel - 我想在一个范围内查找多个字符串,然后对于每个查找,用文本填充相邻的单元格
- python - 使用 tkinter 更改文件夹中所有图像的扩展名
- c# - 对于断开连接的接口,C# DHCP 不会更改
- arch - 你如何得到zstd?
- javascript - 如何从列中获取时间值,延长持续时间,然后在谷歌日历上创建事件?