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
)。