Jump to content
  • Kaydol

Genel Araştırma

'pic' etiketi için arama sonuçları.

  • Etiketlere Göre Ara

    Aralarına virgül koyarak ekleyin
  • Yazara Göre Ara

İçerik Türü


Forumlar

  • Genel
    • Forum Hakkında
    • Projeler
  • Bilgi Alışverişi
    • Makaleler
    • Elektronik
    • Robotik
    • Arduino
    • PIC
  • Ürün İncelemeleri
    • Tanıtım istekleri
    • Elektronik Malzemeler
    • Arduino
    • Robotik Malzemeler
    • PIC
    • Sensörler
  • Yazılım
    • Proteus
    • Diğer Yazılımlar
  • Öğrencilere Özel
    • KOU Elohab
    • KOU Mekatronik

Sonuçlar içinde bul...

Sonuçlarda bul...


Oluşturma Tarihi

  • Start

    End


Son Güncelleme

  • Start

    End


Numaralar ile filtreleme...

Katılım

  • Start

    End


Üye Grubu


Hakkımda

Araştırmada 1 sonuç bulundu

  1. Bir sensordan aldığımız verileri kullanırken, eğer sensor örneğin bir ivmeölçer ya da analog bir sensor gibi "gürültülü" veri üretiyorsa, bu verilerin ortalamasını alarak kullanmak iyi bir fikirdir. Örneğin son 10 değerin ortalamasını alabiliriz. Peki, bunu nasıl yapacağız? Son on tane değeri belleğe alıp sonra bunların ortalamasını mı almalıyız? Ya da çok hızlı veri akışı varsa, son yüz tane, son bin tane verinin ortalamasını almak için, son bin tane veriyi bellekte tutmamız mı gerekir? Ortalama alırken bu son bin tane veriyi toplayıp sonra bir kaydırıp yeni veriyi en sona koyabiliriz. Epey karmaşık değil mi? Ya da kaydırma yerine bir işaretçi ile son veriyi işaret edip, kaydırma yapmadan bu işi yapabilecek bir yöntem de geliştirebiliriz. Hatta bir de her seferinde toplamak yerine her seferinde iptal edilen (1001. eski) veriyi çıkartıp son gelen veriyi toplama ekleyebiliriz. İşlem süresi daha kısalır ama kodumuz daha karmaşıklaşır. Ayrıca ilk 1000 veri gelene dek çıkış vermememiz gerekir. Çünkü henüz gereğince veri toplanmamıştır. Bunun önüne geçmek için ilk 1000 veri sırasında "gelen kadarıyla" ortalama alınabilir. Bunu da ilave ettiğimizde gerçekten karmaşık ve uzun bir kodumuz olur. Ayrıca son 1000 tane veriyi kaydecedek bellek alanı bilgisayarlarda sorun olmasa da, bir mikrodenetleyicide bu ciddi bir sorundur. Aslında aynı işi yapmanın çok kolay bir yolu da vardır. Size bu algoritmayı tanıtmak isterim. Bunun için bir örnek veri seti hazırladım: Görüldüğü gibi, sinüse benzer ama oldukça gürültülü bir veri. Eğer bu verilerin klasik usulde "10 eleman ortalaması" alınırsa, veriler oldukça düzelir: Bunu yapabilmek için kabaca şöyle bir kod yazmak gerek: int veri[10]; //Okunan son veriyi saklayacağımız alan int i; for (i=0;i<10;i++) //ilk 10 veri okunuyor { veri[i]=ReadVeri(); } while (1) //Ana döngü { int top=0; //toplam for (i=0;i<10;i++) //Son 10 verinin toplamını alıyoruz { top+=veri[i]; } float sonuc=top/10.0; //Ortalama printf ("%i\r\n",(int)sonuc); //sonucu yazıyoruz for (i=0;i<9;i++)//Verileri bir kaydırıyoruz { veri[i]=veri[i+1]; } //son olarak da yeni açılan boş yere, yeni veriyi okuyalım: veri[9]=ReadVeri(); } Sonraki gönderide "sihirli formül" geliyor.
×
×
  • Yeni Oluştur...

Önemli Bilgilendirme

Facebook / Twitter / Google hesabınızla kolayca kaydolup cevap verebilir, soru sorabilir, istekte bulunabilirsiniz.
Devam etmeniz, forum kurallarını kabul ettiğiniz anlamına gelir.            Forum Kuralları