在Matlab中将函数应用于两个矩阵之间的所有列对

时间:2014-12-23 05:34:42

标签: matlab

我有一个Matlab函数z = foo(x, y),它将两个列向量作为输入并输出一个标量。现在我想将此函数应用于两个矩阵A(维度n * d1)和B(维度n * d2)并生成d1 * d2矩阵,使得output(i, j) = foo( A(:, i), B(:, j) )。它应该基本上类似于将corr函数应用于两个矩阵的行为。

我尝试了this link中的解决方案,但在第一个答案中遇到了同样的问题,而第二个解决方案中的meshgrid步骤太慢了。

有什么建议吗?非常感谢提前!

1 个答案:

答案 0 :(得分:0)

如果foo接受矩阵,则:

%Find dimensions
dA = size(A,2);
dB = size(B,2);


%Generate a list of all possible column pairs for the two matrices
indA = ceil((1:dA*dB)/dA);
indB = mod(0:dA*dB, dB)+1;

X = A(:, indA);
Y = B(:, indB);

z = foo(X,Y)

然后你可能能够将z重塑为你想要的东西