首页 > 解决方案 > 在 Matlab 中查找文本并将其替换为一个值

问题描述

我有一些看起来像这样的数据:

数据

我想以一种将所有数据替换Mostly false1Mostly truewith2Definitely truew/的方式预处理数据3。是否有查找和替换命令或最好的方法是什么?

标签: matlabreplacefind

解决方案


您可以使用地图对象进行映射

m = containers.Map( {'Mostly false', 'Mostly true', 'Definitely true'}, ...
                    {             1,             2,                 3} );

然后举个例子data

data = {'Mostly false', 'Mostly false', 'Mostly true', 'Mostly false', 'Definitely true'};

您可以执行转换

data = m.values( data );
% >> data = {1, 1, 2, 1, 3}

这假设您的地图中总会有一个匹配项。

或者,您可以手动执行操作(对于相同的示例数据),这将使非匹配项保持不变,并且您可以使用strcmpi不区分大小写:

c = {'Mostly false', 'Mostly true', 'Definitely true'
                  1,             2,                 3};
for ii = 1:size(c,2)
    % Make the replacement for each column in 'c'
    data( strcmp( data, c{1,ii} ) ) = c(2,ii);
end

推荐阅读