Veri karşılaştırma

Başlatan Gökhan BEKEN, 08 Ağustos 2014, 17:23:40

Gökhan BEKEN

Bir sensörden sürekli data geliyor.
Her gelen datayı bufferde kaydırarak, son 30 datayı elimde tutuyorum. En yeni data, buffer[30] da duruyor, daha yeni bir data gelince, bir önceki datayı buffer[29]'a gönderiyorum, buffer[30] da en yenisi oluyor daima. Veriyi tutma şeklim böyle.

Gelen verilerden 3 farklı durum çıkartacağım.

Daha önceden belirlediğim, veriler var. Bunlarda ayrı 3 dizide barınıyor.
elimdekiler de şöyle(değerleri kafadan attım):
int durum1[30]={-11,5,243,1,4,5,235,131,12,156,234,1,34,12,75,22,35,131,1,4,56,234,11,5,243,1,4,5,35,13,56}
int durum2[30]={61,5,243,1,-4,5,5,31,12,56,234,1,34,12,75,22,35,131,-1,4,56,234,11,5,243,1,4,5,35,13,56}
int durum3[30]={81,5,243,1,4,5,-15,131,12,56,234,1,34,12,75,22,35,11,12,4,56,234,11,5,243,1,4,5,35,13,56}

sonsuz döngü içinde buffer ile durum'ları sırasıyla karşılaştırmam lazım.
Şöyle birşey var, bufferdeki veriler sensörden geldiği için stabil değil, tolerans çok fazla. Çünkü kullanıcının hareketlerini algılıyor bu sensör.

If & for ikilisiyle birşeyler yaptım ama durumlar birbirine benzer olduğu için bazen yanlış durum algılıyor.

Tek tek karşılaştırıp, kaç tane hatalı veri ver bu sayıyı öğrenip, daha önceki belirlediğim hata sınırına göre yapmayı düşündüm ama bu iyi bir yöntem olmaz bence.

Her veriyi karşılaştırırken aralarındaki farkları belli sınırlar içindeyse aynı mı kabul etsem diye düşündüm, ama denemedim.

Yapanlar nasıl yapıyor bu işi?
Özel mesaj okumuyorum, lütfen göndermeyin.

mir_as82

Hocam buffer in her indeksini durumlarin her indexi ile birebir mi karşılaştırıyorsunuz.

Gökhan BEKEN

Birebir olursa hiç bir duruma girmez kolay kolay. Bu yüzden büyüktür küçüktür işaretleri arasında belli toleranslarla yapıyorum şimdilik.
Özel mesaj okumuyorum, lütfen göndermeyin.

RaMu

Aslında problemin tam olarak ne anlamadım,
yani neresinde takıldın?
Veri karşılaştırmamı verileri doğru almamı, yoksa karşılaştırmayayım başka ne yöntem var mı?
Sanki sayısal sinyal işleme yöntemlerine yöneleceksin gibi düşünüyorum.
Veri karşılaştırma için programlama ile ilgili okuduğum bir kaynakta,
misal bir sınıfda aynı isme sahip kişilerin sayısı kaçtır?
Nasıl hesaplanacağıyla ilgili kullanılabilecek algoritmalardan yola çıkıyordu anlatıma;
misal sınıf 16 kişi olsun,
1. kişiyi akıp geri kalan 15 kişiyle karşılaştıralım, aynıysa 1 aynı diyelim,
sonra 2 yi alıp aynı işlem, aynıysa aynı sayısını arttıralım,
3. 4. bu şekilde gider ve toplam 15 defa 15li karşılaştırmada (225) sonuca ulaşırız,
bunun yerine
(herkes yanındakine ismini sorsun yöntemi)
16 lık grubun (rastgelede olur) ikeşer elemanı alıp karşılaştırıp aynı varmı diye bakalım
misal 1ile2 3ile4 ... 15ile16
toplam 8 karşılaştırma yaptık,
misal hiçbiri aynı değil
birbiri ile karşılaştırılan 8erli iki grup var 1 3 5 ... 15 ile 2 4 6 ... 16
8erli grupları kendi içlerinde karşılaştıralım,
1ile3 5ile7 9ile11 13ile15 ve diğer grup aynı şekilde
artı 8 karşılaştırma yaptık
oldu 16 karşılaştırma
artık karşılaştırılmayan 1 5 9 13, 3 7 11 15 | 2 6 10 14, 4 8 12 16 olarak
4erli 4 grup var
bunlarda 1ile5 9ile13 ... şeklinde 8 tane karşılaştırma yapar,
oldu toplam 24 karşılaştırma artık son bir karşılaştırma kaldı
1ile9 5ile13 3ile11 7ile15 2ile10 6ile14 ...
buradada artı 8 karşılaştırma yapılır ve
en son toplam 32 karşılaştırma ile kaç tane aynı isimde kişi var anlaşılmış olur,
yani 16 elemanlı grupta 225 karşılaştırma yerine sadece 32 karşılaştırmayla
kaç elemanın aynı olduğu anlaşılabilir.

Anlatım biraz karışık oldu
kısaca herkes karşılıklı olarak sıraya geçsin
sağdakiler soldakilere adı aynımı diye sorsun aynı olanlardan bir el kaldırsın,
1. tur el kaldıranları sayalım,
şimdi soldakiler karşılıklı sıraya geçsin (4erli karşılıklı duruyorlar)
ve sağdakiler karşılıklı sıraya geçsin (4erli karşılıklı duruyorlar)
4erli 4 grup  var,
yine birbirlerine isimler aynımı sorsun ve aynıysa biri el kaldırsın
el kaldıranları say,
4erli 4 grup kendi aralarında 2şerli grup olsunlar
2şerli gruplar karşılıklı birbirlerine adlarını sorsunlar  el kaldırma olayı ve say,
2şerli gruplar keni grup arkadaşlarına adlarını sorsunlar el kaldır say,
bu kadar.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html