您可以使用cellfun 和isequal 做到这一点:
myData(cellfun(@(c) isequal(c, 'NF'), myData)) = {0};
或者你可以使用strcmp 作为Jon suggests:
myData(strcmp(myData, 'NF')) = {0};
然而,应该注意的是,这两种解决方案并非在每种情况下都完全等效。来自the documentation for strcmp:
strcmp 函数用于比较文本。如果用于不受支持的数据类型,strcmp 始终返回 0。
因此,如果任一输入参数是字符向量/数组、字符向量元胞数组或字符串数组以外的数据类型,strcmp 将返回 false。相反,isequal 在确定它们是否相等时会忽略输入参数的数据类型。例如,数字向量 [78 70] 是字符向量 'NF' 的 ASCII 等价物,因此您从 strcmp 和 isequal 得到以下结果:
>> strcmp([78 70], 'NF')
ans =
logical
0 % No match
>> isequal([78 70], 'NF')
ans =
logical
1 % Match
换句话说,strcmp 在比较不同数据类型的相等性时要严格得多,而isequal 则更为宽松,允许在其基础数据实际上相同时将不同数据类型的输入视为相等。在选择解决方案之前,您应该考虑需要哪种行为。