Benim sorum: Matlab sorularına SO hakkında çok iyi cevapların sık sık işlevi kullandığını fark ettim bsxfun
. Neden?
Motivasyon: için Matlab belgelerinde bsxfun
aşağıdaki örnek verilmiştir:
A = magic(5);
A = bsxfun(@minus, A, mean(A))
Tabii ki aynı işlemi kullanarak yapabiliriz:
A = A - (ones(size(A, 1), 1) * mean(A));
Aslında basit bir hız testi, ikinci yöntemin yaklaşık% 20 daha hızlı olduğunu gösterir. Peki neden ilk yöntemi kullanmalıyım? Sanırım kullanım bsxfun
"manuel" yaklaşım daha hızlı olacak bazı durumlar vardır . Böyle bir durumun bir örneğini ve neden daha hızlı olduğuna dair bir açıklama görmekle gerçekten ilgilenirim.
Ayrıca, yine bu sorunun Matlab belgelerinden son bir öğe bsxfun
: "C = bsxfun (eğlence, A, B) işlev tutamacı eğlencesi tarafından belirtilen öğe tekli ikili işlemi, singleton ile A ve B dizilerine uygular genişletme etkin. "Singleton genişletmesi etkin" ifadesi ne anlama geliyor?
timeit
size / angainor / Dan'ın sağladığı bağlantıdaki işlevi okuyarak öğrendim .
tic...toc
satırların etrafına koyarsanız , kodun hızı işlevleri belleğe okumak zorunda kalmanıza bağlı olacaktır.