Çok uzun bir vektör 1xr v
ve çok uzun bir vektör w
1xs ve bir A
rxs matrisine sahibiz (ancak boyut olarak çok büyük).Matlab aşağıdakileri optimize etmez mi?
Ben Matlab tarafından optimize edilmesi için aşağıdaki yüzden bellek ile derde olmaz bekliyordum: Ben çünkü Matlab aslında tam v'*w
matris oluşturmak için çalışıyor gibi
A./(v'*w)
ama öyle görünüyor bellek sorunu dışında çalışan. Bunu aşmanın bir yolu var mı? Tüm v'*w
değerini hesaplamaya gerek olmadığını unutmayın, çünkü A
'un birçok değeri 0
'dur.
DÜZENLEME: Bu mümkün olsaydı, tek yolu A(find(A))./(v'*w)(find(A));
yapmak olacaktır yapmak ama ilk hesaplanması ve içinde koymadan bir matris (bu durumda v'*w
) bir alt kümesini seçemezsiniz bir değişken.
[ 'spfun'] (http://www.mathworks.com/help/matlab/ref/spfun.html) - "sıfırdan farklı seyrek matris elemanlarına işlevini uygula" –
mmm ... spfun iyi bir lider olabilir, ancak bu durumda nasıl kullanılacağını bilmiyorum. İlk olarak, değerlendirilen işlev, uygulandığı matris hücresinin dizininden habersizdir. – kloop