将第i行中的矩阵元素乘以第一行中的第i个元素

时间:2017-03-12 17:37:04

标签: arrays matlab matrix

我有以下矩阵:

s=[1,2,3; 4,5,6;7,8,9];  

1| 2| 3  
4| 5| 6  
7| 8| 9  

现在我希望第一行和第i列中的每个整数乘以相应的i行号。

期望的输出:

1 | 2  | 3  
8 | 10 | 12  
21| 24 | 27  

3 个答案:

答案 0 :(得分:5)

请注意,如果A是对角矩阵,则A * x将x的行按A中对角线指定的权重进行缩放。因此,对于您的问题,您只需使用:

s = [1,2,3; 4,5,6;7,8,9];
%  1     2     3
%  4     5     6
%  7     8     9

s = diag([1:size(s,1)]) * s;
%  1     2     3
%  8    10    12
% 21    24    27

答案 1 :(得分:3)

使用bsxfun你可以写:

bsxfun(@times,s,(1:size(s,1)).')

在MATLAB R2016b或Octave中,由于隐式扩展,可以写成:

s .* (1:size(s,1)).'

答案 2 :(得分:2)

s = [1,2,3; 4,5,6;7,8,9];

 1     2     3
 4     5     6
 7     8     9

[~, y] = size(s);
a = s(ones(y,1),:).';
b = a.*s;

b  = 
  1     2     3
  8    10    12
 21    24    27