SORU
30 Mayıs 2009, CUMARTESİ


Başka bir dizi bir dizi oranını koruyarak dönüştürmek

Başka sayıların bir aralığı, oranı bakımı dönüştürmek için çalışıyorum. Matematik benim güçlü noktası değildir.

Nokta değerleri normal aralığın çok daha az olsa da 16000.00 için -16000.00 aralığı olabilir bir resim dosyası var. Yapmak istediğim şey tam sayı aralığı bu değerler 0 en küçük değeri nerede 0-100, sıkıştırmak, 100 en büyük değeridir. Bazı hassas kayıp olsa bile göreceli bir oran tutmalı arasındaki tüm noktaları python ile bunu yapmak istiyorum ama daha genel bir algoritma yeterli olacaktır. Min/maks ya da aralığı ayarlanabilir bir algoritma (yani, ikinci aralığı 800 -50 olabilir yerine 0'dan 100) tercih ederim.

CEVAP
30 Mayıs 2009, CUMARTESİ


NewValue = (((OldValue - OldMin) * (NewMax - NewMin)) / (OldMax - OldMin))   NewMin

Ya da biraz daha okunabilir:

OldRange = (OldMax - OldMin)  
NewRange = (NewMax - NewMin)  
NewValue = (((OldValue - OldMin) * NewRange) / OldRange)   NewMin

Ya da eski bir aralığı 0 olduğu için korumak içinOldMin = OldMax):

OldRange = (OldMax - OldMin)
if (OldRange == 0)
    NewValue = NewMin
else
{
    NewRange = (NewMax - NewMin)  
    NewValue = (((OldValue - OldMin) * NewRange) / OldRange)   NewMin
}

Bu durumda Olası yeni değerler keyfi olarak birini seçmek zorunda olduğumuzu unutmayın. Bağlam, mantıklı seçenekler bağlı olabilir: NewMin (örnek bakın), NewMax (NewMin NewMax) / 2

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 8lacKy

    8lacKy

    30 Mart 2009
  • LimeFire

    LimeFire

    2 ŞUBAT 2012
  • Nickcidious

    Nickcidious

    6 HAZİRAN 2011