Matlab 列向量与矩阵的元素相乘
我有一个Matlab 列向量与矩阵的元素相乘,matlab,bsxfun,Matlab,Bsxfun,我有一个n-by-1列向量A,和一个n-by-m矩阵B。我想用A乘以B的每一列,以元素为单位,创建一个矩阵n×m矩阵C 例如: % Input A = [1; 2; 3]; B = [1 2 3 4; 5 6 7 8; 9 10 11 12]; C = % Some function of A and B % Output: C = [1 2 3 4; 10 12 14 16; 27 30 33 36] 我的问题是:这可以在一行中完成,而不必创建循环吗?(MATLAB 8.1)您正在寻找的是
n-by-1
列向量A
,和一个n-by-m
矩阵B
。我想用A
乘以B
的每一列,以元素为单位,创建一个矩阵n×m
矩阵C
例如:
% Input
A = [1; 2; 3];
B = [1 2 3 4; 5 6 7 8; 9 10 11 12];
C = % Some function of A and B
% Output:
C = [1 2 3 4; 10 12 14 16; 27 30 33 36]
我的问题是:这可以在一行中完成,而不必创建循环吗?(MATLAB 8.1)您正在寻找的是
bsxfun
。要实现您想要的结果,您只需:
C = bsxfun(@times, A, B);
查看支持的函数的完整列表,然后单击此处。您正在查找
bsxfun
。要实现您想要的结果,您只需:
C = bsxfun(@times, A, B);
查看支持的函数的完整列表,请点击此处。C=B.*repmat(A,1,size(B,2))
是一种(旧的、低效的)方法C=bsxfun(@times,A,B)
是更新的语法,而且更好。注意:在你的例子中,你已经构建了C
关于它的实际结果的转置(它是m-by-n
,但你说它应该是n-by-m
)。C=B。*repmat(A,1,size(B,2))
是一种(旧的,低效的)方法C=bsxfun(@times,A,B)
是更新的语法,而且更好。注意:在你的例子中,你已经构建了C
,根据它的实际结果(它是m-by-n
,但你说它应该是n-by-m
)。