0
目前,我需要開發一種算法來解決優化問題總和元素,以獲得對應矩陣
我遇到一個問題關於我的方式來計算設施之間的距離不夠高效。
現在,我給出了矩陣,這是設施的長度。
A = [0.0300 % The left most facility
0.0400 % 2nd
0.0500 % 3rd
0.0200 % 4th
0.0600]; % The right most facility
說,我想找到的兩個設施的中心之間的距離(假設之間沒有間隙),例如:
第二和第五設施的中心之間的距離= 0.0400/2 + 0.0500 + 0.0200 + 0.0600/2 = 0.1200
從這一點,我們可形成矩陣B這是我想要的輸出(可以是對稱的基體還)
B = [0 0.0350 0.0800 0.1150 0.1550
0 0 0.0450 0.0800 0.1200
0 0 0 0.0350 0.0750
0 0 0 0 0.0400
0 0 0 0 0];
我是儘量避免嵌套爲廁所頁。這是我能想到爲了了get矩陣B.
n = numel(A);
x = triu(repmat(A,1,n));
B = zeros(5);
x = x - diag(diag(x)/2);
for i=1:4
x(i,:) = x(i,:)/2;
y = x;
B(i,:) = sum(y);
x(i,:) = 0;
end
B = B - diag(diag(B))
當然,矩陣大小在現實中非常大的最好的,我的方式是不太有效。獲得矩陣B而不是使用for循環有什麼技巧嗎?