2017-03-12 32 views

回答

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 
+0

尼斯一行溶液。 –

+0

好的。我用過它。 – Ajax

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 
3

使用bsxfun你可以寫:

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

在MATLAB R2016b或八度,由於隱式膨脹,可以寫爲:

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

我不知道是否有任何問題無法用'bsxfun'回答:) – brainkz

+0

此解決方案也很有用。在我的代碼中使用它。 – Ajax

相關問題