Как оценить несколько аргументов и получить несколько выходных данных с помощью cellfun в MATLAB

#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);