查找并替换单元格数组中的值

时间:2011-03-29 11:49:20

标签: arrays matlab replace cell

我有一个像这样的单元格数组:[...

0
129个
8 ... 2 ... 3 ... 4
6 ... 4
0

我只想查找并替换特定值,但我不能使用普通函数,因为单元格的长度不同。我需要同时替换许多特定值,并且没有关于如何替换值的一般功能。但是,有时应使用相同的输出替换多个输入值。

所以我想说 对于值1:129
'如果为0,则为9' 'elseif 1则50' 'elseif 2或3或4 then 61' 等等......高达129

这些规则适用于整个阵列。

我试图自己解决这个问题,但仍然无处可去。请帮忙!

1 个答案:

答案 0 :(得分:3)

由于您的值似乎跨越0到129的范围,因此一种解决方案是向这些值添加一个(因此它们跨越1到130的范围)并将它们用作替换值向量的索引。然后,您可以使用函数CELLFUN将此操作应用于每个单元格。例如:

>> C = {0, 129, [8 2 3 4], [6 4], 0};  %# The sample cell array you give above
>> replacement = [9 50 61 61 61 100.*ones(1,125)];  %# A 1-by-130 array of
                                                    %# replacement values (I
                                                    %# added 125 dummy values)
>> C = cellfun(@(v) {replacement(v+1)},C);  %# Perform the replacement
>> C{:}  %# Display the contents of C
ans =
     9

ans =
   100

ans =
   100    61    61    61

ans =
   100    61

ans =
     9