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

Arrays 将第i行中的矩阵元素乘以第一行中的第i元素,arrays,matlab,matrix,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 请注意,如果A是对角矩阵,则A*x根据A中对角线指定的权重缩放x行。因此,对于您的问题,您可以简单地使用: s = [1,2,3; 4,5,6;7,8,9]; % 1 2 3 % 4 5

我有以下矩阵:

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  

请注意,如果A是对角矩阵,则A*x根据A中对角线指定的权重缩放x行。因此,对于您的问题,您可以简单地使用:

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

使用
bsxfun
可以编写:

bsxfun(@times,s,(1:size(s,1)).')
在MATLAB R2016b或倍频程中,由于隐式展开,可以写成:

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

很好的单线解决方案,很好。我已经用过了。我想知道是否有任何问题无法用
bsxfun
:)回答
s .* (1:size(s,1)).'