Değişim miktarı hesaplama algoritması

Başlatan SpeedyX, 25 Temmuz 2011, 17:57:15

SpeedyX

Merhaba,

Konuyu işlemcilere bağlamak için diyelim ki frekans ölçüyoruz ve bu frekans bazı şartlara bağlı olarak zaman zaman değişmeye başlıyor. Fakat bu değişim aralığı belli değil, ilk frekans değeri belli değil, maximum değer belli değil ve bunun üzerine ölçülen frekansta kendi kendine belli bir salınıma sahip. Şart oluştuğunda oluşan değişim bu salınımdan çok daha belirgin. Sayılarla belirtecek olursak mesela salınım 0.5kHz civarı, ama şart oluştuğunda frekans yavaş yavaş artmaya başlıyor normalde 50kHz olan değer 75kHz e çıkabiliyor adım adım.

Oluşturmak istediğim algoritma, bu salınımlara kanmadan değişimin değerini belirleyebilmeli. Örneğin 2ms de bir, ardarda ölçülmüş 100 adet frekans değerindeki değişimleri istatistiksel olarak belli bir hesaba sokarak değişimin yada başka bir deyişle ivmenin ne kadar olduğunu hesaplayabilmeli.

2. Adım olarakta sadece artan yönde değişen değer değil, azalan yönde değişen değer hakkında da yorum yapabilecek bir algoritma istiyorum.

Nasıl bir algoritma önerirsiniz?

Not: Matlab dahil tüm dillerde yazabilirsiniz.

Kolay gelsin.

The Gariban

Merhaba
Buradaki http://www.icrepq.com/PONENCIAS/4.295.MANANA.pdf
(2.sayfada Frequency Algortym başlığında )sezi yönteminden bu yöntemde faz açısı ve genliğinin kullanıldığından diğer sayfalarda da pic ile tasarlanmış bir sistemin sonuçlarından bahsetmiş.
İşinize yarayabilir

My75

#2
Şart, salınımdan belirgin şekilde ön plana çıkıyorsa eğer, işiniz pek de zor değil aslında.Süreklilik takibi ve analizi yapmak üzerine bir algoritma düşünülebilir.

Buna benzer bir projem vardı ama daha basit idi,polifonik bir zil sesi içinden 720hz. lik başka bir tonu ayırt etmem gerekiyordu..(2 ayrı zil sesi) Polifonik ton içinde bu frekans her türlü oluşuyordu..Basit olarak 720hz.lik frekansın 1sn. boyunca devamlılığını kontrol ettim ve işlem yaptım.Dediğim gibi çok basit verdiğim örnek ,fikir verme açısından anlattım.Ama tam olarak nasıl bir sistem üzerinde çalıştığınızı bilirsek muhakkak bir çok fikir çıkabilir..
Tomurcuk için çaba göstermeyen dal,odun kalmaya mahkumdur...

ErsinErce

okunan frekans değeri kalman tarzı bir filtreden geçirilerek, aradaki farklar bir diziye atılıp x/yE-3 Hz/s şeklinde ivmelenmesi görülebilir.
Kalmandaki örnekleme süresi arttırılarak istenilen aralıklarda ki ivme de görülebilir.

LukeSkywalker


The Gariban

Ben bu kişiye bir sorusu için 4-5 tane açıklama yazdım yardım etmeye çalıştım.Hatta aynı paralelde cevaplarıda mufitsözen isimli elektronik mühendisi olan kişide vemiştir ve cevaplarıma şahittir.
Maytere isimli kişi ise "Ben zaten senin birşey bilmediğini biliyordum" "Bilmiyorsan yazmak zorunda değilsin" gibi saygısızca cevaplar vermiştir.

Bu tür forumlar  karşısındakinin eğitim seviyesini yaşını bilmeden ona, buna saygızılık yapan kişiler yüzünden günden güne kalitleri düştü

Yaşları 20 ile 23 arasında kendisini aşmış hem CEO, hem tasarım uzmanı, hem muhteşem hayat felsefesi olan birazda  pazarlama gurusu kişilerden dolayı artık burada ve hiçbir yerde birşey yazmayacağım

