2013-05-17 8 views
0

Как я мог бы сопоставить значения TWO-массивов с функцией и вернуть результат в виде массива?Matlab arrayfun сопоставление с использованием двух массивов?

arr = [1, 2, 3]; 
arr2 = [1, 4, 5]; 

val= arrayfun(@(x) func(arr, arr2)) 

function val = func(x, y) 
// Takes in two arrays, and does a double 'for' loop 
// for all values in x, for all values in y, do x*y 

Поэтому в основном я бы в конечном итоге с массивом X Y Валу:

1 1 1 2 2 2 3 3 3 <- X values 
1 4 5 1 4 5 1 4 5 <- Y values 
1*1, 1*4, 1*5, 2*1, 2*4, 2*5, 3*1, 3*4, 3*5 <- X*Y values 

Спасибо.

EDIT - Обновленный желаемый выходной массив

+0

Вы хотите получить результирующий массив для хранения продукта? –

+0

Не совсем, в 'func' будет другая формула. Я просто использую продукт в качестве примера. – Travv92

+0

хорошо это может быть реализовано с помощью вложенных циклов, которые вы уже знаете, с какими трудностями вы сталкиваетесь? –

ответ

0
   arr=[1,2,3]; 
      arr2=[1,4,5]; 
      product=zeros(1,9); 
      index=1; 
      for i=1:length(arr) 
       for j=1:length(arr2) 
        product(index)=arr(i)*arr2(j); 
        index=index+1; 
       end 
      end 

попробовать приведенный выше код.

+0

Спасибо, вот и все! – Travv92

0

Вы можете продолжить этот путь:

res = arrayfun(@(i) arr(i).*arr2,1:numel(arr),'UniformOutput',0); 
final_res = cat(2,res{:}); 

Я надеюсь, что это помогает.

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