[]

Matlab - for döngülerinden kurtulma

Aslında herhangi bir programlama dili için de geçerli. for döngüleri programı çok yavaşlatıyor ve içiçe 3-4 for döngüsü var. Büyük bir program. En fazla 10 dakika çalışması gereken program, 4-5 saat çalışıyor ve for döngülerinden kurtardıkça hızlanıyor ama nasıl daha hızlı hale getireceğimi bilemiyorum. Basit algoritma mantığı ile yapıyorum her şeyi. Bazı şeyleri araştırdıkça buluyorum, benim 15-20 satırlık kodum, 2 satıra indirgenebiliyor. bazılarını nasıl araştıracağımı bilmiyorum. Tavsiyesi olan var mı?




 
pre-allocation?


  • uctumdageldim  (19.07.17 15:30:39) 
Pre-allocation zaten yapıyorum. Sonra for döngüsü başlıyor ve o vektörlerin, matrislerin içini dolduruyor. Demek istediğim pre-allocation'a ve for döngüsüne gerek duymadan kullanabileceğim, kolay komutların varlığını nasıl araştırabilirim.

En basit örneği şu olabilir. Bir vektördeki (vektörün adı a olsun) en büyük sayının indisini bulmak için

x=0;
for i=1:size(a,1)
if a(i)>x
x=a(i);
idx=i;
end
end

tarzı bir döngü kullanmak yerine,
idx=find(a==max(a))
gibi kolaylıklar.

Tabii, program karışık ama mutlaka kurtulmanın yolları vardır koskoca Matlab'de. stackoverflow, mathworks'te soruyorum ama üç milyon tane for döngüsünü arka arkaya nasıl soracağımı bilmiyorum. Bazen Google'dan derdimi aratıp ulaşabiliyorum kolay sonuçlara ama bazen de derdim aşırı spesifik oluyor. Bazen de 'Bu soru soruldu' diye tersliyorlar; ki haklı oluyorlar, sorulmuş ama çok genel bir adla sorulmuş. Benim aradığımın o genel ada uygun olduğunu daha önceden bilmiyordum.
  • aychovsky  (19.07.17 15:37:57 ~ 15:40:55) 
Üzerinde çalıştığın konuyla ilgili matlab fonksiyonlarını araştırman lazım veya toolboxlar vardır, onlara bakabilirsin işine yarayan olabilir.


  • reactionic  (19.07.17 15:42:48) 
Toolbox pek yok. Ana algoritma zaten Toolbox'u olmayan bir algoritma. Ben de ana algoritmanın yerini tutacak yeni bir algoritma test ediyorum zaten, algoritma bizim önerimiz. Bir de zaten bu projenin çıktısı, bir Toolbox yaratmak olacak.


  • aychovsky  (19.07.17 15:44:22 ~ 15:46:50) 
1
buraya yazılanların hakları Sir Anthony Hopkins'e aittir.
yazan eden compumaster, ilgilenen eden fader
modere edenler angelus, Artibir, aychovsky, baba jo, basond, compumaster, deckard, duyulmasi gerektigi kadar, fader, fraise, groove salad, kahvegibi, kaymaktutmayansicaksut, kibritsuyu, monstro, pandispanya, robin, ron dennis
bu sitede yazılanların hiçbiri doğru değildir. site içeriği küçükler için sakıncalı olabilir. yazılardan yazarları sorumludur. kaynak göstermeden alıntılanamaz. devlet tarafından atanmış bir kurumun internet üzerinde kimin hangi bilgiye ulaşıp ulaşamayacağına karar vermesi insan haklarına aykırıdır. web siteleri kullanıcıların istekleri doğrultusunda bağlandıkları yerlerdir. kullanıcılar isterlerse bir web sitesine bağlanmayabilirler. bu güçleri ve imkanları mevcuttur. bir kullanıcı bir siteye bağlanmak istiyorsa bu onun tercihi ve hakkıdır. bağlanmak istemiyorsa bu yine onun tercihi ve hakkıdır. halkın kendisine hizmet etmesi için görevlendirdiği kurumlar hadlerini aşıp halka neye ulaşıp ulaşmayacağını bilmeyen cahil cühela muamelesi edemezler. ebeveynlerin çocuklarını sakıncalı içeriklerden koruması için çok sayıda bedava ve ücretli yazılım mevcuttur. bu yazılımlar bir web tarayıcısını kullanmaktan daha karmaşık teknik bilgi gerektirmemektedir. devletin milletini küçük düşürmesi ve ebleh yerine koyması yasaktır. Skimlinks ile linkler üzerinden yönlendirme payı alınmaktadır.