Mufitsozen isimli çok bilgili değerli arkadaşı belki -elektronik konusu dişındaki bir konudan dolayı-biraz üzmüş olabilirim.Kendisinden helallik rica ediyorum.Başka bilmiyorum ama başka kalbini kırdıklarım varsa hepsinden helallik rica ediyorum
Bunu okuyup içlerinden "Helal olsun" demeleri dahi benim için yeterlidir.

Ben herkeze hakkımı helal ediyorum.(Gönderdiği mesajını  sakladığım bu kişi hariç)

Bu konu ile ilgili başkada cevap yazmayacağım

SpeedyX

Merhaba arkadaşlar, cevaplarınız için teşekkürler.

Durumu biraz daha açıklamaya çalışayım kısaca;
Sürekli okunan bir değer var ve diyelim bu bir diziye depolanıyor. Elimizde 100 tane frekans değeri var, bunlar ardarda belli aralıkla okunup depolanmış. İlk değer 50 olsun, ikinci değer 50.5... salınım yapıyor. Fakat daha sonra bu değerler
51, 51.5, 50, 52, 53, 52, 53.5, 150, 54, 55, 53, 53, 54, 55, 60, 65, 61, 63, 66 ... 75, 74, 74.5, 75, 74.5
şeklinde yükseliyor, genel olarak bakarsak bu değerin yükselen bir değer olduğu aşikâr. Arada da bazı düşen istisnai değerler mevcut, hemen sonra yine neredeyse kaldığı yerden yükselmeye devam ediyor, sonra yine düşüş gösterip tekrar yükselmesine devam ediyor. Bir tane de 150 sayısı yazdım, o da ortalama alıp çözmek isteyenlere engel oluştursun diye :)
Şimdi biz bu ölçümlerin adedini ve toplam nekadar süre için geçerli olduklarını biliyorsak, yükselme ivmesi hakkında da yorum yapabiliriz. Mesela toplam ölçüm 1sn sürdüyse, 1sn içinde 50 den 75 e çıkmış yada bu ölçümün 1/2sn si içinde 50 den 75 e çıkmış diyebiliriz.

Alıntı yapılan: maytere - 25 Temmuz 2011, 19:53:24
PID ile yapılabilir belki..
Nasıl olabilir PID ile acaba?

Alıntı yapılan: cynetron - 25 Temmuz 2011, 19:47:54
okunan frekans değeri kalman tarzı bir filtreden geçirilerek, aradaki farklar bir diziye atılıp x/yE-3 Hz/s şeklinde ivmelenmesi görülebilir.
Kalmandaki örnekleme süresi arttırılarak istenilen aralıklarda ki ivme de görülebilir.
Böyle bir sistem için 1D kalman kullanmak yeterli, çünkü elimizde sadece tek tip sayı dizisi var, o da lowpass filtreden farklı birşey olmuyor. Nasıl olacakta bu değişimin yönünü ve ivmesini görebileceğiz? Biraz daha açabilir misiniz?

Olayı frekans ölçen cihaz vs gibi değilde temiz matematiksel olarak soruyorum. Bana non-sinusoidal frekans ölçümü gibi konular yazmanıza gerek yok.

Tekrar teşekkürler, kolay gelsin.

ErsinErce

dediğiniz gibi low pass filtre oluyor ve bu sistem için böyle bir yapıya ihtiyacımız var diye düşündüm,
önceki mesajda açıklama yapmayı unutmuşum x iki değer arası fark değeri olurken y de örnekleme peryodu olucaktı,
örnekleme süresini biliyoruz zaten, sistemin örnekleme süresinden yola çıkarak, yarı frekansı sistemimizin maksimum frekans okuma değeri olacaktır,
low pass filtremizi bu frekanstan aşağı doğru kaydıran bir algoritma sayesinde çözünütlüğünüzü azaltıp 0.1 sn içindeki vektörel değişimi görülebilir
ya da daha da azaltarak 1 saniyelik değişimlerin oluşturacağı bir vektör tablosu çıkartılabilir.
low pass sayesinde arada koyduğunuz 150 değeri sistemi pek fazla etkilemeyecetir.