2016-10-26 1 views
0

У меня есть сценарий Matlab, который выглядит следующим образом:Добавьте такое же значение для нескольких векторов в Matlab

onsets=cell(1,5); 
onsets{1}=[353.1 389.9 404 431.3]; 
onsets{2}=[369.8 385.8 427.7]; 
onsets{3}=[344.6 359.7 397.5]; 
onsets{4}=[364.7 415.1 420.1]; 
onsets{5}=[146 174.6 204.2]; 

Я хочу, чтобы добавить 2.24 ко всем векторам (теперь я делаю это вектор вектора) и получить выход, который будет выглядеть так:

onsets=cell(1,5); 
onsets{1}=[355.3400 392.1400 406.2400 433.5400]; 
onsets{2}=[372.0400 388.0400 429.9400]; 
onsets{3}=[346.8400 361.9400 399.7400]; 
onsets{4}=[346.8400 361.9400 399.7400]; 
onsets{5}=[366.9400 417.3400 422.3400]; 

Каков более быстрый и эффективный способ его выполнения?

ответ

4

Вы можете использовать cellfun применить операцию ко всем содержимым ячейки:

result = cellfun(@(x) x+2.24, onsets, 'UniformOutput', false); 
+2

Я предполагаю, что это самое естественное решение одна линия, но учтите, что под капотом этого не будет сильно отличаться от цикла по массив ячеек и добавление 2.24 на каждом этапе цикла. - Я бы сказал, просто используйте, который вы найдете наиболее читаемым. –

Смежные вопросы