在Matlab的数据清洗和预处理工作中,字符串转换和缺失值处理绝对是最容易让人“踩坑”的环节。很多初学者经常搞混char和string的区别,或者在面对<missing>时一头雾水,不知道如何正确判断和运算。今天,咱们就结合2026年最新的Matlab实战场景,把字符串转换、缺失值的创建、判断以及运算规则一次性讲透,帮你彻底搞定数据清洗中的这些疑难杂症。
在Matlab中,处理文本数据主要有两种形式:字符向量(char)和字符串数组(string)。虽然它们看起来很像,但在实际转换中有着本质的区别。使用string函数进行转换是目前更推荐的现代写法。
来看几组最直观的转换代码示例:string(100) 会将双精度数值直接转换为字符串 "100"。char(100) 则完全不同,它会根据Unicode码将数值转换为对应的字符,结果是小写字母 "d"。string('100') 能把老式的字符向量转换为现代的双引号字符串 "100"。char("100") 则是逆向操作,将字符串变回单引号的字符向量 '100'。
搞清楚这两者的转换逻辑,在处理混合数据类型或者导入外部Excel表格时,能帮你避免绝大多数的格式报错。
数据中难免会有不可靠或不可用的点。在数值型数据中,我们习惯用NaN来表示,而在字符串的世界里,从Matlab 2017a版本开始,官方推出了统一的<missing>标识。
创建一个通用的缺失值非常简单,直接使用 missing 函数即可。如果想把它明确转化为字符串类型的缺失值,只需执行 string(missing),控制台就会显示 <missing>。当你对字符串数组进行扩展时,多出来的空缺元素也会自动被填充为 <missing>。
判断缺失值时,千万别用 == 去比较!这里有个经典的反直觉逻辑:缺失值与任何数值(包括它自己)进行相等比较,结果永远为假(0)。正确的判断姿势是使用 ismissing 函数。
比如执行 ismissing(["", "abc", string(missing)]),系统会返回一个逻辑数组 [0 0 1]。这里要注意,空字符串 "" 并不等于缺失值 <missing>,前者是“有内容但为空”,后者是“压根没数据”。

在实际的数据运算中,缺失值有一个“霸道”的特性:它参与的任何运算,结果都会变成缺失值。这就像一滴墨水滴进一杯水里,整杯水都会变色。
举个例子,当你尝试执行 string(missing) + string(missing) 或者 string(missing) + "x" 时,无论你进行拼接还是其他数学运算,Matlab返回的结果永远是 <missing>。
理解这个运算规则非常重要。这意味着在你对整列数据进行批量处理(比如合并字段、提取字符)之前,必须先通过 rmmissing 剔除缺失值,或者用 fillmissing 将其替换为指定的默认值(如空字符串或"Unknown")。跳过这一步直接运算,只会让你的后续分析全盘皆输。
武汉格发信息技术有限公司,格发许可优化管理系统可以帮你评估贵公司软件许可的真实需求,再低成本合规性管理软件许可,帮助贵司提高软件投资回报率,为软件采购、使用提供科学决策依据。支持的软件有: CAD,CAE,PDM,PLM,Catia,Ugnx, AutoCAD, Pro/E, Solidworks 等。