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

  • Ampisound

    Ampisound

    12 Kasım 2006
  • Break

    Break

    10 Aralık 2005
  • LG Mobile Global

    LG Mobile Gl

    2 EYLÜL 2010