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

εντολη if σε matlab


plato

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

Δημοσ.

Θα ηθελα να ρωτησω το εξης. Εστω οτι εχω μια εξισωση 5ου βαθμου την οποια οριζω ως

 

χ=[α β γ δ ε ζ]

 

και ζηταω τις ριζες της με την εντολη roots(x)

 

Μου δινει 5 ριζες πραγματικες+μιγαδικες. Μπορει καποιος να μου πει αν υπαρχει εντολη να απορριπτονται οι μιγαδικες ριζες και να κραταει μονο τις πραγματικες μη μηδενικες ριζες? Υποθετω με εντολη if. Ξερει κανεις ακριβως πώς?

Δημοσ.
Όχι δεν υπάρχει όμως μπορείς να κάνεις το εξής (χωρίς if !):

 

>
y=[1 4 2 3 6 -2];
x=roots(y);
x=x(imag(x)==0); % find real roots

 

:-)

 

Κι αν θελω να βαλω εναν νεο περιορισμο π.χ. χ>0 (οι πραγματικες ριζες να ειναι θετικες ή μη μηδενικες)? Μπορω να το δωσω ως νεα συνθηκη κατω απο αυτην την εντολη με τον ιδιο τροπο?

 

Ευχαριστω, ειναι μεγαλη βοηθεια μιας και ειμαι ασχετος απο matlab και λειτουργω με λογικη fortran που εχω δουλεψει λιγο και με μπερδευει ολο αυτο.

Δημοσ.

>v=[-1,2,-1,-5,3,pi,-1]  % test vector

% To define the position of positive values in the array
r = v>0  % The r vector is logical

% To keep the positive values
v = v(r) % if u wanna preserve the original array, just use v_pos instead of v
% To keep the negative values
v = v(~r)

 

Δώσε 3-4 ώρες από τη ζωή σου σε κάποιο matlab tutorial θα σε βοηθήσει ιδιαίτερα σε αυτά, προτείνω της online σημειώσεις, ppt files, από το Berkley.

Δημοσ.

Thanx παλικαρια!!!

 

---------- Το μήνυμα προστέθηκε στις 02:06 ----------

 

Παιδες ενα τελευταιο ασχετο με τα προηγουμενα.

 

Εχω φτιαξει ενα loop ουσιαστικα που βρισκει για μια σειρα δεδομενων διαφορα ζευγη (χ,ψ). Στο τελος λοιπον ζηταω να μου κανει plot και μου βγαζει τη γραφικη παρασταση. Στη συνεχεια για τα ιδια ακριβως δεδομενα και αλλαζοντας μονο εναν συντελεστη στις ιδιες συναρτησεις που εχω με πριν βρισκω νεα ζευγη (χ,ψ). Το ερωτημα μου ειναι αν μπορω να εμφανισω τις 2 γραφικες παραστασεις σε ενα διαγραμμα. Υπαρχει τροπος να του πω να κανει plot στο ιδιο διαγραμμα?

Δημοσ.

Δες την εντολή hold.

 

Γιατι for-loop; Δεν χρειαζεται! Μην γράφεις ΜΑΤLAB όπως γράφεις Fortran ή C, είναι λάθος και θα εχεις ως αποτέλεσμα πολύ αργό κώδικα!

Δημοσ.

Στη φαση που ειμαι ας πηγαινει και σαν χελωνα ο κωδικας. Ειναι ενα μικρο κομματι της διπλωματικης που πρεπει να το τελειωσω γιατι φευγω και φανταρος Φλεβαρη.

 

Αλλωσε δεν ειναι κατι ιδιαιτερο. Του δινω μια (πλεγμενη) συναρτηση που εξαρταται απο δυο μεταβλητες εκ των οποιων η μια εξαρταται απο την αλλη μεσω μιας εξισωσης 5ου βαθμου. Δινω ευρος τιμων που πρεπει να παιρνει η ανεξαρτητη μεταβλητη με συγκεκριμενο "βημα" (π.χ [-α:0.1:α]) και μου δινει τιμες για την εξαρτημενη μεταβλητη (μεσω της πεμπτοβαθμιας) και στη συνεχεια με αυτες τις δυο τιμες των μεταβλητων (εξαρτημενης και ανεξαρτητης) παιρνω το ζευγος (χ,ψ) μεσω μιας (πλεγμενης) συναρτησης. Οταν εξαντληθουν οι τιμες της ανεξαρτητης μεταβλητης τοτε κανει plot τη γραφικη παρασταση. Αυτο ειναι με λιγα λογια το προβλημα που ειχα προς επιλυση και εχω μεινει στο σημειο με την εξισωση 5ου βαθμου οπου και δεν ηξερα πώς να ζητησω μονο μια πραγματικη μη μηδενικη τιμη απο τις ριζες που δινει το προγραμμα για να συνεχισει το loop. Πιθανον να υπηρχε και καλυτερος τροπος επιλυσης, δεν ξερω. Εμενα αυτος μου φανηκε ο απλουστερος αν και δεν εχω γνωσεις matlab και συνεπως δεν μπορω να λειτουργησω με την "λογικη" του.

Δημοσ.

εφόσον οι άξονες είναι πάνω κάτω στην ίδια τάξη μεγέθους με hold on. Αλλιώς κοίτα για plotxx/ plotyy και παίξε με τις ιδιότητες τους για να φτιάξεις όμορφα τα σχήματα.

Δημοσ.

ΙnsomniaK θα μπωστη βοηθεια να δω πώς συντασεται η εντολη hold on και τι ακριβως κανει γιατι ειμαι στην ιδια ταξη μεγεθους.

Δημοσ.
Ευχαριστω παρα πολυ αλλα τι σημαινει το [...]?

 

Τίποτα βρε! Απλά εννοεί ότι μπορείς να επαναλάβεις την ίδια διαδικασία για όσα ξεχωριστά plot θες! :-)

Δημοσ.
Τίποτα βρε! Απλά εννοεί ότι μπορείς να επαναλάβεις την ίδια διαδικασία για όσα ξεχωριστά plot θες! :-)

 

:shifty::eek::-D :o

 

Τhanx!!!

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...