Matlab Real Time Data İşleme(Yardım)
-
hocalar bir sıkıntı ile karşı karşıyayım. seri port üzerinden matlab ile veri çekip gerçek zamanlı olarak grafik çizdiriyorum. fakat grafik tablosu gelen veri ile dolduğunda yeni veri geldikçe grafik sıkışıyor.
benim istediğim yeni bilgi geldikçe grafiğin sola doğru kayması. yani x eksenim ilk açılışta 1 ile 10 arasında olucak(zaman) ve 10 sn sonra bu gittikce 2-11 , 3-12 gibi değerlerle değişecek.
matlab forumlarında arandım google da biraz zaman geçirdim. ya benim odunluğumdan yada bana lazım olan olmadığından bulamadım.
böyle bir şeyle çalışmış var mı? ille de matlab olmasına gerek yok. başka diller de olur bana yol göstericek bişeyler lazım. şu noktada tıkandım hocalar :(
Şimdiden Teşekkürler.
-
grafiği tekrar çizdirmiyor musun, o zaman verdiğin aralık 0 ile gelen X verisinin sırası kadar olabilir. (zaman çizgisi)
Yani (0,10)
10. veri geldikten sonra
(0,11)
(0,12)
(0,13)
bir tane sayaç koyup her veri geldiğinde arttırabilirsin, sayaç 10 dan büyük olduğu zaman (0,11) (0,12) şeklinde grafiğini yeniden oluşturabilirsin..
ancak bu tarz bir şey yapılabilir diye düşünüyorum
-
hocam x ekseni zaman olarak tanımlı. grafiği çizdiriyorum. üst sınır kullanıcı tarafından giriliyor ve 0-1 ile başlıyor 0-2 0-3 diye üst limite kadar gidiyor.
benim istediğim ise 0-5 oldu diyelim 1sn veri geldikten sonra 1-6 , 1 sn daha veri geldi 2-7, 1sn daha 3-8 olması.
5 sn veri geldikten sonra birer sn aralıklarla grafiği kaydırmak istiyorum. ve ekranda bunu akıyor gibi göstermem lazım.
döngü kullanarak veri akışını da etkilemek istemiyorum gerçel zamanlı veri olduğu için.
-
yazdığın kodları paylaşırsan belki biraz daha fazla yardımcı olabiliriz..
-
while true
...veri alınıyor...
... buralarda veri işleniyor..
plot(EKGplot,t(1:cur-1),a(1:cur-1));
..
....
end
t zaman için açılan registery. figure olarak çıktıntan sonra çizime başlıyor. günecellenerek çizim devam ediyor ve gerçek zamanlı olarak grafiği alıyorum.
bir önceki denemelerde ilk önce veriyi kaydedip daha sonradan axes[xmin xmax ymin ymax] ayarını yaparak ekseni kaydırabiliyordum ama şimdi gerçek zamanlıya geçince bu özelliği kullanamıyorum. ne kadar uğraştıysamda bişey yapamadım.
set(gca,...) ile de denedim limiti değiştirmeye çalıştım ama olmadı.
daha önce böyle bir şey denemiş olan var mı matlabda. varsa bi el atıverin sıkıştım kaldım burada
edit: Takılıp da arayan olursa ; olayı halletmiştim kendi imkanlarımla :D
plot daki dizinin yada line 'ın büyüklüğüne göre yapıcakmışız.
bizimplot=handles.axes1; //axes1 axes2 artık neyse plot alanı.
[m n]=size(dizi); yada y=size(line); hangisi size uygunsa
en sonunda da set(bizimplot,'Xlim',[mindeger maxdeger]); // min ile maxı da n yada y hangisini yaptıysanız o değişkene bağlı olarak artırcaksınız.
edit2: tabi bu eklediklerimizin başına
hold on;
ve sonuna
drawnow;
yapıyoruz ki plot önce dursun sonra devam etsin