Title: Βοήθεια στο Matlab Post by: K on November 13, 2017, 18:46:57 pm Kαλησπέρα,
Γνωρίζει κάποιος πώς μπορώ να απεικονίσω πολλαπλές γραφικές παραστάσεις που έχω ήδη αποθηκευμένες, σε κοινό διάγραμμα; Θέλω πολλαπλά αρχεία .fig να τα ενώσω-απεικονίσω μαζί. Title: Re: Βοήθεια στο Matlab Post by: mpraskafoutas on November 13, 2017, 18:58:01 pm με τη συναρτηση legend(),αν καταλαβα καλα αυτο που θες να κανεις
συγκεκριμένα σχεδιάζεις ο,τι χρειαζεσαι με την plot(),μετά γράφεις hold on και στο τέλος legend(μεταβλητες στο κοινο διαγραμμα). Title: Re: Βοήθεια στο Matlab Post by: iason1907 on November 13, 2017, 19:02:24 pm Αν εννοείς πολλές γραφικές παραστάσεις στο ίδιο plot τότε τα βάζεις στην σειρά:
plot(x1,y1,...,xn,yn) Και με την legend μπορείς να βάλεις πινακακι με πληροφορίες για την κάθε μια με τον ίδιο τρόπο Title: Re: Βοήθεια στο Matlab Post by: K on November 13, 2017, 19:03:43 pm Σας ευχαριστώ για τις απαντήσεις.
Θέλω πολλαπλά αρχεία .fig (ήδη αποθηκευμένα) να τα ενώσω-απεικονίσω μαζί. Title: Re: Βοήθεια στο Matlab Post by: K on November 13, 2017, 19:12:06 pm με τη συναρτηση legend(),αν καταλαβα καλα αυτο που θες να κανεις συγκεκριμένα σχεδιάζεις ο,τι χρειαζεσαι με την plot(),μετά γράφεις hold on και στο τέλος legend(μεταβλητες στο κοινο διαγραμμα). Πως θα plotάρω αποθηκευμένα αρχεία .fig; Title: Re: Βοήθεια στο Matlab Post by: iason1907 on November 13, 2017, 19:13:32 pm θα ανοίξεις τα .fig και μετά διαδοχικά για τα Ν figures
L=findobj(i,'type','line'); copyobj(L,findobj(Ν,'type','axes')) i από 1 μέχει Ν-1 ή έτσι: fh1 = open('f1.fig'); fh2 = open('f2.fig'); ax1 = get(fh1, 'Children'); ax2 = get(fh2, 'Children'); ax2p = get(ax2(1),'Children'); copyobj(ax2p, ax1(1)); μπορείς επίσης με τον κέρσορα να επιλέγεις την γραμή σε κάθε πλοτ και με copy paste να την πηγαίνεις στο άλλο Title: Re: Βοήθεια στο Matlab Post by: K on November 13, 2017, 19:16:11 pm θα ανοίξεις τα .fig και μετά διαδοχικά για τα Ν figures L=findobj(i,'type','line'); copyobj(L,findobj(Ν,'type','axes')) i από 1 μέχει Ν-1 ή έτσι: fh1 = open('f1.fig'); fh2 = open('f2.fig'); ax1 = get(fh1, 'Children'); ax2 = get(fh2, 'Children'); ax2p = get(ax2(1),'Children'); μπορείς επίσης με τον κέρσορα να επιλέγεις την γραμή σε κάθε πλοτ και με copy paste να την πηγαίνεις στο άλλο copyobj(ax2p, ax1(1)); Σ' ευχαριστώ . :) Title: Re: Βοήθεια στο Matlab Post by: K on November 13, 2017, 21:17:56 pm ή έτσι: fh1 = open('f1.fig'); fh2 = open('f2.fig'); ax1 = get(fh1, 'Children'); ax2 = get(fh2, 'Children'); ax2p = get(ax2(1),'Children'); copyobj(ax2p, ax1(1)); Αυτό δε δούλεψε. Για το πρώτο θες να γράψεις ένα παράδειγμα αν π.χ 2 αρχεία .fig λέγονται ex1.fig και ex2.fig . Title: Re: Βοήθεια στο Matlab Post by: iason1907 on November 13, 2017, 22:30:03 pm Αυτό δε δούλεψε. Μπορείς να κάνεις το εξής. Να ανοίξεις με διπλό κλικ τα .fig. Στην matlab θα δεις ότι στο παράθυρο που ανοίγουν γράφει Figure N.Για το πρώτο θες να γράψεις ένα παράδειγμα αν π.χ 2 αρχεία .fig λέγονται ex1.fig και ex2.fig . To N αυτό είναι ο αριθμός που θα πρέπει να αντικαταστήσεις figure(1) plot(rand(1,100)) figure(2) plot(rand(1,100),'r') L=findobj(1,'type','line'); copyobj(L,findobj(2,'type','axes')) Title: Re: Βοήθεια στο Matlab Post by: mpraskafoutas on November 13, 2017, 22:36:09 pm το θες για την εργασία στις ψηφιακές 2;
αν ναι,γιατί να ανοίξεις τα αρχεία .fig σε κοινό διάγραμμα; Title: Re: Βοήθεια στο Matlab Post by: mpraskafoutas on November 13, 2017, 22:40:59 pm ψάξε και στο σαιτ της mathworks αν θες
https://www.mathworks.com/help/matlab/ref/openfig.html (https://www.mathworks.com/help/matlab/ref/openfig.html) Title: Re: Βοήθεια στο Matlab Post by: K on November 14, 2017, 14:56:41 pm το θες για την εργασία στις ψηφιακές 2; αν ναι,γιατί να ανοίξεις τα αρχεία .fig σε κοινό διάγραμμα; Και στην 1.2 και στην 1.3 ζητείται 1 συγκριτικό διάγραμμα των τριών BER καμπυλών. Ποστάρω ένα σκριπτ που κάνει τη δουλειά: figure; X1=snrNoneInterleaverNo; Y1=berNoneInterleaverNo; semilogy (X1,Y1); hold on X2=snrRS239InterleaverNo; Y2=berRS239InterleaverNo; semilogy (X2,Y2); hold on X3=snrRS223InterleaverNo; Y3=berRS223InterleaverNo; semilogy (X3,Y3); Title: Re: Βοήθεια στο Matlab Post by: mpraskafoutas on November 15, 2017, 00:30:48 am Και στην 1.2 και στην 1.3 ζητείται 1 συγκριτικό διάγραμμα των τριών BER καμπυλών. Ποστάρω ένα σκριπτ που κάνει τη δουλειά: figure; X1=snrNoneInterleaverNo; Y1=berNoneInterleaverNo; semilogy (X1,Y1); hold on X2=snrRS239InterleaverNo; Y2=berRS239InterleaverNo; semilogy (X2,Y2); hold on X3=snrRS223InterleaverNo; Y3=berRS223InterleaverNo; semilogy (X3,Y3); αυτό ισχύει που λες γενικά τα .fig δεν τα πειραζεις,είναι graphic tools (συγκεκριμένα στην εργασία δημιουργούν τις εικόνες που εκτυπώνονται) η semilogy() ταιριάζει γιατι αυτή η εξάρτηση υπάρχει μεταξύ της πιθανότητας σφάλματος συμβόλου και του SNR btw και γω έψαχνα πως να τα απεικονίσω,γι'αυτό με μπέρδεψες με τα .fig αρχεία Title: Re: Βοήθεια στο Matlab Post by: iason1907 on November 15, 2017, 00:49:02 am ok. το hold on μια φορά φτάνει σε κάθε figure. Αν το περιέγραφες λίγο καλύτερα θα ήταν και πιο γρήγορη η λύση. :p
Με .fig εγώ κατάλαβα ότι από κάπου είχες πολλά αποθηκευμένα figures και ήθελες να τα ενώσεις. Title: Re: Βοήθεια στο Matlab Post by: mpraskafoutas on November 15, 2017, 01:29:03 am ok. το hold on μια φορά φτάνει σε κάθε figure. Αν το περιέγραφες λίγο καλύτερα θα ήταν και πιο γρήγορη η λύση. :p Με .fig εγώ κατάλαβα ότι από κάπου είχες πολλά αποθηκευμένα figures και ήθελες να τα ενώσεις. γι'αυτό το θέμα είδα κάπου ότι μπορείς να τα αποθηκεύσεις ως ΜΑΤLAB figure files (αντί για απλά .fig αρχεία) και να τα απεικονίσεις κανονικά Title: Re: Βοήθεια στο Matlab Post by: mpraskafoutas on November 15, 2017, 19:00:20 pm Και στην 1.2 και στην 1.3 ζητείται 1 συγκριτικό διάγραμμα των τριών BER καμπυλών. Ποστάρω ένα σκριπτ που κάνει τη δουλειά: figure; X1=snrNoneInterleaverNo; Y1=berNoneInterleaverNo; semilogy (X1,Y1); hold on X2=snrRS239InterleaverNo; Y2=berRS239InterleaverNo; semilogy (X2,Y2); hold on X3=snrRS223InterleaverNo; Y3=berRS223InterleaverNo; semilogy (X3,Y3); αυτό το γράφεις στο command line ενώ τρέχει το start.m; Title: Re: Βοήθεια στο Matlab Post by: K on November 15, 2017, 19:11:36 pm Ανοίξε νέο παράθυρο για script και γράψ' το.
Πρέπει τις μεταβλητές να τις έχεις ήδη αποθηκεύσει. Title: Re: Βοήθεια στο Matlab Post by: mpraskafoutas on November 15, 2017, 19:59:57 pm Ανοίξε νέο παράθυρο για script και γράψ' το. Πρέπει τις μεταβλητές να τις έχεις ήδη αποθηκεύσει. ωραίος,θα το δοκιμάσω Title: Re: Βοήθεια στο Matlab Post by: s0r0n on May 18, 2018, 16:33:51 pm Έχω 2 πίνακες 3*1 kai 2*1. Θελω μετα απο καθε επαναληψη να ελεγχω καθε στοιχειο καθε πινακα με εναν αριθμο, πχ e, και αν ολα τα στοιχεια ειναι <e τοτε να βγαινω απο τη while. Μου βγαζει ομως συνεχεια error. Θα ηθελα επισης να το κανω με if (statement) και break και οχι με καποια for.
Title: Re: Βοήθεια στο Matlab Post by: Ancient on May 18, 2018, 16:47:01 pm Αν B ο πίνακας τότε:
if ~sum( B( : )>=e ) break; end Title: Re: Βοήθεια στο Matlab Post by: MrRobot on May 18, 2018, 16:49:03 pm Ή μπορείς να γράψεις
if any(B >= e) *do stuff* end Title: Re: Βοήθεια στο Matlab Post by: Ancient on May 18, 2018, 16:56:50 pm Ή και:
if all( B( : ) <e) break; end :P Title: Re: Βοήθεια στο Matlab Post by: s0r0n on May 18, 2018, 17:08:28 pm Τελικά η εντολή είναι :
if any(C>e)==0 && any(D>e)==0 break; end Ευχαριστώ πολύ για τις απαντήσεις. |