0

我将如何将两个数组的值映射到一个函数并将结果作为数组返回?

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

所以基本上我会得到一个 XY val 数组:

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

谢谢。

编辑 - 更新了所需的输出数组

4

2 回答 2

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

试试上面的代码。

于 2013-05-17T05:38:18.010 回答
0

你可以这样进行:

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

我希望这有帮助。

于 2013-05-17T06:53:14.227 回答