How to multiply a matrix by certain numbers?

1 次查看(过去 30 天)
I want to multiply a matrix by a column vector in this way:
(4 2 3 8;7 9 1 5;6 4 8 3) * (4;8;2)
and then the result i want to get is:
(4*4 2*4 3*4 8*4;7*8 9*8 1*8 5*8;6*2 4*2 8*2 3*2)
  3 个评论
madhan ravi
madhan ravi 2019-6-30
xy = repmat(x,1,1,numel(x)) .* reshape(y,1,1,[]); % for version <=2016b bsxfun(@times,repmat(x,1,1,numel(x)) , reshape(y,1,1,[]))
Wanted = reshape(squeeze(xy).',1,[])
Stephen23
Stephen23 2019-6-30
编辑:Stephen23 2019-6-30
@Shubha Baravani: the simple MATLAB way:
>> x = [1,2,3,4];
>> y = [2,3,4,5];
>> z = kron(x,y)
z =
2 3 4 5 4 6 8 10 6 9 12 15 8 12 16 20

请先登录,再进行评论。

采纳的回答

Stalin Samuel
Stalin Samuel 2015-9-23
A = [4 2 3 8;7 9 1 5;6 4 8 3];
B = [4;8;2]
for i = 1:length(B)
C(i,:) = A(i,:)*B(i)
end
  1 个评论
Stephen23
Stephen23 2015-9-23
编辑:Stephen23 2019-6-30
Note that:
  1. The array C expands on every iteration, which is slow and inefficient. Preallcoation would resolve this.
  2. Using a loop is more complex than using vectorized code.
  3. The variable name i should be avoided, as it is the name of the imaginary unit.

请先登录,再进行评论。

更多回答(1 个)

Stephen23
Stephen23 2015-9-23
编辑:Stephen23 2015-9-23
Just use bsxfun:
>> X = [4 2 3 8;7 9 1 5;6 4 8 3];
>> Y = [4;8;2];
>> bsxfun(@times,X,Y)
ans =
16 8 12 32
56 72 8 40
12 8 16 6

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by