#matlab
#matlab
Вопрос:
Укажите следующие две переменные:
A={[];[1 2];[3]};
B={[10 20 30];[40 50 60];[70 80 90]};
Мне нужно получить C1 и C2, которые:
C1={[];[40 50];[90]}; % Corresponding value B(A), like B{2,1}([1 2])=[40 50];
C2={[];[45];[90]}; % Mean, like for ex: mean(B{2,1}([1 2]))=mean([40 50])=45;
Как вы можете видеть, мне нужно что-то сделать с помощью cellfun, но я не знаю, как оценить два или более входных аргумента и получить два или более выходных данных.
Нравится:
[C1,C2]=cellfun(@function,A,B)
Я буду очень признателен за любую информацию, спасибо!
Ответ №1:
Это просто с arrayfun
помощью and cellfun
. Сначала вычислите C1
, и из этого вычислите C2
:
C1 = arrayfun(@(k) B{k}(A{k}), 1:size(A,1), 'UniformOutput', false);
C2 = cellfun(@mean, C1);