以下MATLAB代碼在10^5方陣A上永遠運行。但是,它在10^3方陣上運行幾秒鐘。有什麼方法可以加速嗎?在有條件的巨大矩陣上計數平均值
function [meanNV]=calcMeanNV_k(A,V,d)
%A: input matrix (n x n)
%V: eigenvectors of k-th largest eigenvalues (n x 1)
%d: degrees of each node (n x 1)
%meanNV: mean of neighbors vectors (n x 1)
m=size(A,2);
meanNV=zeros(113336);
for i=1:m
sumNode = 0;
for j=1:m
if A(i,j)==1
sumNode=sumNode+V(j);
end
end
[meanNV(i)]=sumNode/d(i);
end
@rayryeng您好,感謝您的幫助。我在前面的代碼中犯了一個錯誤。 sumNode = 0的初始化;應該在循環內部之外。 A表示節點之間的鏈接。如果節點i和j連接,則A(i,j)= 1。否則,A(i,j)= 0. 我想獲得i的鄰居節點的所有特徵向量的平均值。鄰居節點都是與節點i有連接的節點,其中A(i,j)= 1。它應該累積在A中相應位置上有1的所有V(j)。然後用d(i)除和。 d(i)表示來自節點i的連接度/總數。謝謝。 – ARSN