Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 查找并替换单元格数组中的字_Matlab - Fatal编程技术网

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不是单元格数组,所以我认为这就是它失败的原因。hmmm
Error在统一输出中使用==>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';