SORU
14 Mart 2011, PAZARTESİ


Nasıl bilinen min ve max değeri ile sayı aralığını küçültün

Sayılar bir dizi çekmek ve değerleri bir dizi sığdırmak için küçültün nasıl anlamaya çalışıyorum. Bunu istemelerinin sebebi, java swing bir jpanel içinde elips çizmek için çalışıyorum. Her elipsin genişliği ve yüksekliği 1-30 demek aralığında olmak istiyorum. Benim veri kümesinden en küçük ve en büyük değerleri bulmak yöntemler var, ama min ve max kadar zamanı olmayacak. Bir kolay yolu bunu yapmak için vardır?

CEVAP
14 Mart 2011, PAZARTESİ


Hadi [a,b] 4 ** çeşitlilikte. Karşılayan (sürekli) fonksiyonu arıyorsunuz

f(min) = a
f(max) = b

Sizin durumunuzda 1 b olurdu 30, ama daha basit bir şey ile başlayın ve ne kadar geniş bir alana [min,max] göster çalışın olur [0,1].

Bir işlev min koyarak ve 0 buradan yapılabilir

f(x) = x - min   ===>   f(min) = min - min = 0

Bizim istediğimiz neredeyse. Ama max koyarak bizi biz aslında 1 istediğinizde max - min verecek. Bu ölçek için elde ederiz:

        x - min                                  max - min
f(x) = ---------   ===>   f(min) = 0;  f(max) =  --------- = 1
       max - min                                 max - min

tam da bizim istediğimiz gibi. Bir tercüman ve bir Ölçekleme yapmamız gerekiyor. Şimdi bunun yerine a b, keyfi değerleri almak istiyorsak biraz daha karmaşık ihtiyacımız var:

       (b-a)(x - min)
f(x) = --------------    a
          max - min

x min a verir ve max koyarak koyarak b veren doğrulayabilirsiniz.

Ayrıca (b-a)/(max-min) yeni aralığın boyutunu ve orijinal aralığının büyüklüğü arasında bir ölçeklendirme faktörü olduğunu fark edebilirsiniz. Yani gerçekten ilk -min doğru faktörle Ölçekleme x yazılı ve sonra a yeni asgari değer geri çevriliyor.

Bu yardımcı olur umarım.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • kev5124

    kev5124

    9 Kasım 2008
  • SavageLuxxxGaming - Daily NBA 2K15 & NBA Live 15 Enjoy And Subscribe!

    SavageLuxxxG

    11 Ocak 2013
  • superflyy88

    superflyy88

    8 ŞUBAT 2009