में कॉलम सहसंबंध द्वारा कॉलम की गणना करने का एक तेज़ तरीका क्या है मेरे पास दो बहुत बड़ी matrices (60x25000) हैं और मैं केवल दो मैट्रिक्स के बीच कॉलम के बीच सहसंबंध की गणना करना चाहता हूं। उदाहरण के लिए:matlab
corrVal(1) = corr(mat1(:,1), mat2(:,1);
corrVal(2) = corr(mat1(:,2), mat2(:,2);
...
corrVal(i) = corr(mat1(:,i), mat2(:,i);
छोटे मैट्रिक्स के लिए मैं बस का उपयोग कर सकते हैं:
colCorr = diag(corr(mat1, mat2));
लेकिन जैसा कि मैंने स्मृति से बाहर चलाने के इस बहुत बड़े मैट्रिक्स के लिए काम नहीं करता। मैंने सहसंबंधों की गणना करने और फिर परिणामों को संयोजित करने के लिए मैट्रिस को टुकड़ा करने पर विचार किया है, लेकिन यह वास्तव में रुचि रखने वाले कॉलम संयोजनों के बीच सहसंबंध की गणना करने के लिए अपशिष्ट की तरह लगता है।
क्या मुझे रूचि है कि सीधे गणना करने का कोई त्वरित तरीका है?
संपादित: मैं अतीत में एक पाश का उपयोग किया है, लेकिन इसके अभी जिस तरह धीमा करने के लिए:
mat1 = rand(60,5000);
mat2 = rand(60,5000);
nCol = size(mat1,2);
corrVal = zeros(nCol,1);
tic;
for i = 1:nCol
corrVal(i) = corr(mat1(:,i), mat2(:,i));
end
toc;
यह ~ 1 सेकंड
tic;
corrVal = diag(corr(mat1,mat2));
toc;
यह लेता है ~ 0.2 सेकंड
लेता है
मैंने आपकी पोस्ट में एक संपादन किया; कृपया जांचें कि यह सही है या नहीं। – Jacob
इसके अलावा, लूप के लिए स्पष्ट क्या गलत है? – Jacob
संपादन सही है, धन्यवाद! इसके अलावा लूप – slayton