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

  • BetterCoder

    BetterCoder

    17 Aralık 2012
  • MyTiredBones

    MyTiredBones

    2 Temmuz 2013
  • skiesofblack.net

    skiesofblack

    14 HAZİRAN 2009