2011-03-29 82 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