Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα,

προσπαθώ να δημιουργήσω ενα γραφημα στυλ μπαρας το οποιο θα ανανεωνεται συνεχως αναλογα με τυχαιες τιμες στον χ ή στον ψ άξονα. Ο κώδικας που προσπαθώ είναι ο εξής

>

f=1:10;

for times=1:4

for i=1:10
dropped(i)=rand();
end

bar(f,dropped)
ylabel('Τιμες ψ')
xlabel('Τιμες χ')
figure
dropped(1:end)=0;
end

Αυτό που θέλω ειναι αντι της πρωτης φορ να εχω μια while(true) και να εχω ενα ολο και ολο γραφημα στο οποιο οι τιμες στον ψ αξονα θα αλλαζουν αναλογα με το αποτελεσμα της rand(). Ετσι οπως το εχω γραψει, δημιουργουνται 4 ξεχωριστα γραφηματα, κατι που δεν θελω. Θελω ενα και να ανανεωνεται συνεχως. Για αυτο μηδενιζω και τον πινακα dropped.

Δοκιμασα διαφορα μαζι και το hold on/off αλλα τιποτα. Οποιαδηποτε βοηθεια ειναι καλοδεχουμενη :-)

Δημοσ.

Καλησπέρα,

προσπαθώ να δημιουργήσω ενα γραφημα στυλ μπαρας το οποιο θα ανανεωνεται συνεχως αναλογα με τυχαιες τιμες στον χ ή στον ψ άξονα. Ο κώδικας που προσπαθώ είναι ο εξής

>

f=1:10;

for times=1:4

for i=1:10
dropped(i)=rand();
end

bar(f,dropped)
ylabel('Τιμες ψ')
xlabel('Τιμες χ')
figure
dropped(1:end)=0;
end

Αυτό που θέλω ειναι αντι της πρωτης φορ να εχω μια while(true) και να εχω ενα ολο και ολο γραφημα στο οποιο οι τιμες στον ψ αξονα θα αλλαζουν αναλογα με το αποτελεσμα της rand(). Ετσι οπως το εχω γραψει, δημιουργουνται 4 ξεχωριστα γραφηματα, κατι που δεν θελω. Θελω ενα και να ανανεωνεται συνεχως. Για αυτο μηδενιζω και τον πινακα dropped.

Δοκιμασα διαφορα μαζι και το hold on/off αλλα τιποτα. Οποιαδηποτε βοηθεια ειναι καλοδεχουμενη :-)

 

Δοκίμασες να χρησιμοποιήσεις hold on εκεί που βάζεις "πραγματάκια" στο γράφημα και hold off εκεί που σταματάς; Αυτό λογικά θα σου λύσει το πρόβλημα.

Δημοσ.

Δοκίμασες να χρησιμοποιήσεις hold on εκεί που βάζεις "πραγματάκια" στο γράφημα και hold off εκεί που σταματάς; Αυτό λογικά θα σου λύσει το πρόβλημα.

 

Ναι τα δοκιμασα αυτα. Τελικα τα καταφερα με την εντολη close μετα το figure η οποια κλεινει το παραθυρο του γραφηματος αλλα εμφανιζεται ταυτοχρονα το επομενο γραφημα οποτε ο χρηστης δε καταλαβαινει κατι καθως φαινεται σαν μια συνεχη ροη δεδομενων.

Ευχαριστω παντως για το ενδιαφερον συναδελφε :-D

Δημοσ.

Ναι τα δοκιμασα αυτα. Τελικα τα καταφερα με την εντολη close μετα το figure η οποια κλεινει το παραθυρο του γραφηματος αλλα εμφανιζεται ταυτοχρονα το επομενο γραφημα οποτε ο χρηστης δε καταλαβαινει κατι καθως φαινεται σαν μια συνεχη ροη δεδομενων.

Ευχαριστω παντως για το ενδιαφερον συναδελφε :-D

 

Τίποτα :)

Για check-αρε και αυτό:

>f=1:10;

for times=1:4
   for i=1:10
       dropped(i)=rand();
   end
   
   hold on
   bar(f,dropped)
   ylabel('Τιμες ψ')
   xlabel('Τιμες χ')
   pause;
   if times ~= 4
       clf;
   end
   dropped(1:end)=0;
   hold off
end

 

EDIT: Είχα ξεχάσει ένα pause. Ελπίζω να μην πρόλαβες να τον τρέξεις χωρίς αυτό.

Δημοσ.

Τίποτα :)

Για check-αρε και αυτό:

>f=1:10;

for times=1:4
   for i=1:10
       dropped(i)=rand();
   end
   
   hold on
   bar(f,dropped)
   ylabel('Τιμες ψ')
   xlabel('Τιμες χ')
   pause;
   if times ~= 4
       clf;
   end
   dropped(1:end)=0;
   hold off
end

 

EDIT: Είχα ξεχάσει ένα pause. Ελπίζω να μην πρόλαβες να τον τρέξεις χωρίς αυτό.

 

Χτυπαει ενα περιεργο σφαλμα με τον κωδικα σου

 

??? Error using ==> load

Unable to read file bar.fig: No such file or directory.

 

Error in ==> hgload>localLoadFile at 177

AllVars = load(filename, '-mat');

 

Error in ==> hgload at 59

[FigVersion, FigData, VerNum] = localLoadFile(filename);

 

Error in ==> openfig at 72

[fig, savedvisible] = hgload(filename, struct('Visible','off'));

 

Error in ==> gui_mainfcn>local_openfig at 286

gui_hFigure = openfig(name, singleton, visible);

 

Error in ==> gui_mainfcn at 159

gui_hFigure = local_openfig(gui_State.gui_Name, gui_SingletonOpt,

gui_Visible);

 

