найти и заменить значения в массиве ячеек - PullRequest
4 голосов
/ 29 марта 2011

У меня есть такой массив ячеек: [...

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

Я просто хочу найти и заменить определенные значения, но я не могу использовать обычную функцию, потому что ячейки имеют разную длину. Мне нужно заменить много определенных значений одновременно, и нет общей функции о том, как значения заменяются Однако иногда несколько входных значений следует заменить одним и тем же выходом.

так что я хочу сказать
для значений 1: 129
'если 0, то 9'
'если 1, то 50'
'если 2 или 3 или 4, а затем 61' и т. д. до 129

где эти правила применяются ко всему массиву.

Я пытался решить это сам, но все равно ничего не получилось. Пожалуйста, помогите!

1 Ответ

3 голосов
/ 29 марта 2011

Поскольку ваши значения охватывают диапазон от 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...