在 matlab 中更改单元格值
Changing cell values in matlab
我在 matlab 中有一个变量作为 101x2 元胞数组,我需要重新编码字符串以进行分析。
例如,我想通过检查所有红苹果细胞将 {'red apple'} 更改为 {'blue banana'}。
我试过这样的东西;
A.mycell(cell2mat(cellfun(@(elem) elem == 'red apple', A.mycell(:, :),
'UniformOutput', true))) = {'blue banana'};
但这没有用,我怎样才能改变这样的东西?
这也行不通;
ind= find(A.mycell=={'red apple'})
A.mycell(ind)= 'blue banana'
Matlab 的 strcmp
函数在这种情况下很有用。
此处要注意的另一个关键事项是您可以使用 myCellArray{row, col}
访问单元格元素内的字符串。使用 myCellArray(row, col)
会给你一个里面有字符串的单元格。
clc; clear;
myCellArray = {'red apple' , 'green pear' ;...
'green pear' , 'red apple' ;...
'red apple' , 'red pineapple';...
'orange lemon', 'red apple'} ;
keyword = 'red apple';
for row = 1:size(myCellArray,1)
for col = 1:size(myCellArray,2)
if strcmp(keyword, myCellArray{row,col})
myCellArray{row,col} = 'blue banana';
end
end
end
myCellArray
输出
myCellArray =
4×2 cell array
{'blue banana' } {'green pear' }
{'green pear' } {'blue banana' }
{'blue banana' } {'red pineapple'}
{'orange lemon'} {'blue banana' }
我在 matlab 中有一个变量作为 101x2 元胞数组,我需要重新编码字符串以进行分析。
例如,我想通过检查所有红苹果细胞将 {'red apple'} 更改为 {'blue banana'}。
我试过这样的东西;
A.mycell(cell2mat(cellfun(@(elem) elem == 'red apple', A.mycell(:, :),
'UniformOutput', true))) = {'blue banana'};
但这没有用,我怎样才能改变这样的东西?
这也行不通;
ind= find(A.mycell=={'red apple'})
A.mycell(ind)= 'blue banana'
Matlab 的 strcmp
函数在这种情况下很有用。
此处要注意的另一个关键事项是您可以使用 myCellArray{row, col}
访问单元格元素内的字符串。使用 myCellArray(row, col)
会给你一个里面有字符串的单元格。
clc; clear;
myCellArray = {'red apple' , 'green pear' ;...
'green pear' , 'red apple' ;...
'red apple' , 'red pineapple';...
'orange lemon', 'red apple'} ;
keyword = 'red apple';
for row = 1:size(myCellArray,1)
for col = 1:size(myCellArray,2)
if strcmp(keyword, myCellArray{row,col})
myCellArray{row,col} = 'blue banana';
end
end
end
myCellArray
输出
myCellArray =
4×2 cell array
{'blue banana' } {'green pear' }
{'green pear' } {'blue banana' }
{'blue banana' } {'red pineapple'}
{'orange lemon'} {'blue banana' }