Error in ==> bar at 42

gui_mainfcn(gui_State, varargin{:});

 

Error in ==> asd at 10

bar(f,dropped)

 

Ετσι οπως το εχω, κανει αυτο που θελω αλλα σταματει ζορικα :-)

Αντι για μπαρα εβαλα στεμ αλλα και παλι ειναι στην ιδια λογικη

>
f=1:10;

while (true)
for i=1:10
       dropped(i)=rand();
       end
h=stem(f,dropped,'fill','--');
set(get(h,'BaseLine'),'LineStyle',':')
set(h,'MarkerFaceColor','red')
xlabel('Τιμες χ')
ylabel('Τιμες ψ')
figure
close
dropped(1:end)=0;
end

Δημοσ.

Χτυπαει ενα περιεργο σφαλμα με τον κωδικα σου

 

??? Error using ==> load

Unable to read file bar.fig: No such file or directory.

 

Error in ==> hgload>localLoadFile at 177

AllVars = load(filename, '-mat');

 

Error in ==> hgload at 59

[FigVersion, FigData, VerNum] = localLoadFile(filename);

 

Error in ==> openfig at 72

[fig, savedvisible] = hgload(filename, struct('Visible','off'));

 

Error in ==> gui_mainfcn>local_openfig at 286

gui_hFigure = openfig(name, singleton, visible);

 

Error in ==> gui_mainfcn at 159

gui_hFigure = local_openfig(gui_State.gui_Name, gui_SingletonOpt,

gui_Visible);

 

Error in ==> bar at 42

gui_mainfcn(gui_State, varargin{:});

 

Error in ==> asd at 10

bar(f,dropped)

 

Αλήθεια; Σε μένα δουλεύει άψογα. Έχω την 7.12.0 έκδοση.

Παραθέτω screen shot που δείχνει την καλή λειτουργία του script.

To figure Που φαίνεται είναι της πρώτης επανάληψης.

Δε μου έχει πετάξει κανένα error.

post-223995-0-05599100-1339254951_thumb.jpg

Δημοσ.

Α εσυ εισαι μπροσταα :lol:

Εγω εχω την 7.10 και μαλλον εκει θα παιζει κατι.

Στο κομματι που εχω παραθεσει πιο πανω, με την στεμ παιζει κανονικα ε;

Κοιτα να δεις που πρεπει να αγχωθω και για forward compatibility :lol: :lol:

Δημοσ.

Α εσυ εισαι μπροσταα :lol:

Εγω εχω την 7.10 και μαλλον εκει θα παιζει κατι.

Στο κομματι που εχω παραθεσει πιο πανω, με την στεμ παιζει κανονικα ε;

Κοιτα να δεις που πρεπει να αγχωθω και για forward compatibility :lol: :lol:

 

Άλλαξα λίγο τον τελευταίο σου κώδικα κάπως έτσι, ώστε να καταλήγει στις 100 επαναλήψεις. Μπορείς να δεχτείς και σαν είσοδο από το πληκτρολόγιο έναν αριθμό επαναλήψεων. Διαφορετικά με while true, θα το τερματίζεις βίαια:

>f=1:10;
counter=1;
while (counter <= 100)
       for i=1:10
               dropped(i)=rand();
       end
       hold on
       h=stem(f,dropped,'fill','--');
       hold off
       set(get(h,'BaseLine'),'LineStyle',':')
       set(h,'MarkerFaceColor','red')
       xlabel('Τιμες χ')
       ylabel('Τιμες ψ')
       pause(0.5);
       if counter ~= 100
           clf;
       end
       dropped(1:end)=0;
       counter = counter+1;
end

 

Μιας και δουλεύει ο τρόπος σου κράτα αυτόν. Απ'ότι κατάλαβα η νεότερη έκδοση απλουστεύει

το γράψιμο κώδικα επιτρέποντας σύνταξη που θα θεωρούνταν λανθασμένη σε προηγούμενες εκδόσεις. Αλλάζει πολύ το MATLAB από έκδοση σε έκδοση. πχ σε επόμενη έκδοση για να βρεις

παράγωγο θα πρέπει να γράφεις diff(sym('ekfrash')) αντί για το απλό diff('ekfrash').

 

H stem υποθέτω λειτουργεί κανονικά. Θα σου πουν και οι ειδήμονες του forum πάνω στη MATLAB.

;)

 

Μάλλον θα πρέπει να αγχωθείς και για bacward compatibility. :P

Δημοσ.

Παντως και με τις 100 επαναληψεις οταν παω να κλεισω το γραφημα εμφανιζεται ενα καινουργιο.

Ετσι πρεπει παλι να το τερματισω βιαια με control+c στο cmd της matlab.

Ακομα συνειδητοποιησα οτι η γραμμη

>dropped(1:end)=0;

δεν χρειαζεται αλλα μπηκε απο βιασυνη :confused:

Το γραφημα θελω να τρεχει για παντα μεχρι να κλεισει ο χρηστης το γραφικο, δεν ειναι θεμα μερικων επαναληψεων καθως ο σκοπος μου ειναι να διαβαζει σειριακα δεδομενα και να εμφανιζει τις σταθμες. Την σειριακη συνδεση την εχω κανει και γενικα εχει τελειωσει το θεμα απλα οταν κλεινω το παραθυρο αυτο εμφανιζεται ξανα και ξανα μεχρι να το κλεισω απο το τερμιναλ.

 

Μάλλον θα πρέπει να αγχωθείς για bacward compatibility. :P

Μπα οχι προσωπικη ενασχοληση ειναι σε περιοδο εξεταστικης :o

Τιποτα παραδοτεο B)

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...