Sonsuz ortalama alma?

Başlatan Maxim, 20 Ekim 2013, 09:56:25

z

#15
Verdigim yontemde tasma olusturulamaz.

Hatta soyle bir soru sorayim.

12 Bit ADC ile 1 saat boyunca olcum yapilacak ve ortalama alinacaktir.

Sinyalimizin sekli nasil olursa olsun siz karar verin. Bu islem sonucunda elde edilebilecek en buyuk ortalama nedir?  ;D
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

speak48

#16
///////// burası başlangıç/////////////////
n=0
top1=0
top2=0
k2=2;
n2=0;
/////////////////////////////////////////////

//////////////burası sonsuz döngü//////////////
if n==k2
{
k2=k2<<1
n2=n2+1;
top1= top1 >>1  + top2>>n2
top2= 0
}
else
{
n= n + 1
top1=top1
top2 =  top2 + adcinput
}
////////////////////////////////////////////////////////




sonsuz ortalama =    top1

bayelektronik

okumayı_bitirme=0;
toplam=read_adc();// 1 kez burada okuma yaptırıyoruz

while(!okumayı_bitirme) {

  toplam=toplam+read_adc();
  toplam=toplam/2;

okumayı_bitirme="istenildiği zaman birlenir ve okuma sona erer";
}

taşma sorunu olmaz toplam değişkeni float seçilirse işlem kaybıda baya bir azalır.
inşallah sorulan soruyu anlamışımdır.




muhittin_kaplan

Z sonuc 2 uzeri 12 dir (deger devamli max dadir)

F.T

Alıntı yapılan: z - 20 Ekim 2013, 13:15:22
Toplam=Toplam+Yeni
n=n+1
Ortalama=Toplam/n

Bu gormuyormu isini?




ya hepsi bu ama beğenmiyor. ;D
Hakk şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

z

@Muhittinkaplan

1 bit hata ile buldun.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Tagli

z hocam elbette ki tasma olmaz ama bence tasmanin tersi olan sey olur. 12 bit ADC ile ortalama 4096'yi gecmez elbette ama soyle bir durum oldugunu varsayalim:
Biraz abarti olacak ama diyelim ki 100 milyon ornek topladik, hepsi de 2048. Haliyle ortalama da 2048. Simdi 100 milyon daha ornek toplayalim, bu serfer hepsi 4096 olsun. Normalde bu 200 milyon degerin ortalamasinin 3072 olmasini bekleriz. Ama bence (yeni-ortalama)/n ifadesi sifirlanacagi icin bir yerden sonra ortalama sabitlenecek ve yerinden oynamaz hale gelecek.
Gökçe Tağlıoğlu

muhittin_kaplan

Yarisma baslatalim.  Sonsuz ortalama alma isini halledelim

z

Muhittinkaplan sorun halledildi. Nasil halledildigini de linkini verdigim sitemde acikladim.

Alıntı yapılan: Tagli - 20 Ekim 2013, 14:41:01
z hocam elbette ki tasma olmaz ama bence tasmanin tersi olan sey olur. 12 bit ADC ile ortalama 4096'yi gecmez elbette ama soyle bir durum oldugunu varsayalim:
Biraz abarti olacak ama diyelim ki 100 milyon ornek topladik, hepsi de 2048. Haliyle ortalama da 2048. Simdi 100 milyon daha ornek toplayalim, bu serfer hepsi 4096 olsun. Normalde bu 200 milyon degerin ortalamasinin 3072 olmasini bekleriz. Ama bence (yeni-ortalama)/n ifadesi sifirlanacagi icin bir yerden sonra ortalama sabitlenecek ve yerinden oynamaz hale gelecek.

Ortalama=Ortalama+(Yeni-Ortalama)/n

Eger bolmeden kaynakli hatayi dusurmek istiyorsan

Ortalama=[(n-1)*Ortalama+Yeni]/n

n=100 milyon icin Ortalama 2048 oldu.

n+1=100000001

Ortalama=2048+(4096-2048) / 100000001

Ortalama=2048 + 2048 / 100000001

Ortalama=(2048*(100000001) + 2048) / 100000001

Bu sekilde yap.


Bana e^st de diyebilirsiniz.   www.cncdesigner.com

muhittin_kaplan

Hocam ben ortalama islemlerimi kayar noltali yada simple kalman ile yapiyorum (hafizali ortalama algoritmalari)

Tagli

Bence yine olmadi. Simdi de (n-1)*ortalama ifadesi o kadar buyuk olacak ki uzerine eklenen yeni'yi umursamayacak.
Gökçe Tağlıoğlu

speak48

Alıntı yapılan: speak48 - 20 Ekim 2013, 14:27:06
n=0
top1=0
top2=0
k2=2;

if n==k2
{
k2=k2<<1
top1= top1 >>1  + top2>>n
top2= 0
}
else
{

n= n + 1
top1=top1
top2 =  top2 + adcinput

}

inceleyen oldumu
bundan iyi bulan varsa söylesin
yada eksiği varmı

z

#27
@Tagli

Bunun tek aciklamasi var. Kullanilan matematik fonksiyonlarin degisken uzunlugu kisa.

Diyelimki math fonksiyonlarin bu boyutta islem yapamiyor.


0 dan 100 milyona kada islemleri agrisiz sizisiz yapiyorsun fakat 200 milyona kadar yapmaya kalkinca bolme ve carpma rutinleri yetersiz kaliyor.

O zaman;

(100 milyonun ortalamasi + ikinci 100 milyonun ortalamasi)/2 yapabilirsin.


Bana e^st de diyebilirsiniz.   www.cncdesigner.com

muhittin_kaplan

100bin(herhalde yeter) rastgele sayi uretelim ve bir excel de yayinlayalim. Sonra adim adim bunlari yazdiginiz algoritmaya uygulayalim. Bakalim oluyormu.

z

Bosver random degerleri, 1 dan 100 bine kadar birer birer artan sayilarin ortalamasini bul.

Ortalamasini sana tami tamina soyleyebilirim.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com