Matlab 查找并替换单元格数组中的字
我有一个Matlab 查找并替换单元格数组中的字,matlab,Matlab,我有一个4902x1单元格数组,其中包含类似蓝色的字符串。或者绿色。我想用另一个单词替换其中的一些字符串。如何在MATLAB中实现这一点 比如找 Blue. Red. Green. 替换为: Colour. 编辑: 为什么不使用 strArray( strmatch(str,strArray) ) = {'newString'}; 在本例中,需要将变量str设置为要搜索的字符串, e、 格林 编辑:更新以反映您对原始帖子的编辑 strArray = {'green.','black.'}
4902x1
单元格数组,其中包含类似蓝色的字符串。或者绿色。我想用另一个单词替换其中的一些字符串。如何在MATLAB中实现这一点
比如找
Blue.
Red.
Green.
替换为:
Colour.
编辑:
为什么不使用
strArray( strmatch(str,strArray) ) = {'newString'};
在本例中,需要将变量str设置为要搜索的字符串,
e、 格林
编辑:更新以反映您对原始帖子的编辑
strArray = {'green.','black.'};
strMatch = strmatch(strArray, Book2); % This line is unnecessary and if Book2 is not a string variable it will not work
strArray( strMatch(str,strArray)) = {'colour'}; % For this line to work you need declare a string value for the variable str, e.g. str='green.'
为什么不使用
strArray( strmatch(str,strArray) ) = {'newString'};
在本例中,需要将变量str设置为要搜索的字符串,
e、 格林
编辑:更新以反映您对原始帖子的编辑
strArray = {'green.','black.'};
strMatch = strmatch(strArray, Book2); % This line is unnecessary and if Book2 is not a string variable it will not work
strArray( strMatch(str,strArray)) = {'colour'}; % For this line to work you need declare a string value for the variable str, e.g. str='green.'
如果您有一个字符串单元格数组(在您的示例中strArray不是单元格数组),我将定义一个小函数来执行逻辑,然后使用
cellfun
:
function y = changecolor(str)
if( strcmpi('green',str) || strcmpi('blue',str) )
y = 'color';
else
y = str;
end
然后,您可以使用以下工具获得新阵列:
changed_array = cellfun(@changecolor, strCellArray,'Uniform',false)
如果您有一个字符串单元格数组(在您的示例中strArray不是单元格数组),我将定义一个小函数来执行逻辑,然后使用
cellfun
:
function y = changecolor(str)
if( strcmpi('green',str) || strcmpi('blue',str) )
y = 'color';
else
y = str;
end
然后,您可以使用以下工具获得新阵列:
changed_array = cellfun(@changecolor, strCellArray,'Uniform',false)
我尝试了你所说的,但我得到的索引超过了矩阵维数。我做了一个编辑,显示了我所做的尝试。如果你有一个单元格数组,它会起作用。通过使用{}而不是[]将strArray更改为单元格数组。Nah仍然不起作用-
错误使用==>subindex函数“subindex”未为类“cell”的值定义。
我更新了我的回答以回答您在注释中的问题。没有意义,索引再次超出了矩阵维度,为什么我要使用带绿色和黑色的strArray,然后将str声明为唯一匹配的颜色,即绿色?我尝试了你所说的,但我得到的索引超过了矩阵维度。我做了一个编辑,显示了我所做的尝试。如果你有一个单元格数组,它会起作用。通过使用{}而不是[]将strArray更改为单元格数组。Nah仍然不起作用-错误使用==>subindex函数“subindex”未为类“cell”的值定义。
我更新了我的回答以回答您在注释中的问题。没有意义,索引再次超出了矩阵维度,为什么我要将strArray与绿色和黑色一起使用,然后将str声明为唯一匹配的颜色,即绿色?在您的示例中,strArray不是单元格数组,所以我认为这就是它失败的原因。在您的示例中,strArray不是单元格数组,所以我认为这就是它失败的原因。hmmmError在统一输出中使用==>cellfun非标量,在索引1处,输出1。将“UniformOutput”设置为false。
使用此选项,我如何添加另一个if-else?例如,它可以精细地将绿色、蓝色更改为颜色,但如果我想将黑色、白色更改为阴影。。。我不知道如何添加另一个if-else?elseif(strcmpi('black',str)| | strcmpi('white',str))y='shade';hmmm在统一输出中使用==>cellfun非标量时出错,在索引1处,输出1。将“UniformOutput”设置为false。
使用此选项,我如何添加另一个if-else?例如,它可以精细地将绿色、蓝色更改为颜色,但如果我想将黑色、白色更改为阴影。。。我不知道如何添加另一个if-else?elseif(strcmpi('black',str)| | strcmpi('white',str))y='shade';