我有以下矩阵:
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
答案 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