WoodSell3r Δημοσ. 8 Ιουνίου 2012 Δημοσ. 8 Ιουνίου 2012 Καλησπέρα, προσπαθώ να δημιουργήσω ενα γραφημα στυλ μπαρας το οποιο θα ανανεωνεται συνεχως αναλογα με τυχαιες τιμες στον χ ή στον ψ άξονα. Ο κώδικας που προσπαθώ είναι ο εξής > 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 αλλα τιποτα. Οποιαδηποτε βοηθεια ειναι καλοδεχουμενη
gon1332 Δημοσ. 9 Ιουνίου 2012 Δημοσ. 9 Ιουνίου 2012 Καλησπέρα, προσπαθώ να δημιουργήσω ενα γραφημα στυλ μπαρας το οποιο θα ανανεωνεται συνεχως αναλογα με τυχαιες τιμες στον χ ή στον ψ άξονα. Ο κώδικας που προσπαθώ είναι ο εξής > 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 εκεί που σταματάς; Αυτό λογικά θα σου λύσει το πρόβλημα.
WoodSell3r Δημοσ. 9 Ιουνίου 2012 Μέλος Δημοσ. 9 Ιουνίου 2012 Δοκίμασες να χρησιμοποιήσεις hold on εκεί που βάζεις "πραγματάκια" στο γράφημα και hold off εκεί που σταματάς; Αυτό λογικά θα σου λύσει το πρόβλημα. Ναι τα δοκιμασα αυτα. Τελικα τα καταφερα με την εντολη close μετα το figure η οποια κλεινει το παραθυρο του γραφηματος αλλα εμφανιζεται ταυτοχρονα το επομενο γραφημα οποτε ο χρηστης δε καταλαβαινει κατι καθως φαινεται σαν μια συνεχη ροη δεδομενων. Ευχαριστω παντως για το ενδιαφερον συναδελφε
gon1332 Δημοσ. 9 Ιουνίου 2012 Δημοσ. 9 Ιουνίου 2012 Ναι τα δοκιμασα αυτα. Τελικα τα καταφερα με την εντολη close μετα το figure η οποια κλεινει το παραθυρο του γραφηματος αλλα εμφανιζεται ταυτοχρονα το επομενο γραφημα οποτε ο χρηστης δε καταλαβαινει κατι καθως φαινεται σαν μια συνεχη ροη δεδομενων. Ευχαριστω παντως για το ενδιαφερον συναδελφε Τίποτα Για 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. Ελπίζω να μην πρόλαβες να τον τρέξεις χωρίς αυτό.
WoodSell3r Δημοσ. 9 Ιουνίου 2012 Μέλος Δημοσ. 9 Ιουνίου 2012 Τίποτα Για 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
gon1332 Δημοσ. 9 Ιουνίου 2012 Δημοσ. 9 Ιουνίου 2012 Χτυπαει ενα περιεργο σφαλμα με τον κωδικα σου ??? 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.
WoodSell3r Δημοσ. 9 Ιουνίου 2012 Μέλος Δημοσ. 9 Ιουνίου 2012 Α εσυ εισαι μπροσταα Εγω εχω την 7.10 και μαλλον εκει θα παιζει κατι. Στο κομματι που εχω παραθεσει πιο πανω, με την στεμ παιζει κανονικα ε; Κοιτα να δεις που πρεπει να αγχωθω και για forward compatibility :lol:
gon1332 Δημοσ. 9 Ιουνίου 2012 Δημοσ. 9 Ιουνίου 2012 Α εσυ εισαι μπροσταα Εγω εχω την 7.10 και μαλλον εκει θα παιζει κατι. Στο κομματι που εχω παραθεσει πιο πανω, με την στεμ παιζει κανονικα ε; Κοιτα να δεις που πρεπει να αγχωθω και για forward compatibility :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.
WoodSell3r Δημοσ. 9 Ιουνίου 2012 Μέλος Δημοσ. 9 Ιουνίου 2012 Παντως και με τις 100 επαναληψεις οταν παω να κλεισω το γραφημα εμφανιζεται ενα καινουργιο. Ετσι πρεπει παλι να το τερματισω βιαια με control+c στο cmd της matlab. Ακομα συνειδητοποιησα οτι η γραμμη >dropped(1:end)=0; δεν χρειαζεται αλλα μπηκε απο βιασυνη Το γραφημα θελω να τρεχει για παντα μεχρι να κλεισει ο χρηστης το γραφικο, δεν ειναι θεμα μερικων επαναληψεων καθως ο σκοπος μου ειναι να διαβαζει σειριακα δεδομενα και να εμφανιζει τις σταθμες. Την σειριακη συνδεση την εχω κανει και γενικα εχει τελειωσει το θεμα απλα οταν κλεινω το παραθυρο αυτο εμφανιζεται ξανα και ξανα μεχρι να το κλεισω απο το τερμιναλ. Μάλλον θα πρέπει να αγχωθείς για bacward compatibility. Μπα οχι προσωπικη ενασχοληση ειναι σε περιοδο εξεταστικης Τιποτα παραδοτεο
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα