2011-03-29 80 views
4

值I有一个单元阵列是这样的:[...查找和替换在单元阵列

8 ... 2 ... 3 ... 4
6 .. .4

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

所以想要说
为值1:129
'如果为0,则9' 'ELSEIF 2或3或4,则61'
'ELSEIF 1然后50'
等...最多129

其中这些规则应用于整个数组。

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

回答

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 
+0

完美地工作。谢谢! – Tom 2011-03-29 14:49:36