我有两个大小为n
和m
a = [a1 a2 ... an];
b = [b1 b2 ... bm];
我希望"乘以"他们得到了结果:
c =
a1*b1 a1*b2 ... a1*bm
a2*b1 a2*b2 ... a2*bm
. . .
. . .
an*b1 an*b2 ... an*bm
有没有简单的方法来获得这样的结果而不诉诸于循环或矩阵?
答案 0 :(得分:5)
将bsxfun
应用于a
的列版本和b
的行版本:
a = 1:3; %// example input
b = 10:10:40; %// example input
c = bsxfun(@times, a(:), b(:).'); %'// or bsxfun(@times, b(:).', a(:));
结果:
c =
10 20 30 40
20 40 60 80
30 60 90 120
或者,可能更快,使用a
b
作为列向量时间c = a(:)*b(:).';
作为行向量,按顺序:
c = kron(a(:), b(:).'); %'// or kron(b(:).', a(:))
您想要的内容也可以解释为matrix multiplication,因此您可以使用Kronecker product:
$search = 9;
$order_list = array ( array ("tangible", 1, 8, 33, 19000),
array ("tangible", 1, 9, 8, 19000),
array ("tangible", 6, 3, 24, 19000),
array ("tangible", 6, 2, 10, NULL),
array ("tangible", 1, 17, 11, 28000));
foreach ($order_list as $string){
if ($string[2] == $search){
print_r( $string);
}
}