我有一个这样的元胞数组:[...
0
129
8...2...3...4
6...4
0
我只想查找并替换特定的值,但我不能使用普通函数,因为单元格的长度不同。我需要同时替换许多特定值,并且没有关于如何替换值的通用函数。然而,有时几个输入值应该被相同的输出替换。
所以我想说
对于值 1:129
'如果 0,则 9'
'elseif 1 然后 50'
'elseif 2 或 3 或 4 然后 61'等...最多 129
这些规则应用于整个数组。
我试过自己解决这个问题,但仍然一无所获。请帮忙!
由于您的值似乎跨越 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
我是一名优秀的程序员,十分优秀!