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

  • itfigueres

    itfigueres

    12 EKİM 2013
  • LardTardProductions's channel

    LardTardProd

    10 NİSAN 2009
  • Theodore Leaf

    Theodore Lea

    29 AĞUSTOS 2006