मैं हाल ही में एक पिछले question मेरे द्वारा पूछे गए एक "सरल" नेस्टेड लूप vectorize करने के लिए कैसे सीखा है पर निर्भर करता है vectorizing। j
और k
शर्तों (यानी B(j)*((k-1>0)+1)
के संयोजन एक त्रिकोणीय देता है: हालांकि, अब मैं निम्नलिखित पाशएक नेस्टेड लूप जहां एक पाश चर अन्य
A=rand(80,80,10,6,8,8);
I=rand(size(A1,3),1);
C=rand(size(A1,4),1);
B=rand(size(A1,5),1);
for i=1:numel(I)
for v=1:numel(C)
for j=1:numel(B)
for k=1:j
A(:,:,i,v,j,k)= A(:,:,i,v,j,k)*I(i)*C(v)*B(j)*((k-1>0)+1);
end
end
end
end
तो अब k
j
में निर्भर करता है ... मैं अब तक क्या कोशिश की है vectorize करने के लिए भी कोशिश कर रहा हूँ मैट्रिक्स है कि मैं स्वतंत्र रूप से vectorize के लिए प्रबंधन:।
B2=tril([ones(8,1)*B']');
B2(2:end,2:end)=2*B2(2:end,2:end);
लेकिन है कि मुझे (जे, ट) मैट्रिक्स को सही ढंग से शेष पाश vectorize के लिए इसका इस्तेमाल करने के लिए एक रास्ता देती है शायद मैं भी गलत रास्ते में हूँ। .. तो मैं उस प्रकार के लूप को सदिश कैसे बना सकता हूं?
अद्भुत - यहाँ कोड
tril
के साथ-साथ इस तरह के एक पैटर्न का उपयोग करता है है! यह बहुत अधिक सुरुचिपूर्ण है और @ नतन के समाधान से 25% तेज है। – Max@ मैक्स बहुत बढ़िया! यह भी जानना अच्छा है! – Divakar
यह समाधान मेरे [रामानुजन] याद दिलाता है (https://en.wikipedia.org/wiki/Srinivasa_Ramanujan)। मुझे बिल्कुल पता नहीं है कि आप उस जवाब के साथ कैसे नरक में आए थे। – rayryeng