Matlab de grafik çizdirme

Başlatan atillaa, 20 Aralık 2012, 20:32:04

atillaa

arkadaşlar matlabta seri porttan gelen verinin grafiğinin çizdirmeye çalışıyorum.aşağıdaki kodu yazdım ve sanal port ile veri yolluyorum matlaba ama warning veriyor.Yardımcı olurmusunz
close all;
clc;
y=zeros(1,1000);

x=serial('COM1','BaudRate',9600);

fopen(x);

son=100;

figure('Name','seri haberlesme');
title('seri haberlesme');
xlabel('zaman');
ylabel('deger');
grid on;
hold on;

for t=1:1:son
    ylim([0 20]);
    xlim([t t+5]);
    veri=fscanf(x,'%d')';
    y(t)=veri(1);
    plot(t,y(t));
    drawnow
end

fclose(x);
delete(x);
clear all;


bunlar matlab kodlarım
bunlarda aldığım hatalar

Warning: Unsuccessful read: A timeout occurred before the Terminator was reached.
Attempted to access veri(1); index out of bounds because numel(veri)=0.

Error in deneme2 (line 22)
    y(t)=veri(1);


pisayisi

veri=fscanf(x,'%d')';

satırından önce pause(2) gecikmesi ile deneme yapmanı öneririm. Seri port ayarlarında terminatör belirtmemişsin default olarak CR carriage return mu alıyor emin değilim. Pc ye gönderdiğin veri de de buna uygun bir terminatör kullanman gerekli olabilir.
Murat

atillaa

hocam göndermem de sorun varmış
onu hallettim şimdi okuma işlemi oluyor y dizisine yazıyor bunları gördüm ama diziyi çizdiremiyorum.
Şu hatayı alıyorum

Warning: Unsuccessful read: A timeout occurred before the Terminator was reached or SIZE values were
available.
In an assignment  A(I) = B, the number of elements in B and I must be the same.

Error in deneme2 (line 22)
    y(t)=veri;

ferdem

Yapmak istediğiniz iş aşağıdaki başlıkta konuşulmuştu, bir göz atın:
https://www.picproje.org/index.php/topic,43100.msg313427.html#msg313427
İyi çalışmalar.

atillaa

@ferdem teşekkür ederim faydalı olacak gibi görünüyor konuşulanlar  :)

atillaa

arkadaşlar matlabte okuma işini hallettim biraz yavaşta olsa.
Şimdi şunu merak ediyorum mesela ben 3 değer okuyup onun grafiğini çizdirirken aynı anda o değerleri guide tasarlayıp eş zamanlı olarak görebiliriyim ? böyle bi şey mümkün mü ?

airforce

Matlab'de yapmaya çalıştığınız şeyi zamanım olursa bende yapmayı düşünüyorum. Daha önce seri porttan (ivme sensörü+pic) 1 byte datayı sürekli gönderip matlabde bunu eş zamanlı göstermiştim. Ancak eş zamanlı olması kısmı biraz sıkıntılı olmuştu. Projeyi bitirmek için zamanım az olduğu için işlemi yavaşlatan şeyleri derinlemesine araştıramadım (seri port hızı,işlemcinin data gönderim sıklığı,bilgisayarın işlemci gücü....).

Projede ivme sensörünün tek kanalı ile işlem yaptığım için 1byte ı sürekli gönderdim. 3 kanal için uygulama yapmadım ama x,y,z 1er byte göndermeden önce sabit bir etiket gönderdikten sonra x,y,z yi gönderirseniz ve matlab tarafında etiket geldikten sonra sırayla x,y,z verisini  alırsanız sorun çözülür diye düşünüyorum.

Gui kısmını bilen birisi anlatırsa bende çok sevinirim.