在 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'  }