THMMY.gr

Ηλεκτρονικοί Υπολογιστές και Τεχνικά Θέματα => Matlab, Mathematica, Octave, EngLab κλπ => Topic started by: kaplanis on December 30, 2005, 02:26:17 am



Title: Matlab βοηθεια
Post by: kaplanis on December 30, 2005, 02:26:17 am
Ειμαι ντιπ για ντιπ τουβλο στο ματλαμπ. :-[ Αν ξερει κανεις να μου πει πως μπορω να ορισω μια δικια μου συναρτηση, να ορισω ποια θα ειναι η μεταβλητη και μετα να την σχεδιασω


Title: Απ: Matlab βοηθεια
Post by: sparos on December 30, 2005, 02:40:09 am
Αν έχεις το βιβλίο εργαστηριακών ασκήσεων του Μαργαρη μαζί σου τότε κοίτα στις τελευταίες σελίδες τα γράφει αυτά απλά και γρήγορα!!!!


Title: Απ: Matlab βοηθεια
Post by: kaplanis on December 30, 2005, 02:50:28 am
Το ξερω οτι εχει προνοησει ο President αλλα το χω αφησει θεσσαλονικη το βιβλιο


Title: Απ: Matlab βοηθεια
Post by: fugiFOX on December 30, 2005, 14:24:11 pm
ανοίγεις ένα νεο m-file και ξεκινάς στην πρώτη γραμμή με τη δήλωση

function [y1,y2,y3]=somename(x1,x2,x3)
όπου τα x είναι τα inputs και τα y τα outputs, ενώ το πλήθος τους μπορεί να είναι από μηδενικός (αν θυμάμαι καλά) ως 32.


ΥΓ: Να μεταφερθεί το topic στο Απορίες ΜΑTLAB


Title: Απ: Matlab βοηθεια
Post by: aliakmwn on December 31, 2005, 00:09:26 am
Οι οδηγιες του Matlab του Μαργαρη υπαρχουν εδω:

http://genesis.ee.auth.gr/margaris/greek/courses/laboratory/MATLAB.pdf


Title: Απ: Matlab βοηθεια
Post by: kaplanis on December 31, 2005, 02:40:21 am
 Οκ μπορω να πω οτι ειμαι μερικως καλυμενος


Title: Απ: Matlab βοηθεια
Post by: kaplanis on December 31, 2005, 03:14:33 am
Kαι γιατι ειμαι μερικως καλυμενος...

Το βιβλιο του μαργαρη δεν κανει σχεδον καθολου αναφορα στη δημιουργια συναρτησεων τυπου
οτιΘελω(χ,ψ).
Πανω κατω ειναι αυτο που ειπε ο Fugitive αλλα και παλι κατι δε παει καλα

Δημιουργω ενα Μ-file και γραφω:

function y=g(w);
y = sqrt(w^2 + a*w^8) ;

Στο command γραφω:
a=10;
w=0:0.1:300;
y=g(w)
και πατωντας εντερ παιρνω
matrix is not square
 variable a not defined και αλλα τετοια καντονεζικα

(n'joy)Αυτο που θελω  ειναι να δηλωσω μια συναρτηση οτιΘελω(ω) η οποια θα δεχεται παραμετρους και να σχεδιασω το γραφημα της ως προς ω


Title: Απ: Matlab βοηθεια
Post by: Netgull on December 31, 2005, 04:48:28 am
Όταν υψώνεις πίνακα σε δύναμη πρέπει να ειναι τετραγωνικός. Αν θες να υψώσεις το κάθε στοιχείο του (όπως θες τώρα) πρέπει να χρησιμοποιήσεις το ".^". Δηλαδή y = sqrt(w.^2 + a*w.^8) ;
Τώρα για το a, χωρίς να το έχω ψάξει, μάλλον οι μεταβλητές που χρησιμοποιείς μέσα στη συνάρτηση αν δεν είναι είσοδοι πρέπει να ορίζονται μέσα σε αυτή. Έχει να κάνει με το ότι όλες οι μεταβλητές σε μια συνάρτηση είναι τοπικές μεταβλητές.


Title: Re: Matlab βοηθεια
Post by: nad on December 31, 2005, 12:14:08 pm
  Δεν έχω μπροστά μου το matlab και δεν είμαι σίγουρη, αλλά νομίζω ότι για να δίνεις τιμές σε μεταβλητή από το command και όχι από το πρόγραμμα, πρέπει να την ορίσεις στο πρόγραμμα ως global. Δες λίγο το help. Το matlab έχει τέλειο help.


Title: Re: Matlab βοηθεια
Post by: Aurelius on January 02, 2006, 02:25:39 am
Παιδια και εμενα μια απορια για την συνθεση.
Ο Θεοχαρης λεει να κανουμε γραφημα αποσβεσης και να χρησιμοποιησουμε την                 inv(function). Οταν το κανω μου βγαζει μηνυμα οτι επειδη αντιστρεφεται εχει περισσοτερα μηδενικα απο πολους και γι αυτο δεν το βγαζει. Εν τω μεταξυ ειναι και καπως περιεργο, γιατι η αντιστροφη στον λογαριθμο ειναι ενα προσημο μειον. Τελςο παντων δεν βγαινει και δεν μπορω να το πολυψαξω γιατι ο υπολογιστης στην Μυτιληνη δεν φυσαει κιολας...
Μπας και εχετε να προτεινετε κατι;;;


Title: Απ: Matlab βοηθεια
Post by: kaplanis on January 03, 2006, 19:17:11 pm
Υπαρχει μια εντολη στο ματλαμπ που λεγεται  φυσαει(χ)
Μετα θα πας στη Java και θα φτιαξεις ενα αντικειμενο της κλασης PCια που φυσανε =η κονσερβα που εχω στη Μυτιληνη
Τοτε αν χρησιμοποιησεις τη μεθοδο
η κονσερβα που εχω στη Μυτιληνη.φυσαει();

θα κανεις τον υπολογιστη σου να φυσαει ομως προσεχε να φορας παντα μπουφαν οταν τρεχεις το προγραμμα γιατι μπορει  να σε κολλησει κανα ιο


Title: Re: Matlab βοηθεια
Post by: Aurelius on January 04, 2006, 14:50:08 pm
Α ρε καπλανε, να φανταστω οτι το laptop exei μοντεμ γι αυτο δικτυωνεσαι....
:):):)


Title: Απ: Matlab βοηθεια
Post by: Cyberkat on February 22, 2006, 20:48:23 pm
Υπάρχει καμία συνάρτηση του matlab που να μετατρέπει ένα τριώνυμο της μορφής ax^2+bx+1 σε αυτή την μοφή (1+cx)(1+dx)??
To help δεν βοήθησε... >:(


Title: Απ: Matlab βοηθεια
Post by: poly1 on February 22, 2006, 20:53:36 pm
Ε τί? Παραγοντοποίηση είναι ...

η      r = roots([a b c]);              δε κάνει?


r = [c d]


Title: Απ: Matlab βοηθεια
Post by: Cyberkat on February 22, 2006, 21:00:04 pm
Η roots επιστρέφει αυτήν την μορφή (x-c)(x-d).
Θα το κάνω χειροκίνητα :D
έλεγα μήπως υπήρχε.....


Title: Απ: Matlab βοηθεια
Post by: Axel on February 22, 2006, 21:01:40 pm
Το simplify υποτιθεται οτι κανει κατι τετοιο. Στο παραδειγμα που εχει το Help μου δουλεψε μια χαρα.

>> syms a b c
>> simplify(exp(c*log(sqrt(a+b))))
 
ans =
 
(a+b)^(1/2*c)

Το δοκιμασα με αυτο που εδωσες εσυ ως
>> syms a b x
>> simplify(a*x^2+b*x+1)
 
ans =
 
a*x^2+b*x+1

αλλα δεν το κανει. Γιατι δεν ξερω.

Κοιταξε και την εντολη simple. Μπορει να κανει κατι. Αμα το βρεις κανε και ενα post. :)


Title: Απ: Matlab βοηθεια
Post by: Zarathoustra on February 22, 2006, 22:18:46 pm
Η ninja νομίζω έδωσε την απάντηση.Και με λίγο προγραμματισμό στο Matlab,μπορεί κανείς να κατασκευάσει την συνάρτηση που θα κάνει αυτό ακριβώς που θέλει η Cyberkat, έτσι ώστε οι υπολογισμοί να γίνονται αυτοματοποιημένα.

Το simplify κάνει απλοποιήσεις.Δεν μπορείς να απλοποιήσεις άλλο ένα τριώνυμο(πλήν ελαχίστων ειδικών περιπτώσεων).Για παραγοντοποιήσεις το symbolic toolbox έχει άλλες εντολές,αλλά δεν νομίζω ότι θα βοηθούσαν σε αυτήν την περίπτωση.
Γενικά το matlab δεν είναι κατάλληλο για συμβολικούς υπολογισμούς.Αυτό είναι ειδικότητα του Mathematica(και παρόμοιων πακέτων).


Title: Re: Matlab βοηθεια
Post by: fugiFOX on February 23, 2006, 12:59:21 pm
Δουλευεις με αριθμους ή με συμβολικές παραστάσεις;


Title: Απ: Matlab βοηθεια
Post by: Cyberkat on February 23, 2006, 13:10:41 pm
Με αριθμούς. Τελικά το έκανα με απλό παραδοσιακό προγραμματισμό ;)
Ήμουν σίγουργη ότι υπήρχε αυτή η συνάρτηση γι' αυτό ρώτησα. Ίσως να κάνω και λάθος...
Ευχαριστώ για την βοήθεια πάντως :)


Title: Re: Matlab βοηθεια
Post by: fugiFOX on February 23, 2006, 13:13:29 pm
Πρέπει να υπάρχει από όσο θυμάμαι, αλλά πρέπει να παίξει λίγο με τα arguments.
Τέσπα, παραδοσιακοί τρόποι rulez!


Title: Απ: Matlab βοηθεια
Post by: Axel on February 27, 2006, 16:32:41 pm
Ξερει κανεις πως μπορω να καθορισω το χρωμα της γραφικης παραστασης στο Matlab οταν σχεδιαζω το margin ενος συστηματος; Η διαφορετικα αν μπορω να καθορισω το χρωμα μιας γραφικης παραστασης χωρις να βαλω plot(x,t,'r'). Κατι πιο γενικο. Σαν setcolor ας πουμε. Δεν βρισκω κατι.


Title: Απ: Matlab βοηθεια
Post by: Cyberkat on February 27, 2006, 16:38:29 pm
Δεν ξέρω αν θα βοηθήσει το παρακάτω αλλά τέσπα...
plot(x,t,'Color','red')
Αν βάλεις στο help "linespec" θα σου βγάλει και άλλα χρήσιμα, νομίζω ότι μπορείς να ορίσεις και νέο χρώμα πέρα από τα red, blue, κλπ με [R G B].


Title: Απ: Matlab βοηθεια
Post by: Axel on February 27, 2006, 16:44:51 pm
Δε θελω να αλλαξω το χρωμα στο plot, αλλα στη συναρτηση margin που δινει τα περιθωρια φασης και κερδους ενος συστηματος. Κοιταξα τα linespec και line, αλλα δεν καταφερα κατι. Το να το αλλαζω με το χερι αφου σχεδιαστει η γραφικη παρασταση δεν ειναι οτι γρηγοροτερο...


Title: Απ: Matlab βοηθεια
Post by: Netgull on February 27, 2006, 17:04:16 pm
Δεν κατάλαβα ακριβώς τι θες να κάνεις, αλλά μπορείς να πάρεις και ένα handle για τη γραφική παράσταση (νομίζω με h=plot(x,y)) και μετά να θέσεις το χρώμα για τα διάφορα αντικείμενα του γραφήματος με την set(h). Δεν θυμάμαι ακριβώς πως. Ψάξε στo help μήπως σε βοηθήσει.


Title: Απ: Matlab βοηθεια
Post by: Axel on February 27, 2006, 17:24:19 pm
Χεχ, το βρηκα! Thanks. =)

Λοιπον, εστω οτι εχουμε τη συναρτηση μεταφορας ανοιχτου βρογχου ενος συστηματος Fοl. Για να σχεδιασουμε τα περιθωρια φασης και κερδους του συστηματος αυτου χρησιμοποιουμε την εντολη margin(Fοl). Ομως η εντολη αυτη δεν δεχεται ως ορισμα το χρωμα της γραμμης οπως κανει η plot(x,y,'r').

Το παρακατω κανει κοκκινη τη γραμμη της γραφικης παραστασης. Λογικα θα δουλευει και με το plot.
margin(Fol)
set(findobj('Type','line'),'Color','r')

Edit: Ενα μικρο 'bug'... Κανει ολες τις γραφικες παραστασεις που δημιουργηθηκαν στο χρωμα που οριζεις. Καπως θα γινεται να κανει μονο αυτη που θες. Με το handler πιθανοτητα που ειπε ο Netgull.


Title: Re: Matlab βοηθεια
Post by: fugiFOX on February 27, 2006, 19:32:32 pm
Είχα φτιάξει ένα προγραμματάκι σαν κι αυτό που θέλεις.
Θα το ψάξω να το βρω αν δεν το βιάζεσαι άμεσα.


Title: Απ: Matlab βοηθεια
Post by: Axel on February 27, 2006, 22:55:27 pm
Thanks fugitive, αλλα τελικα το εκανα με παπατζικο τροπο με πολλαπλα runs του προγραμματος. :)


Title: Απ: Matlab βοηθεια
Post by: Axel on March 06, 2006, 14:24:47 pm
Μια απορια ακομα...

Εχεις κανεις ιδεα πως γινεται αν βαλεις το matlab να σου ανοιξει μια εικονα και δεν βρει το αρχειο αυτο να μην πεταει error, αλλα να δινει τιμη σε καποια μεταβλητη?


Title: Re: Matlab βοηθεια
Post by: fugiFOX on March 06, 2006, 22:01:04 pm
χμ, το error το πετάει από κάποιο exception που συμβαίνει.
Ο μόνος τρόπος που μου έρχεται στο μυαλό είναι να επέμβεις στον κώδικα της συγκεκριμένης συνάρτησης
και να τροποποιήσεις εκείνο το σημείο όπου καλείται το exception αντικαθιστώντας το με μια εντολή αναθεσης τιμής σε μεταβλητή.
Δεν είναι τόσο δύσκολο όσο ακούγεται. Αν γνωρίζεις σχετικά μέτριο προγραμματισμό σε ΜΑΤΛΑΒ θα καταλάβεις όλο τον κώδικα της συνάρτησης εκτός ίσως από τη χρήση των μεταβλητών varargin/out, για αυτό ρίξε πρώτα μια ματιά στο help για αυτές τις μεταβλητές


Title: Απ: Matlab βοηθεια
Post by: Zarathoustra on March 06, 2006, 22:35:44 pm
@Axel:
To matlab είναι μια πλήρης γλώσσα προγραμματισμού και κάθε αξιοπρεπής γλώσσα σου παρέχει την δυνατότητα χειρισμού σφαλμάτων.Πιστεύω ότι αυτό που θέλεις να κάνεις γίνεται με χρήση block try-catch

Στο help του Matlab υπάρχει κεφάλαιο που σου δείχνει πως ακριβώς γίνεται αυτό:

Section : Programming
Title : Error Handling


Title: Απ: Matlab βοηθεια
Post by: Axel on March 06, 2006, 22:58:44 pm
Thanks Zarathoustra! Δεν ηξερα οτι το Matlab εχει try-catch. Δουλεψε μια χαρα αυτο που ηθελα σε συνδυασμο με την return. =)

Θα μπορουσε να γινει και αυτο που λες Fugitive, αλλα θα επρεπε να στελνω και τη συναρτηση για την αναγνωση καθε φορα σε καποιον που θελει να δει το προγραμμα μου για να διαβασει αυτη το Matlab και οχι την ετοιμη.


Title: Re: Matlab βοηθεια
Post by: fugiFOX on March 06, 2006, 23:01:45 pm
Δεν κατάλαβα τι θες να πεις,
αλλά αφού έγινε η δουλειά σου δεν χρειάζεται   ;)


Title: Re: Matlab βοηθεια
Post by: nad on March 21, 2006, 00:52:00 am
Να ρωτήσω κι εγώ κάτι; Έχουμε ένα πίνακα nxn, του οποίου τα στοιχεία είναι συνάρτηση μιας μεταβλητής. Πως θα βρω για ποιες τιμές της μεταβλητής μηδενίζεται η ορίζουσά του;
Θέλω αναλυτική λύση, γιατί βαριέμαι να ψάχνω... ;)
Ευχαριστώ!!!  :)


Title: Re: Matlab βοηθεια
Post by: ckck20 on March 21, 2006, 02:07:12 am
Για πίνακα 2χ2:
syms x
a=[x,2;2,x];
solve(det(a))


Title: Re: Matlab βοηθεια
Post by: fugiFOX on March 25, 2006, 13:45:15 pm
α)τι εννοείς να λύσεις μια χιλιάρα φορές;
Με άλλους συντελεστές;

β) γιατί είναι η προεπιλεγμένη μορφή μεφάνισης των αριθμών όταν δουλέυεις με syms. Ψάξε στο help έχει μια συνάρτηση που μεταρτέπει αυτή τη μορφή σε κανονικό αριθμό

γ)αυτό δεν μπορώ να στο απαντήσω


Title: Απ: Matlab βοηθεια
Post by: Zarathoustra on March 25, 2006, 22:15:48 pm
Αντί για solve('ar(1,1)=0','x') μπορείς να χρησιμοποιήσεις την παράσταση solve([char(ar(1,1)) '=0'],'x')
Βέβαια αν σε ενδιαφέρουν μόνο οι εξισώσεις με δεύτερο μέλος '=0' αρκεί η solve(ar(1,1),'x').

Υποθέτω ότι ο ar είναι πίνακας με sym object


Title: Απ: Matlab βοηθεια
Post by: Zarathoustra on March 25, 2006, 22:55:20 pm
Το βρίσκω πιθανό να υπάρχει,αλλά δεν μπόρεσα να βρώ κάτι από το documentation.
Εγώ προτείνω να κατασκευάσεις εσύ την συνάρτηση δεν είναι πολύ δύσκολο.

Τις ρίζες μπορείς να τις βρείς με την roots.Μετά πρέπει να απορρίψεις τις μιγαδικές (π.χ με την isreal (προφανώς πρόκειται για σιωνιστική συνομωσία)) και να βρείς το πρόσημο της συνάρτησης ανάμεσα στις ρίζες(υπολογίζοντας π.χ μια τιμή στον αριθμητικό μέσο των ριζών).


Title: Re: Matlab βοηθεια
Post by: fugiFOX on March 26, 2006, 01:54:20 am
από όσο θυμάμαι δε νομίζω να υπάρχει συνάρτηση για πολυωνυμικές ανισότητες.
Οπότε...


Title: Re: Matlab βοηθεια
Post by: dimvam on April 03, 2006, 14:12:17 pm
Είχα το εξής πρόβλημα με το Ματλαβ. Μόλις το άνοιγα, έκλεινε το παράθυρο από μόνο του. Το έκανα ξάνα εγκατάσταση όπως μου είπατε αλλά πάλι το ίδιο πρόβλημα. Πως παίρνω Licence Number; Μήπως παίζει ρόλο ότι άφησα κενό το πεδίο αυτό κατά την εγκατάσταση;
Θα εκτιμήσω ιδιαιτέρως γρήγορες απάντήσεις, σε λίγη ώρα έχω εργαστήριο κυκλωμάτων!
 


Title: Απ: Matlab βοηθεια
Post by: JAs0n-X on April 03, 2006, 20:18:35 pm
Ποια εκδοση matlab εχεις? αν εχεις την 7 στειλε μου ενα πμ γιατι εδω ειμαστε οφφ τοπικ! :P ;D


Title: Re: Matlab βοηθεια
Post by: NetBuster on April 03, 2006, 20:24:49 pm
Είχα το εξής πρόβλημα με το Ματλαβ. Μόλις το άνοιγα, έκλεινε το παράθυρο από μόνο του. Το έκανα ξάνα εγκατάσταση όπως μου είπατε αλλά πάλι το ίδιο πρόβλημα. Πως παίρνω Licence Number; Μήπως παίζει ρόλο ότι άφησα κενό το πεδίο αυτό κατά την εγκατάσταση;
Θα εκτιμήσω ιδιαιτέρως γρήγορες απάντήσεις, σε λίγη ώρα έχω εργαστήριο κυκλωμάτων!
 
Και εγω το ιδιο προβλημα εχω συν το οτι δεν εγκαθισταται το 2ο CD..


Title: Απ: Matlab βοηθεια
Post by: Andrikos on April 04, 2006, 00:17:26 am
Βαλτε Mathematica... oooooeeeeeeooooo


Title: Re: Matlab βοηθεια
Post by: elisabeth on April 05, 2006, 13:59:39 pm
να ρωτησω και εγω το ασχετο στα του matlab κατι?

υπάρχει συνάρτηση μοναδιαίου βήματος?
θέλω να φτιάξω μια συναρτηση/παλμο:  x(t)=u(t+t0)-u(t-to)


Title: Re: Matlab βοηθεια
Post by: fugiFOX on April 05, 2006, 17:53:20 pm
οχι, αλλά μπορείς να δεις την συμπεριφορά ενός συστήματος σε βηματική είσοδο.
Ποια είναι αυτή; Ε, πολύ απλά
step()
Ψάξε στο help λέει τα πάντα


Title: Re: Matlab βοηθεια
Post by: elisabeth on April 07, 2006, 17:17:51 pm
οχι, αλλά μπορείς να δεις την συμπεριφορά ενός συστήματος σε βηματική είσοδο.
Ποια είναι αυτή; Ε, πολύ απλά
step()
Ψάξε στο help λέει τα πάντα
αλπα θέλω να σχεδιάσω ένα ιδανικο χαμηλοπερατο φίλτρο απο ω -π/4 ως π/4


Title: Απ: Matlab βοηθεια
Post by: JAs0n-X on April 07, 2006, 17:21:39 pm
υπαρχει η stepfun(T,T0)

T ειναι το διανυσμα του οριζοντιου αξονα. Τ0 που θες να ειναι η βηματικη!
οποτε

T=linspace(0,1,300);
id=stepfun(T,0)-stepfun(T,Ω)


Title: Re: Matlab βοηθεια
Post by: nad on April 18, 2006, 10:26:37 am
Και επανέρχομαι με μία ακόμη απορία...
Λοιπόν, έχουμε ένα ομογενές σύστημα(έτσι δε λέγεται αυτό της μορφής P*x=0 ;) Λοιπόν, πως γίνεται το ματλάμπι να μας δώσει τη λύση παραμετρικά; Δλδ, αν έχουμε πίνακα nxn να μας δώσει τα n-1 διανύσματα(x) σε συνάρτηση του ενός;
Vielen Dank!!!!!


Title: Re: Matlab βοηθεια
Post by: fugiFOX on April 18, 2006, 11:16:22 am
Μάλλον θα χρειαστεί να δουλέψεις με το symbolic toolbox.
Ψάξε εκεί αν υπάρχει κάτι για επίλυση τέτοιων συστημάτων.
Εάν όχι, μην ξεχνάς ότι μπορείς πάντα να το φτιάξεις εσύ ;)


Title: Re: Matlab βοηθεια
Post by: nad on April 29, 2006, 10:45:56 am
Παιδιά γειά σας!

Έχω ένα πρόβλημα (ένας φίλος μου δηλαδή) και ζητώ την βοήθειά σας...

Έχει ένα σύστημα διαφορικών εξισώσεων να λύσει το οποίο είναι σε μητρωϊκή μορφή, δηλαδή έχει τη μορφή: ΑΧ''+BΧ'+CΧ=F, A,B,C πίνακες σταθερών όρων ΝχΝ και F πίνακας συναρτήσεων του χρόνου Νχ1. Όπου Χ είναι οι πίνακες-στήλες (Νχ1) των αγνώστων. Πως θα το λύσω;;;;;;;;;;;;;;;;;;;;;;;;;;;
Ευχαριστώ!!!


Title: Re: Matlab βοηθεια
Post by: fugiFOX on April 29, 2006, 15:08:24 pm
Εάν με τον ' εννοείς παράγωγο τότε ψάξε στο help για
differential equations κάπου πρέπει να είχε πάρει το μάτι μου για επίλυση συστημάτων δευτέρου βαθμού,
αλλά δυστυχώς δεν θυμάμαι περισσότερες λεπτομέρειες


Title: Re: Matlab βοηθεια
Post by: tolos on July 19, 2007, 21:11:35 pm
Απορια SOS:

Ξερει κανεις πως γινεται να δημιουργησουμε ενα νευρωνικο δικτυο το οποιο δεν θα πληρως διασυνδεδεμενο;


Title: Re: Matlab βοηθεια
Post by: dimvam on December 09, 2007, 01:05:01 am
Θέλω να ρωτήσω κάτι, πιστεύω απλό για τους πιο πολλούς, αλλά δύσκολο για μένα τον άσχετο.

Θέλω να σχεδιάσω μία συνάρτηση y ως προς x ή οποία όμως αλλάζει μορφή για κάποια διαστήματα. Δηλαδή π.χ. για 1<χ<2 είναι χ^2+7, ενώ για 2<=χ<6 είναι χ^2 + 4χ -12. (Κλασικά προβλήματα, δηλαδή, γραφικής συνέλιξης σημάτων).

Από το help δεν έβγαλα άκρη, έχει τόσα πολλά που δεν ξέρω που να ψάξω.

Ευχαριστώ!


Title: Re: Matlab βοηθεια
Post by: fugiFOX on December 09, 2007, 11:59:22 am
Μπορείς να το κάνεις με πολλούς τρόπους,
διάλεξε εσύ ποιος σε βολεύει περισσότερο.

1) Με for loops και if blocks
Καταλαβαίνεις νομίζω τι εννοώ

2) Φτιάχνεις ξεχωριστά τα διανύσματα των x και για καθε ένα από τα διαστήματα
π.χ.
x1=[1:0.1:2], y1=x1.^2+7
x2=..., y2=...

και κατόπιν τα ενώνεις σε ένα x,y
x=[x1,x2,...xn], y=[y1,y2,...yn]

3) Κατασκευάζεις και πλοτάρεις
δλδ κάθε φορά δημιουργείς το διάνυσμα x,y του διανύσματος που σε ενδιαφέρει
το πλοτάρεις και συνεχίζεις.
Αυτός ο τρόπος είναι ο καλύτερος από άποψη διαχείρισης μνήμης.
Ο κώδικάς σου θα είναι κάπως έτσι:

x=[1:0.1:2]
y=x.^2+7
plot(x,y)
x=[2:0.1:6]
y=...
hold on
plot(x,y)
hold off

Για περισσότερες λεπτομέρεις σχετικά με τις συναρτήσεις που χρησιμοποίησα
παραπάνω, μπορείς να ανατρέξεις στο help.
Τα λέει αναλυτικότατα


Title: Re: Matlab βοηθεια
Post by: mendelita on January 07, 2008, 14:46:13 pm

Φτιάχνω μια συνάρτηση, για να την χρησιμοποιήσω σε ode συγκεκριμένα:
function dx=mplampla(t,x)

Ορίζω το διάνυσμα εξόδου:
dx=[-x(1) ; x(1)];   ←

Μετά κάνω κάποια άλλα πράγματα (χρησιμοποιώ την ode, plot, κτλ), πάω να το τρέξω και μου βγάζει error στη γραμμή με το βελάκι.
Το δοκίμασα και με άλλους τρόπους που μπορείς να ορίσεις πίνακες αλλά πάλι μου βγάζει λάθος.. Γιατί? :'(


Title: Re: Matlab βοηθεια
Post by: Aurelius on January 07, 2008, 14:55:33 pm
Ε τι λαθος βγαζει???


Title: Re: Matlab βοηθεια
Post by: mendelita on January 07, 2008, 14:57:41 pm

Δε λέει. Βγάζει μόνο αυτό:

Error in ==> odeA at 2
dx=[-x(1);x(1)];

:???:


Title: Re: Matlab βοηθεια
Post by: Aurelius on January 07, 2008, 15:00:47 pm
Μηπως πρεπει να το κανεις cell array??? Το x τι ειναι???


Title: Re: Matlab βοηθεια
Post by: mendelita on January 07, 2008, 15:05:01 pm

Μηπως πρεπει να το κανεις cell array??? Το x τι ειναι???

Εεεε τι εννοείς cell array? ^redface^

Για το x κι εγώ το σκέφτηκα, διάνυσμα είναι.
Αλλά σε όλα τα παραδείγματα του Matlab έτσι το έχει, άσε που το x είναι που ψάχνω, δεν μπορώ να το ορίσω... :P

Σίγουρα κάνω καμιά χοντρή βλακεία και δεν τη βλέπω τώρα... ^banghead^ ^seestars^


Title: Re: Matlab βοηθεια
Post by: Aurelius on January 07, 2008, 15:06:31 pm
Μισο να τα δω λιγο γιατι δεν ειχα ασχοληθει με διανυσματα στο MATLAB.


Title: Re: Matlab βοηθεια
Post by: mendelita on January 07, 2008, 16:12:50 pm

Δούλεψε!! ^hello^
Ευχαριστώ πολύ Aurelius!! :)
Σε έχω ευχαριστήσει παντού.. :D


Title: Re: Matlab βοηθεια
Post by: Aurelius on January 07, 2008, 16:13:37 pm
Τπτ ...


Title: Re: Matlab βοηθεια
Post by: mendelita on January 09, 2008, 00:55:26 am

Πάλι εγώ.. :P

Ξέρεις κανείς πώς μπορώ να βάλω διαγράμμιση σε μια περιοχή ενός διαγράμματος?
Για να απεικονίσω για π.χ. την περιοχή |x| >= 2.


Title: Re: Matlab βοηθεια
Post by: Aurelius on January 09, 2008, 11:51:56 am
Τι εννοεις διαγραμμιση???


Title: Re: Matlab βοηθεια
Post by: mendelita on January 09, 2008, 12:33:32 pm

Σκίαση, διαγώνιες γραμμές ή κάτι τέτοιο..
Δηλαδή για το |χ|>=2 φτιάχνω τις ευθείες χ=2 και χ=-2 αλλά πως θα δείξω ότι εννοώ το χ>2 και χ<-2?


Title: Re: Matlab βοηθεια
Post by: auroraTM on January 09, 2008, 12:49:54 pm
Παιδια έχω ένα μικρο χαζό προβλημα
t=0:0.001:0.5;
x=exp(-2*t)*20*cos(100*pi*t)

??? Error using ==> mtimes
Inner matrix dimensions must agree.

Tι φταιει ??? :???:

Ευχαριστώ προκαταβολικά


Title: Re: Matlab βοηθεια
Post by: arianos on January 09, 2008, 12:54:50 pm
γραψε αυτο:

 x=exp(-2*t)*20.*cos(100*pi*t)

αλλιώς ειναι σα να προσπαθει να πολλαπλασιάζει πίνακα 1*Ν με 1*Ν ..


Title: Re: Matlab βοηθεια
Post by: auroraTM on January 09, 2008, 12:57:56 pm
ΤΗΧ
 :D :D


Title: Re: Matlab βοηθεια
Post by: arkas on March 28, 2008, 10:06:25 am
Μπορεί να προτείνει κανεις τροπο με τον οποιο μπορει ενα διάνυσμα με πραγματικες τιμες ήδη δειγματολειπτημένες (αναλογικο σημα) να μετατραπεί σε πίνακα bits(mxn) ,όπου m=δειγματα και n=bits per sample (ψηφιακο σημα )?

Μετατροπη αναλογικου σε ψηφιακο δηλαδη με καποια μεθοδο κωδικοποιησης.


Title: Re: Matlab βοηθεια
Post by: Aurelius on March 28, 2008, 11:19:17 am
Το αρχικο σημα(αναλογικο) εχει ποσα δειγματα?


Title: Re: Matlab βοηθεια
Post by: arkas on March 28, 2008, 12:53:21 pm
To αρχικό έχει ακριβως 88575 δειγματα (Σκεψου οτι ειναι αρχειο ηχου *.wav που διαρκει σχεδον 5'')


Title: Re: Matlab βοηθεια
Post by: Krono on March 28, 2008, 13:44:08 pm
      Αυτό δεν είναι αναλογικό σήμα! Είναι ήδη δειγματοληπτημένο διακριτό σήμα. Τώρα για να γίνει ψηφιακό, θέλεις να το κάνεις κβάντιση; Δεν κατάλαβα για ποιό λόγο.
Υ.Γ. Κατά μια έννοια είναι ήδη ψηφιακό!


Title: Re: Matlab βοηθεια
Post by: Aurelius on March 28, 2008, 13:54:58 pm
Προφανως και δεν ειναι στην πραγματικοτητα αναλογικο, απλα θελει να δειγματοληπτησει καποια απο αυτα τα δειγματα, που υποτιθεται οτι ειναι το αναλογικο σημα.


Title: Re: Matlab βοηθεια
Post by: arkas on March 28, 2008, 15:27:50 pm
Ναι οντως,λαθος διατυπωση.Το εψαξα λιγο,αν χρειαστει θα επανελθω.

Ευχαριστω παντως!


Title: deleted
Post by: BOBoMASTORAS on March 28, 2008, 16:00:39 pm
deleted


Title: Ε ρε να...
Post by: Nessa NetMonster on April 06, 2008, 17:22:04 pm
Πριν λίγο ανακάλυψα έναν από τους λόγους (ίσως και το μοναδικό) που οι εργασίες στη γραφική μου έβγαζαν παράλογα αποτελέσματα...

Κάποιος εξυπνάκιας από αυτούς που φτιάχνανε το Matlab την είδε "κάπως" >:( και έκανε να μη μπορείς να αλλάξεις τη μεταβλητή της for μέσα στη for! ^banghead^

Τώρα άμα αρχίσω να βρίζω το σόι του θα φταίω; :angry4:

Σε όλες τις γλώσσες προγραμματισμού που ξέρω, του έλεγες for το i από εδώ μέχρι εκεί με βήμα τάδε, και μπορούσες μετά μέσα στο βρόχο μέσα σε μια if πχ αν αυγά==μελάτα να του πεις i=τάδε+1 για να τερματιστεί η for μια ώρα αρχύτερα... εδώ όμως όταν ξαναπάει η εκτέλεση στη for, το i θα ξαναπάρει την τιμή που είχε+βήμα!

Και μου αρέσει που σου βγάζει warning όταν αλλάζεις τη μεταβλητή, αλλά δε σου λέει ότι μετά θα χαθεί η τιμή που της έδωσες!

Προσέχετε μην την πατήσετε κι εσείς... ::)


Title: Re: Matlab βοηθεια
Post by: Optima on May 20, 2008, 20:06:06 pm
βασικά παιδιά μήπως ξέρετε πώς γίνεται η σύγκριση στο matlab? εννοώ το <= (μικρότερο ή ίσο)
ξερω στην περίπτωση της ισότητας υπάρχει  το isequal αλλά όταν θέλω σε ένα if να έχω <= ή >= τί βαζω;

και επίσης όταν θέλω μετά το ίφ να έχω δύο συνθήκες που πρέπει να ενωθούν με το λογικό AND , βάζω απλώς AND ? η αλήθεια είναι ότι το αναγνωρίζει γιατί μου το βγάζει με μωβ χρώμα, αλλά είναι σωστό;



Title: Re: Matlab βοηθεια
Post by: emmanuel on May 20, 2008, 20:15:01 pm
βασικά παιδιά μήπως ξέρετε πώς γίνεται η σύγκριση στο matlab? εννοώ το <= (μικρότερο ή ίσο)
ξερω στην περίπτωση της ισότητας υπάρχει  το isequal αλλά όταν θέλω σε ένα if να έχω <= ή >= τί βαζω;

χωρις να είναι η καλύτερη λύση,αλλά μια μπακάλικη, αυτό που είχα κάνει εγώ κάποτε είναι

if     F(i)<-40
       F(i)=-40


Title: Re: Matlab βοηθεια
Post by: kinezos on May 20, 2008, 20:16:35 pm
Ισχύουν οι τελεστές ==, <=, >=, ~= και & αντί AND.


edit: Το ~= είναι το "not equal", γράψε "help ne" για λεπτομέρειες


Title: Re: Matlab βοηθεια
Post by: Optima on May 20, 2008, 20:28:00 pm
thanx both of u!   :)


και κάτι τελευταίο (γιατί έχω βαρεθεί 2 μέρες να διαβάζω τα απρόσωπα manuals ::))  σ'ενα m-file θέλω να ορίσω μια συνάρτηση πολλαπλού τύπου και γι αυτό χρησιμοποιώ if. στο τέλος βάζω ένα end  απλώς και πάντα μου βγάζει ότι "the sentence is incomplete"  τίς πταίει;  :???:


Title: Re: Matlab βοηθεια
Post by: Γιώργος on May 20, 2008, 20:28:47 pm
Το end της συνάρτησης το 'χεις βάλει;


Title: Re: Matlab βοηθεια
Post by: Optima on May 20, 2008, 20:32:33 pm
Το end της συνάρτησης το 'χεις βάλει;
όχι..ευχαριστώ τώρα είναι εντάξει :)


Title: Re: Matlab βοηθεια
Post by: fugiFOX on May 21, 2008, 09:15:36 am
βασικά παιδιά μήπως ξέρετε πώς γίνεται η σύγκριση στο matlab? εννοώ το <= (μικρότερο ή ίσο)
ξερω στην περίπτωση της ισότητας υπάρχει  το isequal αλλά όταν θέλω σε ένα if να έχω <= ή >= τί βαζω;

και επίσης όταν θέλω μετά το ίφ να έχω δύο συνθήκες που πρέπει να ενωθούν με το λογικό AND , βάζω απλώς AND ? η αλήθεια είναι ότι το αναγνωρίζει γιατί μου το βγάζει με μωβ χρώμα, αλλά είναι σωστό;



Απέφευγε τη χρήση if στις συγκρίσεις ανισότητας,
γιατί καθυστερεί την εκτέλεση.
Αντ'αυτού το matlab έχει ειδική συνάρτηση
ind=find(A<=value)
όπου A ο πίνακας των στοιχείων σου και value η τιμή με την οποία γίνεται η σύγκριση
ενώ ind είναι οι δείκτες του πίνακα των στοιχείων για τα οποία ισχύει η ανισότητα


Title: Re: Matlab βοηθεια
Post by: Optima on May 29, 2008, 13:29:55 pm
παιδιά μου βγάζει αυτό το μήνυμα:

error using ==> mtimes
Inner matrix dimensions must agree

καμμια ιδεα του τί ακριβώς συμβαίνει; :???:


Title: Re: Matlab βοηθεια
Post by: fugiFOX on May 29, 2008, 13:38:58 pm
κλασσικό μήνυμα.
Πόσταρε τον κώδικα που προκαλεί το λάθος


Title: Re: Matlab βοηθεια
Post by: Optima on May 29, 2008, 14:06:24 pm
%calculating the one-dimensioned minimum bispectrum
Sorry για την καθυστερηση, κατι παιζει με την συνδεση μου..
TO m-file μου:

function d0 = min_bis(L)

global m

for m=-L:L
    d0=(1/pi)*(abs(sin(pi*m/L))) + (1-((abs(m))/L))*(cos(pi*m/L))
end

if abs(m) >= L
    d0=0
end

end

και ο κωδικας στο command prompt:
global m
>> m=32;
>>
>> y=min_bis((0:.1:100)');
??? Error using ==> mtimes
Inner matrix dimensions must agree.

Error in ==> min_bis at 8
    d0=(1/pi)*(abs(sin(pi*m/L))) + (1-((abs(m))/L))*(cos(pi*m/L))


Title: Re: Matlab βοηθεια
Post by: fugiFOX on May 29, 2008, 15:21:37 pm
Λοιπόν το λάθος βρίσκεται εδώ.

K>> size((abs(sin(pi*m/L))))

ans =

           1        1001

K>> size( (1-((abs(m))/L)))

ans =

           1        1001

K>> size((cos(pi*m/L)))

ans =

           1        1001

Όπως βλέπεις προσπαθείς να πολλαπλασιάσεις δύο πίνακες με διαστάσεις
[1x1001]*[1x1001]
κατι που προφανώς δεν γίνεται γιατί δεν ταιριάζουν οι διαστάσεις.

Εάν θες πολλαπλασιασμό πινάκων θα πρέπει να το κάνεις
[1x1001]*[1001χ1]
με άλλα λόγια θες τον αναστροφο του τελευταίου, δηλαδή ο κώδικάς σου θα είναι

d0=(1/pi)*(abs(sin(pi*m/L))) + (1-((abs(m))/L))*(cos(pi*m/L))'

(πρόσεξε την απόστροφο στο τέλος της γραμμής).

Υποπτεύομαι όμως ότι δεν θες πολλαπλασιασμό πινάκων
αλλά στοιχείο με στοιχείο.
Σε αυτή την περίπτωση θα αντικαταστήσεις το * με .*


Title: Re: Matlab βοηθεια
Post by: Optima on May 29, 2008, 16:00:53 pm
Αυτο το Κ >> size(η συναρτηση) είναι έτσι σαν έκφραση γιατί εγώ όταν το βάζω στο command prompt:


K>>size(abs(sin(pi*m/L)))
??? K>>size(abs(sin(pi*m/L)))
      |
Error: Missing variable or function.

>> size(abs(sin(pi*m/L)))

ans =

     1     1       %>γιατι αυτο το αποτελεσμα?

Πάντως όπως κ να χει καταλαβα τί λες -όντως στοιχείο με στοιχείο θέλω και βαζω το .* αναμεσα στους δυο τελευταιους ορους, αλλα αυτο που με προβληματιζει είναι ότι μου βγαζει μοναδιάιο πίνακα στο αποτελεσμα....αρα πάλι κάνω κάτι λάθος...δεν μπορει να ειναι ολα 1... :???:

thanx παντως! :)



Title: Re: Matlab βοηθεια
Post by: fugiFOX on May 29, 2008, 16:32:27 pm
Αυτο το Κ >> size(η συναρτηση) είναι έτσι σαν έκφραση γιατί εγώ όταν το βάζω στο command prompt:


K>>size(abs(sin(pi*m/L)))
??? K>>size(abs(sin(pi*m/L)))
      |
Error: Missing variable or function.

>> size(abs(sin(pi*m/L)))

εγώ το έγραψα στη διάρκεια του debugging όπου ο πίνακας είναι ορισμένος
για αυτό και το εμφανισε.

Για να καταλάβεις τι εννοώ και το τι θες εσύ τελικά να κάνεις δες τη διαφορά μεταξύ
των παρακάτω εντολών.

>> a=[1 2 3]

a =

     1     2     3

>> b=[4 5 6]

b =

     4     5     6

>> a*b
??? Error using ==> mtimes
Inner matrix dimensions must agree.

>> a*b'

ans =

    32

>> a'*b

ans =

     4     5     6
     8    10    12
    12    15    18

>> a.*b

ans =

     4    10    18


Title: Re: Matlab βοηθεια
Post by: Krono on June 01, 2008, 22:32:26 pm
     Βασικά το πρόβλημα δεν είναι στην παράσταση. Και εκεί υπάρχει πρόβλημα αλλά... Το for loop δεν λειτουργεί έτσι όπως είναι. Το L είναι διάνυσμα και δεν μπορεί να λειρουτγήσει! Ίσως και λέω ίσως, να υπήρχε μια πιθανότητα να λειτουργήσει αν το πρώτο στοιχείο του L δεν ήταν μηδέν, αφού το μέτρημα από -0 έως +0 προφανώς θα εκτελεστεί μόνο μια φορά. Επίσης το if με το διάνυσμα επίσης δε νομίζω ότι κάνει κάτι όταν συγκρίνεται αριθμός με διάνυσμα. Εκτός αν το matlab έχει αυτοματισμούς που δεν γνωρίζω.
     Προσοχή με τα διανυσματα, καλύτερα απλά και ξεκάθαρα παρά τόσο δυσνόητα και περίπλοκα.


Title: Re: Matlab βοηθεια
Post by: Nessa NetMonster on June 02, 2008, 22:25:46 pm
Στην τελευταία εργασία που έχουμε στη Γραφική με Η/Υ πρέπει να κάνουμε ένα figure με τρία subplots και να το εγγράψουμε σε ταινία avi. Με ποιον τρόπο θα κάνω να εγγραφεί στο frame ολόκληρο το figure, και όχι μόνο το subplot που επέλεξα τελευταία φορά;


Title: Re: Matlab βοηθεια
Post by: Ianna on August 19, 2008, 23:02:00 pm
Μία βοήθεια την χρειάζομαι κι εγώ!Γνωρίζει κανείς την steps() ??????Ψάχνω στην βοήθεια του ματλαμπ και ούτε αυτό δείχνει να την γνωρίζει :P Αν ναι θα ήμουν ευγνώμων....έχω κολλήσει εδω και μία ωρα............... :-\


Title: Απ: Matlab βοηθεια
Post by: svistos on August 19, 2008, 23:56:33 pm
Μάλλον ψαχνεις την step()


Title: Re: Matlab βοηθεια
Post by: Ianna on August 20, 2008, 00:24:11 am
Την steps() ψάχνω...είναι σε ένα πρόγραμμα και δεν μπορω να καταλαβω πως την χρησιμοποιεί και λειτουργεί αφου δεν υπάρχει καν στο ματλαμπ(βοήθεια).


Title: Re: Matlab βοηθεια
Post by: nbourgis on August 20, 2008, 00:28:00 am

Μπορει να την εχει φτιαξει καποιος και να την καλει μεσα στο κυριο προγραμμα.

Καπου πρεπει να υπαρχει ενα αρχειο steps.m, αλλιως καληνυχτα.


Title: Re: Matlab βοηθεια
Post by: fugiFOX on August 21, 2008, 15:21:56 pm
Ψάξε και στο το site ths mathworks έχει ένα section για
user defined συναρτήσεις


Title: Re: Matlab βοηθεια
Post by: iliana on September 03, 2008, 20:47:03 pm
Παιδια help!
Εχω μια ερωτηση...θελω στη γραφικη παρασταση του plot,
"να σχεδιαστει ο αξονας y αναποδα, δλδ να ξεκινα απο 0 και να πηγαινει προς τα κατω και να αυξανεται θετικα".
Πως μπορω να το κανω?Βρηκα ενα τροπο να το κανω γραφικα, απο το plot browser στην επιλογη axes, που απλα τα κανει να φαινονται αναποδα για να ξεγελιεται το ματι,αλλα δεν μπορω να δουλεψω ετσι!
Μπορει να ακουγεται ευκολο, αλλα δεν εχω καθολου χρονο και εχω κολλησει τωρα...
Θελω να το ορισω απο την εντολη.Καμια βοηθεια?plzzzz!


Edit: Ευρηκα...Τελικα αν εχεις νευρα δεν μπορεις να κανεις τιποτα σωστο.... >:(


Title: Re: Matlab βοηθεια
Post by: ikoufis on September 04, 2008, 07:04:47 am
Pes kai se emas pws ginetai!Ti sxediazeis?Suntelesth anaklashs se grammh metaforas? :P


Title: Re: Matlab βοηθεια
Post by: pmousoul on September 04, 2008, 18:14:52 pm

Παίδες.. γιατί μπορεί να μου βγάζει την επιφάνεια μαύρη και δεν την χρωματίζει.. :-\


Title: Re: Matlab βοηθεια
Post by: pmousoul on September 04, 2008, 18:27:52 pm

Παίδες.. γιατί μπορεί να μου βγάζει την επιφάνεια μαύρη και δεν την χρωματίζει.. :-\

To βρήκα.. πολλά μηδενικά και μικρή επιφάνεια υποστήριξης...


Title: Re: Matlab βοηθεια
Post by: Γιώργος on September 04, 2008, 18:29:42 pm

Παίδες.. γιατί μπορεί να μου βγάζει την επιφάνεια μαύρη και δεν την χρωματίζει.. :-\
Χρησιμοποίησες την meshgrid και surf, eh? Χρωματισμένη είναι, απλά έχεις βάλει τόσο "μικρό" βήμα που τα μαύρα τετραγωνάκια επικαλύπτονται. :)


Βάλε μικρότερο "βήμα" και θα δεις. ;)
(πώς λέμε "βάλε Ultrex και θα δεις;" :P)


Title: Re: Matlab βοηθεια
Post by: pmousoul on September 04, 2008, 18:41:58 pm

Κι εγώ που νόμιζα ότι είχα μεγάλο και συνεχώς το ελάττωνα για να δω φως... ::)

Πάω να δοκιμάσω και επανέρχομαι!

Σ' ευχαριστώ Γιώργο. :)


Title: Re: Matlab βοηθεια
Post by: pmousoul on September 04, 2008, 18:56:05 pm

Μεγάλωσα το βήμα και έγινε καλύτερο.. αλλά η εφαρμογή είναι τέτοια που δεν με αφήνει να το μεγαλώσω πολύ..

Έχω τρία πεδία ορισμού.. [-90,90]x[-5,5]x[0,3]... :(


Title: Re: Matlab βοηθεια
Post by: mendelita on September 06, 2008, 14:56:34 pm

Υπάρχει κάποια συνάρτηση που να κάνει time delay? Να καθυστερεί δηλαδή την εκτέλεση του κώδικα όσα δευτερόλεπτα θέλεις.



Title: Re: Matlab βοηθεια
Post by: pmousoul on September 06, 2008, 15:21:54 pm

Υπάρχει κάποια συνάρτηση που να κάνει time delay? Να καθυστερεί δηλαδή την εκτέλεση του κώδικα όσα δευτερόλεπτα θέλεις.



http://www.mathworks.com/access/helpdesk/help/techdoc/index.html?/access/helpdesk/help/techdoc/ref/pause.html&http://www.google.gr/search?hl=el&q=matlab+pause&btnG=%CE%91%CE%BD%CE%B1%CE%B6%CE%AE%CF%84%CE%B7%CF%83%CE%B7+Google&meta=


Title: Re: Matlab βοηθεια
Post by: Netgull on September 06, 2008, 15:27:44 pm
pause(sec)


Title: Re: Matlab βοηθεια
Post by: mendelita on September 06, 2008, 15:30:22 pm

Ωωωω ευχαριστώ πολύ και τους δύο!!! ^hello^

Το pause ήταν το μόνο που δεν έψαξα.. :P
Επίσης, βρήκα και τα timer objects τα οποία είναι λίγο πολύπλοκα...



Title: Re: Matlab βοηθεια
Post by: mendelita on September 22, 2008, 23:06:50 pm

Πώς μπορώ να απεικονίσω το φασματικό περιεχόμενο ενός σήματος συναρτήσει του χρόνου? 
Πρέπει να είναι πολύ απλό αλλά αυτή τη στιγμή έχω μπλοκάρει.. :(


Title: Re: Matlab βοηθεια
Post by: Γιώργος on September 22, 2008, 23:32:59 pm
Φασματικό περιεχόμενο συναρτήσει του χρόνου; Αφού δεν δουλεύεις στο χρόνο. :S
Φασματικό περιεχόμενο δεν είναι το Χ(jω);


Title: Re: Matlab βοηθεια
Post by: mendelita on September 22, 2008, 23:36:53 pm

Είναι ακουστικό σήμα και θέλω να δω ποιες συχνότητες περιέχει αλλά θέλω να τις δω στη σειρά που ακούγονται δηλαδή συναρτήσει του χρόνου.. Δεν γίνεται?


Title: Re: Matlab βοηθεια
Post by: Γιώργος on September 22, 2008, 23:42:16 pm
Ahm.... μήπως βάση του "συστολή στο χρόνο είναι διαστολή στη συχνότητα" βγάλεις κάτι;

Δηλαδή οι μεγάλες συχνότητες ακούγονται πρώτες και ύστερα οι βραδύτερες;
Το ποιες συχνότητες περιέχει βγαίνει από το fft του, σωστά; Εκεί που εμφανίζει "κορυφούλες", αν θυμάμαι καλά (αν όχι, διόρθωσέ με).

Αυτές που ακούγονται πρώτες θα είναι I guess αυτές που έχουν υψηλή συχνότητα.


Μπορεί να λέω και βλακείες. :-\


Title: Re: Matlab βοηθεια
Post by: Γιώργος on September 22, 2008, 23:43:34 pm
Επίσης - με ένα γρήγορο search - δες αυτό (http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=14951&objectType=file). (Δεν ξέρω αν αυτό θες πράγματι)



//edit: κι εδώ (http://cvsp.cs.ntua.gr/courses/patrec/OnlineSpeechDemos/speechDemo_2004_Part1.html)


Title: Re: Matlab βοηθεια
Post by: pmousoul on September 22, 2008, 23:44:41 pm
Ahm.... μήπως βάση του "συστολή στο χρόνο είναι διαστολή στη συχνότητα" βγάλεις κάτι;

Δηλαδή οι μεγάλες συχνότητες ακούγονται πρώτες και ύστερα οι βραδύτερες;
Το ποιες συχνότητες περιέχει βγαίνει από το fft του, σωστά; Εκεί που εμφανίζει "κορυφούλες", αν θυμάμαι καλά (αν όχι, διόρθωσέ με).

Αυτές που ακούγονται πρώτες θα είναι I guess αυτές που έχουν υψηλή συχνότητα.


Μπορεί να λέω και βλακείες. :-\

Το συχνοτικό περιεχόμενο και η σειρά που ακούγονται (για πρώτη φορά ίσως!!) δεν έχουν καμία σχέση..


Title: Re: Matlab βοηθεια
Post by: Krono on September 22, 2008, 23:47:47 pm
Ahm.... μήπως βάση του "συστολή στο χρόνο είναι διαστολή στη συχνότητα" βγάλεις κάτι;

Δηλαδή οι μεγάλες συχνότητες ακούγονται πρώτες και ύστερα οι βραδύτερες;
Το ποιες συχνότητες περιέχει βγαίνει από το fft του, σωστά; Εκεί που εμφανίζει "κορυφούλες", αν θυμάμαι καλά (αν όχι, διόρθωσέ με).

Αυτές που ακούγονται πρώτες θα είναι I guess αυτές που έχουν υψηλή συχνότητα.


Μπορεί να λέω και βλακείες. :-\

Sorry που θα σου το πώ αλλά λάθος υποθέτεις!
Δεν υπάρχει κανένας άμεσος τρόπος να δείς ποιές συχνότητες παίζουν πρώτες. Ο μόνος τρόπος είναι να δείς ποιές παίζουν, με φίλτρο να κόψεις μια και να τη γυρίσεις ξανά στο χρόνο για να δείς σε ποιό σημείο παίζει. Να φανταστώ οτι κάνετε την εργασία ΨΕΣ ή μάλλον την fast ΨΕΣ Project... xixixi


Title: Re: Matlab βοηθεια
Post by: Γιώργος on September 22, 2008, 23:51:03 pm
Sorry που θα σου το πώ αλλά λάθος υποθέτεις!
Δεν υπάρχει κανένας άμεσος τρόπος να δείς ποιές συχνότητες παίζουν πρώτες.
Να 'σαι καλά, κι αναρωτιόμουν! Αυτό είχα στο νου μου, αλλά για να ζητά κάτι τέτοιο η εκφώνηση.... μάλλον θα υπήρχε.


Με φίλτρα που λες, δηλαδή ένα πράγμα σαν "αντίστροφη επαλληλία" λες; :P


Title: Re: Matlab βοηθεια
Post by: pmousoul on September 22, 2008, 23:52:45 pm

Εκτός εάν κόψεις τον ήχο σου σε κομμάτια ίσα με την μικρότερη συχνότητα (αντίστοιχη περίοδο) και με ένα loop ελέγχεις κάθε φορά το κάθε κομμάτι τι συχνότητες περιέχει..

Πρέπει να γίνεται κάπως αυτό.. αλλά..


Title: Re: Matlab βοηθεια
Post by: mendelita on September 22, 2008, 23:59:39 pm

Ο μόνος τρόπος είναι να δείς ποιές παίζουν, με φίλτρο να κόψεις μια και να τη γυρίσεις ξανά στο χρόνο για να δείς σε ποιό σημείο παίζει. Να φανταστώ οτι κάνετε την εργασία ΨΕΣ ή μάλλον την fast ΨΕΣ Project... xixixi

Νιι.. ::) Απλά βαριέμαι να κάνω αυτή τη διαδικασία.. :P
Πάντως Γιώργο το δεύτερο λινκ σου έχει πράγματα.. Αυτή η spectrogram κάτι πρέπει να κάνει. :)


Title: Re: Matlab βοηθεια
Post by: kinezos on September 23, 2008, 00:00:53 am
Αν κατάλαβα καλά τι ζητάς, πρέπει να κόψεις το σήμα σε διαδοχικά τμήματα, και στη συνέχεια να εφαρμόσεις μετασχηματισμό Fourier σε κάθε ένα από αυτά. Αυτό στο matlab γίνεται αυτόματα με την εντολή specgram.


Title: Re: Matlab βοηθεια
Post by: pmousoul on September 23, 2008, 00:03:20 am
Αν κατάλαβα καλά τι ζητάς, πρέπει να κόψεις το σήμα σε διαδοχικά τμήματα, και στη συνέχεια να εφαρμόσεις μετασχηματισμό Fourier σε κάθε ένα από αυτά. Αυτό στο matlab γίνεται αυτόματα με την εντολή specgram.

Yeap!!! ^hello^

Για να το λέει ο κινέζος πάει να πει πως είμαι σωστός.. και ας μην έχω ιδέα!!! 8)

Την ψώνισα!!! :P


Title: Re: Matlab βοηθεια
Post by: mendelita on September 23, 2008, 00:04:55 am

Ο μόνος τρόπος είναι να δείς ποιές παίζουν, με φίλτρο να κόψεις μια και να τη γυρίσεις ξανά στο χρόνο για να δείς σε ποιό σημείο παίζει. Να φανταστώ οτι κάνετε την εργασία ΨΕΣ ή μάλλον την fast ΨΕΣ Project... xixixi

Νιι.. ::) Απλά βαριέμαι να κάνω αυτή τη διαδικασία.. :P
Πάντως Γιώργο το δεύτερο λινκ σου έχει πράγματα.. Αυτή η spectrogram κάτι πρέπει να κάνει. :)

:P

Έχει γίνει πλέον spectrogram..


Title: Re: Matlab βοηθεια
Post by: Netgull on September 23, 2008, 00:15:03 am

Είναι ακουστικό σήμα και θέλω να δω ποιες συχνότητες περιέχει αλλά θέλω να τις δω στη σειρά που ακούγονται δηλαδή συναρτήσει του χρόνου.. Δεν γίνεται?
Θεωρητικά για να βρεις το φάσμα ενός σήματος χρειάζεσαι άπειρα δείγματα στο χρόνο.
Εάν πάρεις πεπερασμένο αριθμό δειγμάτων (DFT ουσιαστικά), στην πραγματικότητα υποθέτεις ότι πέρα από αυτό τον αριθμό δειγμάτων το σήμα σου επαναλαμβάνεται περιοδικά.
Επίσης, η ελάχιστη ανάλυση (resolution) που μπορείς να έχεις στη συχνότητα είναι τόσο μεγαλύτερη όσο μεγαλύτερος είναι ο αριθμός των δειγμάτων σε ένα συγκεκριμένο χρονικό διάστημα.
Τέλος, υποψιάζομαι, ότι όσο μεγαλύτερο είναι το χρονικό διάστημα στο οποίο κάνεις DFT, τόσο μικρότερες συχνότητες θα μπορείς να εντοπισεις αξιόπιστα.

Πρακτικά τώρα μιλώντας, για να δεις τις συχνότητες με τη σειρά που εμφανίζονται, ουσιαστικά θα ορίσεις ένα πεπερασμένο χρονικό διάστημα και σε αυτό πάνω θα κάνεις FFT. Αυτό θα σου δώσει κάποιες συχνότητες. Μετά θα μετακινήσεις αυτό το χρονικό διάστημα κατά ένα δείγμα, και θα ξανακάνεις FFT. Ουσιαστικά δηλαδή θα φτιάξεις έναν "κυλιόμενο" FFT.

Έχω αρκετό καιρό να ασχοληθώ με επεξεργασία σήματος, αλλά νομίζω η γενική ιδέα είναι αυτή. Κάποιος που τα έχει πιο πρόσφατα ας πει αν έχει κάποια άλλη ιδέα.

εδιτ: Όσο έγραφα δόθηκε μια απάντηση που επιβεβαιώνει την παραπάνω προσέγγιση. Η specgram λοιπόν μάλλον κάνει αυτό που θες.


Title: Re: Matlab βοηθεια
Post by: pmousoul on September 23, 2008, 00:50:22 am

Βρήκα κάτι.. σχετικό!

http://www.visualizationsoftware.com/gram.html


Title: Re: Matlab βοηθεια
Post by: mendelita on September 23, 2008, 00:58:17 am

Βρήκα κάτι.. σχετικό!

http://www.visualizationsoftware.com/gram.html

Είναι κορυφαίο!!!! Ευχαριστώ πολύυυ!! :) :) :)


Title: Re: Matlab βοηθεια
Post by: pmousoul on September 23, 2008, 00:59:28 am

Βρήκα κάτι.. σχετικό!

http://www.visualizationsoftware.com/gram.html

Είναι κορυφαίο!!!! Ευχαριστώ πολύυυ!! :) :) :)

My pleasure! ^hat^

^yue^


Title: Re: Matlab βοηθεια
Post by: (Stalin)^2 on September 23, 2008, 01:26:35 am

Βρήκα κάτι.. σχετικό!

http://www.visualizationsoftware.com/gram.html

Το είδα και στη λίστα, πολύ καλό.
Βέβαια εγώ άυριο δίνω μετρήσεις Ι και την Παρασκευή Τεχ.Μηχανική (που είναι πέρα για πέρα άσχετα και γτπ γενικώς, αλλά τέσπα...)


Title: Re: Matlab βοηθεια
Post by: pmousoul on September 23, 2008, 01:27:33 am

Βρήκα κάτι.. σχετικό!

http://www.visualizationsoftware.com/gram.html

Το είδα και στη λίστα, πολύ καλό.
Βέβαια εγώ άυριο δίνω μετρήσεις Ι και την Παρασκευή Τεχ.Μηχανική (που είναι πέρα για πέρα άσχετα και γτπ γενικώς, αλλά τέσπα...)

Άσε.. και 'γω δίνω σε λίγες ώρες ΕΕΤ Ι υποτίθεται!! ;D


Title: Re: Matlab βοηθεια
Post by: (Stalin)^2 on September 23, 2008, 01:30:40 am

Βρήκα κάτι.. σχετικό!

http://www.visualizationsoftware.com/gram.html

Το είδα και στη λίστα, πολύ καλό.
Βέβαια εγώ άυριο δίνω μετρήσεις Ι και την Παρασκευή Τεχ.Μηχανική (που είναι πέρα για πέρα άσχετα και γτπ γενικώς, αλλά τέσπα...)

Άσε.. και 'γω δίνω σε λίγες ώρες ΕΕΤ Ι υποτίθεται!! ;D

Όντως!! ;D Άντε καλή τύχη..Ας είναι ο Παπαγ. σε καλή μέρα..γιατί τελευταία οι ενεργειακές έγιναν αρκετά απαιτητικές... :-X


Title: Re: Matlab βοηθεια
Post by: pmousoul on September 23, 2008, 01:32:05 am

Βρήκα κάτι.. σχετικό!

http://www.visualizationsoftware.com/gram.html

Το είδα και στη λίστα, πολύ καλό.
Βέβαια εγώ άυριο δίνω μετρήσεις Ι και την Παρασκευή Τεχ.Μηχανική (που είναι πέρα για πέρα άσχετα και γτπ γενικώς, αλλά τέσπα...)

Άσε.. και 'γω δίνω σε λίγες ώρες ΕΕΤ Ι υποτίθεται!! ;D

Όντως!! ;D Άντε καλή τύχη..Ας είναι ο Παπαγ. σε καλή μέρα..γιατί τελευταία οι ενεργειακές έγιναν αρκετά απαιτητικές... :-X

Να 'σαι καλά.. :)


Υ.Γ. : Πολύ σπαμάραμε πάλι.. ας μας συγχωρέσουν οι μοδεράτορες! ^hat^
         Και ας μας διαγράψουν.. :)


Title: Re: Matlab βοηθεια
Post by: Matzika on October 20, 2008, 00:03:14 am
παιδια μια ερώτηση!ξερει κανεις πως μπορούμε απο ενα αρχειο που έχουμε εισάγει στο matlab  να εξαγουμε ένα συγκεκριμένο στοιχείο?
π.χ. αν το αρχείο έχει μεσα ταχύτητα,επιτάχυνση και χρόνο εγώ να εξάγω το χρόνο....
ας βοηθήσει κάποιος please....! :(


Title: Re: Matlab βοηθεια
Post by: Verminoz on October 20, 2008, 00:08:32 am
Όταν φορτώνεις αρχεία στο matlab με την εντολή load, υπό την προϋπόθεση ότι είναι σε σωστό φορμά, δηλαδή οι αριθμοί να χωρίζονται με κενά ή/και με γραμμές, τότε οι τιμές φορτώνονται σε πίνακα.

Πχ. αν το αρχείο σου έχει το εξής φορμά

Ταχυτητα          επιτάχυνση           χρόνος
5                            6                        3
55                          3                         34
 4                           34                       23
κοκ
...
...
ν γραμμές

Εδιτ:
Το matlab πάντως έχει και wizard με το οποίο φορτώνεις μόνο αυτό που θές κατευθείαν από το αρχείο στη μεταβλητή που θες από το File -> Import Data

φορτώνεις το αρχείο
load file.dat;

και δημιουργείται πίνακας file διαστάσεων [vx3]

Στη συνέχεια εξάγεις τα δεδομένα όπως συνηθίζεται στο matlab. Πχ για τον χρόνο της γραμμής κ

file(κ,3)

ή για όλους τους χρόνους

file(:,3)

Ελπίζω να είναι αυτό που ήθελες...  :-\


Title: Re: Matlab βοηθεια
Post by: Matzika on October 20, 2008, 00:14:43 am
οκ...ευχαριστώ για τη γρήγορη απαντηση!
κατι όμως πιο συγκεκριμένο...εγώ θέλω απο κείμενο να αποσπάσω το συγκεκριμένο αριθμό (π.χ. χρόνο)...
Εχει δλδ κείμενο 3 σειρών και κάπου μεσα λέει οτι t=2...αυτό πως το κάνω???


Title: Re: Matlab βοηθεια
Post by: Verminoz on October 20, 2008, 00:24:19 am
Θέλεις δηλαδή να του δίνεις ένα κειμενάκι και να εξάγει τους αριθμούς από μέσα. Και αν κατάλαβα καλά θέλεις η διαδικασία αυτή να γίνεται μέσα σε ένα script αυτοματοποιημένα και όχι χειροκίνητα?


Title: Re: Matlab βοηθεια
Post by: Matzika on October 20, 2008, 00:25:02 am
ναι ακριβως!!!


Title: Re: Matlab βοηθεια
Post by: Verminoz on October 20, 2008, 00:58:05 am
Με προβλημάτισες με αυτό και κοίταζα λίγο τις συναρτήσεις του matlab και το συμπέρασμα που έβγαλα είναι ότι αυτό που θες είναι αρκετά δύσκολο αν το κείμενο μέσα στο αρχείο είναι τυχαίο. Υπάρχουν πολλοί και εύκολοι τρόποι για να εξάγεις αριθμούς από κείμενο με συγκεκριμένο φορμά αλλά όχι το αντίστροφο...

Ο πιο εφικτός τρόπος που μπορώ να σκεφτώ είναι να ανοίξεις το αρχείο και να διαβάζεις έναν έναν τους χαρακτήρες του μέχρι να συναντήσεις το t πχ και στη συνέχεια να διαβάζεις τον αριθμό. Η συναρτήσεις για να γίνει αυτό είναι fopen,fread,fclose και συναφείς αλλά αν θέλεις να δουλέψει γενικά και για οποιοδήποτε κείμενο είναι πολύ δύσκολο.

Αν ξέρει κανένας καλύτερο τρόπο...


Title: Re: Matlab βοηθεια
Post by: pmousoul on October 20, 2008, 01:04:32 am

Μπορεί να ελέγχει εάν οι χαρακτήρες που διαβάζει είναι αριθμοί (εύρος κωδικών ASCII) και όταν συναντά κάποιον που να είναι στο διάστημα των αριθμών να τον τυπώνει.. εάν διαβάζει έναν αριθμό και ο επόμενος χαρακτήρας δεν είναι αριθμός να αφήνει διάστημα.. κάτι τέτοιο.. :)


Title: Re: Matlab βοηθεια
Post by: pmousoul on October 20, 2008, 01:09:53 am

Βρήκα κάτι..

http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=17770&objectType=file


Title: Re: Matlab βοηθεια
Post by: Optima on February 02, 2009, 16:31:01 pm
Παιδια να σας ρωτησω κατι:

έχω δημιουργήσει ενα vector με 601 στήλες με συγκεκριμένες τιμές μέσα με την εντολή linspace. Η εντολή αυτή όμως, επιστρέφει σα μεταβλητή δηλαδη  w= linspace(a,b,n)

εγω θελω όμως αυτές τις τιμές να τις βάλω μετά σε ένα for loop και να γινουν δεικτες για εναν πινακα.

for k=1:601
frequencies(k)=w;
end

ετσι δε γινεται προφανως, δεν εχουν ιδιες διαστασεις - πως θα το κανω καθε τιμη  στηλης της μεταβλητης w να παει στον πινακα k?

παιζει να ναι πολυ ευκολο, τωρα κολλησα λιγο


Title: Re: Matlab βοηθεια
Post by: nbourgis on February 02, 2009, 16:51:23 pm
Προφανως οι δεικτες σου πρεπει να ειναι ακεραιοι >= 1

Αν καταλαβαινω καλα...
εχεις συχνοτητες μεσα στο vector σου ομοιομορφα κατανεμημενες.

Αρα δεν θες φορ λουπ αλλα

frequencies=linspace(starting frequency,ending frequency,number of discrete frequencies);


Title: Re: Matlab βοηθεια
Post by: Optima on February 02, 2009, 17:24:21 pm
ναι, αυτο που λες ειναι το w που εγραψα παραπανω, a=starting frequency, b=ending frequenct, n ενδιαμεσα βηματα

Βασικα, χρειαζομουν μετα ενα loop για 601 φορες με βημα τη διαφορα των τιμων που προκυπτουν απο τις συχνοτητες(επειδη τα νουμερα ειναι δυσκολα) - ενταξει τελικα ετρεξα μια φορα το lispace, ειδα τα αποτελεσματα που μου βγαλε και το βαλα χειροκινητα.... απλως ελεγα μηπως  γινοταν καπως αλλιως


 μπορει κ να μην το εξηγω καλα ειναι αληθεια, θενκς παντως!


Title: Re: Matlab βοηθεια
Post by: fugiFOX on February 05, 2009, 12:37:46 pm

Βασικα, χρειαζομουν μετα ενα loop για 601 φορες με βημα τη διαφορα των τιμων που προκυπτουν απο τις συχνοτητες(επειδη τα νουμερα ειναι δυσκολα)

perhaps?

for i=1:length(yourArray)
frequencies(i,1:length(w))=w;
end


Title: Re: Matlab βοηθεια
Post by: Optima on March 08, 2009, 14:05:05 pm
 παιδιά έχω δυό vectors 1x201, έστω Χ2 και DTFT3  που αντιπροσωπεύουν μετασχηματισμούς Fourier και θέλω το μέσο τετραγωνικό σφάλμα. Κανονικά δεν πρέπει να κάνω αυτό:

sqerror=(X2-DTFT).^2)
meansqerror=mean(sqerror)


Πού είναι το λάθος;Μου βγάζει Attempt to execute SCRIPT DTFT as a function ..


Title: Re: Matlab βοηθεια
Post by: mendelita on March 08, 2009, 14:10:31 pm

Καταρχήν, αν ο κώδικας που βάζεις στο matlab είναι αυτός που έγραψες εδώ, σου λείπει μια παρένθεση στην πρώτη γραμμή και επίσης γράφεις DTFT ενώ πριν λες για DTFT3...



Title: Re: Matlab βοηθεια
Post by: nbourgis on March 08, 2009, 14:14:03 pm

Εχεις ονομασει το m file DTFT?

kARA lOl


Title: Re: Matlab βοηθεια
Post by: Optima on March 08, 2009, 14:29:54 pm
αυτο το 3 ηταν η διαφορα - οντως δεν πρεπει να δινω παρομοια ονοματα στο  mfile να μετα μου ξεφευγουν στο τσεκαρισμα!θενκς



Title: Re: Matlab βοηθεια
Post by: stefos on March 23, 2009, 21:10:02 pm
Παιδιά, sorry αν η ερώτηση μου είναι χαζή αλλά μήπως υπάρχει καμια συνάρτηση υπολογισμού ακροτάτων ή μόνο έμμεσα υπολογίζονται;


Title: Re: Matlab βοηθεια
Post by: fugiFOX on March 26, 2009, 14:56:11 pm
Το θες αριθμητικά ή συμβολικά;


Title: Re: Matlab βοηθεια
Post by: Nessa NetMonster on March 29, 2009, 19:46:24 pm
Πώς υπολογίζουμε το συνολικό μέγεθος ενός πίνακα σε bits; Ειδικά αν είναι cell array :-[


Title: Re: Matlab βοηθεια
Post by: Aurelius on March 29, 2009, 20:31:00 pm
Εχεις την μεταβλητη σου a.

Γραφεις
b = whos('a') ;

Μετα, με b.bytes σου βγαζει τον αριθμο των bytes, αρα επι 8.


Title: Re: Matlab βοηθεια
Post by: Nessa NetMonster on March 29, 2009, 20:33:26 pm
Ευχαριστώ Aurelius! :)


Title: Re: Matlab βοηθεια
Post by: Aurelius on March 29, 2009, 21:04:28 pm
παρακαλω :)


Title: Re: Matlab βοηθεια
Post by: stefos on April 09, 2009, 11:59:17 am
Υπάρχει κανένας τρόπος να καταχωρούνται οι τιμές που επιστρέφονται από μια συνάρτηση σε πίνακα;


Title: Re: Matlab βοηθεια
Post by: Aurelius on April 09, 2009, 13:41:42 pm
Υπάρχει κανένας τρόπος να καταχωρούνται οι τιμές που επιστρέφονται από μια συνάρτηση σε πίνακα;


Δωσε ενα παραδειγμα


Title: Re: Matlab βοηθεια
Post by: stefos on April 09, 2009, 14:43:13 pm
Υπάρχει κανένας τρόπος να καταχωρούνται οι τιμές που επιστρέφονται από μια συνάρτηση σε πίνακα;


Δωσε ενα παραδειγμα

Εξάγονται οι τιμές κ μεταβλητών(ορισμάτων εξόδου) σε κάθε μια από τις n επαναλήψεις του αλγορίθμου(συνάρτησης) και εγώ θέλω να εισάγω σε κάθε κελί ενός πίνακα μια από τις n τιμές για την κάθε μεταβλητή.

Έχω περιπου..
[a,b,c]=function_name(...)
και η συνάρτηση εκτυπώνει n φορές την εκάστοτε τιμή των a,b,c.
και θέλω από έναν πίνακα γεμάτο με τις n τιμές που προκύπτουν για τα a,b,c.
Γίνεται;


Title: Re: Matlab βοηθεια
Post by: mendelita on April 09, 2009, 14:48:42 pm

Έστω ότι καλείς την συνάρτησή σου μέσα σε ένα for loop. Και έχεις τα ορίσματα εξόδου a b c και θέλεις να τα αποθηκεύεις στους πίνακες A,B,C αντίστοιχα.
Θα γίνει ως εξής:

Πρώτα αρχικοποιείς τους πίνακες
A=[];
B=[];
C=[];

και μετά

for i=1:n

[a b c]=function_name(...);
A = [A a];
B = [B b];
C = [C c];

end

Edit: Είδα το edit σου και άλλαξα το όνομα της συνάρτησης :P


Title: Re: Matlab βοηθεια
Post by: stefos on April 09, 2009, 14:53:43 pm
Αν δεν ξέρω εκ των προτέρων τον αριθμό των στοιχείων του πίνακα; (Ο αριθμός των επαναλήψεων προκύπτει μέσα από τον αλγόριθμο-αναφέρομαι σε συνάρτηση βελτιστοποίησης-)
Είμαι πολύ απαιτητικός το ξέρω! :-[

Ευχαριστώ πολύ, όπως και να χει! :)





Title: Re: Matlab βοηθεια
Post by: mendelita on April 09, 2009, 15:04:19 pm

Εννοείς δηλαδή ότι η συνάρτηση είναι αναδρομική;


Title: Re: Matlab βοηθεια
Post by: stefos on April 09, 2009, 15:06:40 pm
εννοώ ότι η συνάρτηση κάνει αναζήτηση κάποιου σημείου και επαναλαμβάνεται μέχρις ότου βρεθεί το βελτιστο αποτέλεσμα.
Μπορώ δηλαδή εκ των προτέρων να υπολογίσω πόσες επαναλήψεις θα κάνει αλλά στο περίπου.


Title: Re: Matlab βοηθεια
Post by: mendelita on April 09, 2009, 15:12:13 pm

Αν μπορείς να βάλεις κάποια μεταβλητή να μετράει τις επαναλήψεις θα είσαι οκ..


Title: Re: Matlab βοηθεια
Post by: stefos on April 09, 2009, 15:13:35 pm
Nαι αλλά πως θα εξάγω αυτή τη μεταβλητή από τη συνάρτηση πριν να εξάγω τις μεταβλητές που θέλω να βάλω σε πίνακες;

ΟΚ νομίζω πως το βρήκα..
Ευχαριστώ! ;)


Title: Απ: Matlab βοηθεια
Post by: Tonia on April 09, 2009, 15:22:00 pm
γίνεται. εγώ σε αυτα που δουλεύω το κάνω συνέχεια, αλλά χρησιμοποιώ ode, και με αυτην είναι πολύ εύκολο.
όπως και να'χει όμως, δοκιμασε να κανεις μεταβλητές global π.χ. jj, pinakas
και μετα μια συναρτησουλα εξοδου, που το μονο που θα κανει ειναι να αυξανει το jj κατα ενα και προηγουμενως να αποθηκευει τις τιμες που θες στον πινακα.

π.χ.

Α_out(:,jj) = A(:)\

Ο Α θα ειναι global στην συναρτηση που τρεχει συνεχεια μεχρι να βρεθει η τιμη σου, και στην συναρτηση εξοδου.
Ο Α_out θα ειναι global στην συναρτηση εξοδου, και στην κυρια

ελπιζω να έγινα κατανοητη, αλλιώς θα προσπαθήσω το βράδυ να το εξηγήσω καλύτερα


Title: Re: Matlab βοηθεια
Post by: stefos on April 09, 2009, 15:27:46 pm
Βασικά εγώ σκέφτηκα ότι αφού έτσι κι αλλιώς η συνάρτηση επιστρέφει την τιμή για το πρώτο από τα ορίσματα εξόδου, να βάλω τον αριθμό επαναλήψεων ως πρώτο όρισμα και να την καλώ αποθηκευοντας την παράλληλα σε μια μεταβλητή.
Ύστερα κάνω αυτό που είπε η mendelita έχοντας ως n στην for τη μεταβλητή που αντιπροσωπεύει τον αριθμό των επαναλήψεων..
Θα δειξει..


Title: Re: Matlab βοηθεια
Post by: fugiFOX on April 10, 2009, 14:23:45 pm
Ποτε μην χρησιμοποιείται global.
Πάντα υπάρχει τρόπος να το κανεις και αλλιώς.
Οι global προκαλούν περισσότερα προβληματα από όσα λύνουν

Εάν καταλαβα καλά
αυτό που θες είναι να εκτελείς μια συνάρτηση Ν φορές
αλλά το Ν δεν είναι γνωστό
και θες σε κάθε επανάληψη να κρατάς τα αποτελέσματα.
Τι σε εμποδίζει να κάνεις κάθε φορά concatenate τους πίνακες
όπως πρότεινε η μενδελίτα;


Title: Re: Matlab βοηθεια
Post by: stefos on April 10, 2009, 20:28:01 pm
Λοιπόν θέλω να εξάγω τα αποτελέσματα ενός αλγορίθμου μέσα από ένα m-file, στην κονσόλα εντολών ο οποίος αλγόριθμος πραγματοποιείται n φορές χωρίς το n  να είναι γνωστό.
Το μόνο που κατάφερα είναι να αποθηκεύω μόνο το τελευταίο στοιχείο που προκύπτει από τον αλγόριθμο και στις n θέσεις του πίνακα. Χρησιμοποιώ τη μέθοδο της mendelita θέτοντας πιο πριν το n=function_name(...) (στην κλήση αυτή έχω μεταβάλλει τα ορίσματα εξόδου ώστε να επιστρέφεται μόνο το πλήθος των επαναληψεων που εκτελεί ο αλγόριθμος μέσα στη function_name().)

Μήπως υπάρχει και άλλος τρόπος να επιστρέφεται το πλήθος των loops(=μέγεθος πίνακα) πριν γεμίσω τον πίνακα;


Title: Re: Matlab βοηθεια
Post by: stefos on April 10, 2009, 20:59:18 pm
Einai aplo re paidia.Sundeeis ta psipsipsinia me ta psispsiloksyla kai vriskeis to kormi patriot tou MATLAB.

Ψηλέ αντι να κάνεις χαβαλέ δεν κοιτάς να βοηθήσεις?!!


Title: Re: Matlab βοηθεια
Post by: Netgull on April 10, 2009, 23:54:56 pm
Εξαρτάται από το πλήθος των επαναλήψεων που έχεις.
Για να κάνεις επαναληπτικό αλγόριθμο δεν χρειάζεται να ξέρεις το n εκ των προτέρων. Μπορείς να επεκτείνεις τη συνάρτηση για να επιστρέφει τα a,b,c και ένα flag το οποίο θα είναι πχ 1 συνεχώς και θα γίνεται 0 στην τελευταία επανάληψη του αλγορίθμου. Οπότε βάζεις τη συνάρτηση σε ένα while (flag!=0) A=[A a]; κοκ.
Ή εναλλακτικά βάζεις μια μεταβλητή j να μετράει τον αριθμό των επαναλήψεων και θέτεις A(j)=a.
Με το δεύτερο τρόπο εάν μπορείς να βάλεις ένα άνω όριο στον αριθμό των επαναλήψεων N που μπορείς να έχεις τότε είναι ακόμα καλύτερα γιατί μπορείς να αρχικοποιήσεις τον πίνακα Α σε πχ Α=zeros(1,N) και μετά να θέτεις A(j)=a. Αυτό το δεύτερο θα τρέχει πολύ πιο γρήγορα από το αν κάνεις δυναμική αύξηση του μεγέθους του πίνακα (όπως πχ με το A=[A a]).


Title: Re: Matlab βοηθεια
Post by: Witten on April 10, 2009, 23:59:27 pm
Λοιπόν έχω το εξής πρόβλημα.
Εκτελώ τις παρακάτω εντολές και μου βγάζει σφάλμα. :-\
Α=[1 2 3 1];
B=qammod(A,4);
Αν ξέρει κανείς ας με βοηθήσει.
Ευχαριστω.    :)


Title: Re: Matlab βοηθεια
Post by: Witten on April 11, 2009, 00:03:50 am
?? Error using ==> comm\private\ lQAMConst
Attempt to execute SCRIPT j as a function.

Error in ==> comm\private\squa qamconst at 71
    Const =  lQAMConst ;

Error in ==> qammod at 51
const = squa qamconst(M,ini_phase);


To παραπανω βγαζει


Title: Re: Matlab βοηθεια
Post by: Tonia on April 11, 2009, 09:52:46 am
Ποτε μην χρησιμοποιείται global.
Πάντα υπάρχει τρόπος να το κανεις και αλλιώς.
Οι global προκαλούν περισσότερα προβληματα από όσα λύνουν

κάτω τα χέρια από τις global, είναι οι αγαπημένες μου ^nono^


Title: Re: Matlab βοηθεια
Post by: fugiFOX on April 11, 2009, 18:29:16 pm
Λοιπόν έχω το εξής πρόβλημα.
Εκτελώ τις παρακάτω εντολές και μου βγάζει σφάλμα. :-\
Α=[1 2 3 1];
B=qammod(A,4);
Αν ξέρει κανείς ας με βοηθήσει.
Ευχαριστω.    :)

Σε εμένα πάντως έτρεξε κανονικά
Εκανα απλώς copypaste τις εντολές σου


Title: Re: Matlab βοηθεια
Post by: Mendoza on May 05, 2009, 12:14:37 pm
Στην αντιστρεψιμότητα μεγάλων πινάκων συνέχεια μου βγάζει:

Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND =

Ξέρει κανείς πως διορθώνεται πώς διορθώνεται ,υπάρχει διαφορετικός τρόπος να γίνει η αντιστρεψιμότητα χωρίς την inv()?



Title: Απ: Matlab βοηθεια
Post by: Tonia on May 05, 2009, 13:48:19 pm
αυτό σημαινει ρε συ, οτι ο πίνακας σου δεν ειναι ομαλος, μία από τις ορίζουσες του ειναι μηδεν. αρα τι διαίρεση να κανεις..

ψάξε μία μία τις υποορίζουσες του πίνακα σου και δες ποια είναι μηδεν. ίσως έχεις λάθος στον πίνακα


Title: Re: Matlab βοηθεια
Post by: Mendoza on May 05, 2009, 14:14:59 pm
Το πρόβλημα είναι ότι ο πίνακας δεν έχει στάνταρ τιμές..του βάζω εγώ τυχαίες  χ=randn(100,6)  αλλά κάθε φορά το ίδιο!


Title: Re: Matlab βοηθεια
Post by: fugiFOX on May 05, 2009, 15:48:26 pm
αυτό σημαινει ρε συ, οτι ο πίνακας σου δεν ειναι ομαλος, μία από τις ορίζουσες του ειναι μηδεν. αρα τι διαίρεση να κανεις..

ψάξε μία μία τις υποορίζουσες του πίνακα σου και δες ποια είναι μηδεν. ίσως έχεις λάθος στον πίνακα

δεν είναι απαραίτητο αυτό.
έχω την εντύπωση ότι απλά σε ειδοποιεί ότι η μέθοδος αντιστροφής περιέχει κάποιο (σημαντικό; ) σφάλμα


Title: Re: Matlab βοηθεια
Post by: mendelita on May 05, 2009, 16:14:49 pm
Το πρόβλημα είναι ότι ο πίνακας δεν έχει στάνταρ τιμές..του βάζω εγώ τυχαίες  χ=randn(100,6)  αλλά κάθε φορά το ίδιο!


Βασικά πώς αντιστρέφεις έναν πίνακα 100x6 ; :???:


Title: Απ: Matlab βοηθεια
Post by: Tonia on May 05, 2009, 16:28:24 pm
α, ναι βεβαια. δε γινεται.
υπαρχουν ομως οι ψευδοαντιστροφοι. μονο ετσι. ψαξε στην γραμμικη αλγεβρα, γιατι δε το εχω τωρα μπροστα μου. το βραδυ αν θες σου λεω τους τυπους.


Title: Re: Matlab βοηθεια
Post by: Mendoza on May 05, 2009, 17:05:43 pm
Το πρόβλημα είναι ότι ο πίνακας δεν έχει στάνταρ τιμές..του βάζω εγώ τυχαίες  χ=randn(100,6)  αλλά κάθε φορά το ίδιο!


Βασικά πώς αντιστρέφεις έναν πίνακα 100x6 ; :???:
ναι ok you got me :P   
παράδειγμα πήγα να φέρω αλλά αποτυχημένο,   randn(100,100) τότε..

α, ναι βεβαια. δε γινεται.
υπαρχουν ομως οι ψευδοαντιστροφοι. μονο ετσι. ψαξε στην γραμμικη αλγεβρα, γιατι δε το εχω τωρα μπροστα μου. το βραδυ αν θες σου λεω τους τυπους.
Οκ το βρήκα ευχαριστώ,χρησιμοποίησα το pinv(A) ,μου βγάζει τα ίδια ακριβώς αποτελέσματα με το inv(A) απλώς δεν μου γράφει warnings και δεν μου τη λέει πλέον :P..τώρα δεν ξέρω κατά πόσο είναι σωστό,αφού βγάζει τα ίδια αλλά τεσπα!


Title: Re: Matlab βοηθεια
Post by: fugiFOX on May 06, 2009, 13:24:06 pm
μπορείς να κάνεις και τα warnings off.


Title: Re: Matlab βοηθεια
Post by: mendelita on July 26, 2009, 18:17:50 pm

Υπάρχει τρόπος να βάλεις δύο ή περισσότερα datatips σε μία γραφική παράσταση;


Title: Re: Matlab βοηθεια
Post by: Krono on July 26, 2009, 19:09:20 pm
Δεξί click -> Create new Datatip


Title: Re: Matlab βοηθεια
Post by: mendelita on July 27, 2009, 14:10:23 pm
Δεξί click -> Create new Datatip

Αν είναι δυνατόν! Χθες αυτό έκανα αλλά για κάποιο λόγο δεν δούλευε!! :o
Τώρα μια χαρά.. :???:
Thanks.. :)


Title: Re: Matlab βοηθεια
Post by: Krono on July 27, 2009, 20:11:06 pm
Δεξί click -> Create new Datatip

Αν είναι δυνατόν! Χθες αυτό έκανα αλλά για κάποιο λόγο δεν δούλευε!! :o
Τώρα μια χαρά.. :???:
Thanks.. :)

     Νομίζω ότι αν δεν είναι πατημένο του κουμπί του datatip δεν βγαίνει αυτό που πρέπει με δεξί click! Κι εμένα με είχε τρελάνει μέχρι να το πάρω χαμπάρι!   :)


Title: Re: Matlab βοηθεια
Post by: Andreas_T on November 16, 2009, 22:54:34 pm
Code:
clear; 
t=[0 : 10^-8 : 9*10^-6];
u=26*(exp(-t*(10^5)/3.09)-exp(-t*(10^6)/0.3))*(1-exp(-t*(10^8)/2.17));
plot(t,u);

Code:
??? Error using ==> mtimes
Inner matrix dimensions must agree.

η λυση είναι να βαλω . (=dot) καπου σε δυναμεις? που?


Title: Re: Matlab βοηθεια
Post by: Γιώργος on November 16, 2009, 22:57:23 pm
u=26*(exp(-t*(10^5)/3.09)-exp(-t*(10^6)/0.3)).*(1-exp(-t*(10^8)/2.17));


Check this out. :)


Title: Re: Matlab βοηθεια
Post by: Andreas_T on November 16, 2009, 23:02:39 pm
u=26*(exp(-t*(10^5)/3.09)-exp(-t*(10^6)/0.3)).*(1-exp(-t*(10^8)/2.17));


Check this out. :)
thx!!!!!!!!!!!!!!!!!! :)





Title: Re: Matlab βοηθεια
Post by: Γιώργος on May 24, 2010, 17:41:30 pm
Έχω ένα διάνυσμα με κάποια στατιστικά από οργάνωση caches, πχ:
Code:
y = [1.0; 1.2; 0.8; 0.6];

Θέλω να φτιάξω κάτι σαν το ακόλουθο διάγραμμα, βάζοντας ουσιαστικά στον άξονα του χ strings. Οι αποστάσεις μεταξύ τους είναι ίσες, προφανώς δεν έχει νόημα η κλίμακα στον άξονα των x. Έχει κανείς ιδέα πώς μπορώ να το κάνω; Ευχαριστώ!


Title: Re: Matlab βοηθεια
Post by: Aurelius on May 24, 2010, 18:22:46 pm
topics = {'16x2', '16x4', '32x4', 32x8'} ;
set(gca,'XTick', 1 : numel(topics),'XTickLabel', topics);


Title: Re: Matlab βοηθεια
Post by: Γιώργος on May 24, 2010, 18:35:25 pm
Θενξ ρε μόρτη. :)


Title: Re: Matlab βοηθεια
Post by: Aurelius on May 24, 2010, 18:58:03 pm
Τπτ :)


Title: Re: Matlab βοηθεια
Post by: harris on June 14, 2010, 22:41:06 pm
παιδια εχω ενα σημα.πως μπορω να βρω την rms τιμη του;


Title: Re: Matlab βοηθεια
Post by: mendelita on June 14, 2010, 23:24:07 pm

y = sqrt(sum(u.*conj(u))/size(u,1));

?


Title: Re: Matlab βοηθεια
Post by: harris on June 14, 2010, 23:37:59 pm

y = sqrt(sum(u.*conj(u))/size(u,1));

?
??????????

μαλλον δεν ημουν σαφης.για simulink εννοω.τι μπλοκ διαγραμμα βαζω;επιπλεον στο scope πως μπορω να κλικαρω πανω στην κυματομορφη και να μου δειξει το ακριβες πλατος;


Title: Re: Matlab βοηθεια
Post by: mendelita on June 15, 2010, 11:05:25 am

Ε πες καλέ ότι εννοείς το simulink.. Άλλο το ένα, άλλο το άλλο! :D

Καταρχήν θα σου πρότεινα εκτός από το scope να συνδέσεις σε εκείνο το σημείο ένα μπλοκ "To Workspace" στο οποίο θα βάλεις ένα όνομα για τη μεταβλητή σου και το save format θα το ορίσεις ως structure with time. Οπότε αν η μεταβλητή σου είναι η y, τότε με ένα plot(y.time, y.signals.values) αφού τρέξεις το simulink θα έχεις ένα διάγραμμα στο οποίο μπορείς να δεις ό,τι θες.

Τώρα για την rms, αν ανοίξεις το library browser και γράψεις στο search τη λέξη rms θα σου βγάλει κάποια έτοιμα μπλοκ. Δες τις περιγραφές τους για να βρεις ποιο σε βολεύει.

:)


Title: Re: Matlab βοηθεια
Post by: ASDF_ on June 18, 2010, 22:36:37 pm
παιδιά έχω ένα πρόβλημα στο simulink
οταν παω να σώσω το μοντέλο μου βγάζει το εξης σφάλμα

The model 'kkkk' contains characters that cannot be encoded with the mode;'s character encoding. 'windows-1253' . Either:
1)change the character encoding setting of the model, by using: set_param('kkkk'.SavedCharacterEncoding'.windows-1253')
or
2) identify the characters that cannot be encoded and remove them from the model. The first unsupoprted character occurs on the line 23.byte offset 15 in the file (C;/ktl)

Το πρώτο το δοκίμασα και μου λέει οτι το ματλαβ δεν εχει τετοια εντολή

κανεις καμια ιδέα???


Title: Re: Matlab βοηθεια
Post by: pmousoul on June 18, 2010, 22:38:23 pm
εάν έχεις γράψει κάτι στα ελληνικά μέσα στο μοντέλο.. μάλλον εκεί είναι το πρόβλημα..

αλλά μπορεί να κάνω και λάθος! :P


υ.γ. : btw the solution is by mendelita.. :P


Title: Re: Matlab βοηθεια
Post by: ASDF_ on June 18, 2010, 22:45:27 pm
nai ontos
to problima einai oti sto creator exei to onoma mou sta ellinika
tora psaxnw pos to allazw auto


Title: Re: Matlab βοηθεια
Post by: ^^DaRk_HunTeR on August 07, 2010, 00:03:25 am
Λοιπον εχω το εξης προβλημα...

Εχω ενα αρχειο... .txt το οποιο εχει τρεις στηλες

1η στηλη= Χρονος σε μικροσεκ
2η στηλη= Τιμη μετοχης σε αυτο το χρονο
3η στηλη= Ογκος συναλλαγων σε αυτο το χρονο

και θελω να κανω ενα διαγραμμα ειτε στο ματλαμπ ειτε στο excel αλλα δεν μου βγαινει οπως θα ηθελα...

Απαντησεις για matlab καλο θα ηταν να ειναι κωδικας...

Για να καταλαβετε τι χρειαζομαι περιπου δειτε εδω
stock chart (http://finance.yahoo.com/echarts?s=IBM#chart1:symbol=ibm;range=1y;indicator=volume;charttype=line;crosshair=on;ohlcvalues=0;logscale=off;source=undefined)

Στο excel τα stock charts δεν μου κανουν γιατι δεν εχω τα δεδομενα που ζηταει αλλα δεν μ κανουν και για αλλους λογους, δοκιμασα με το line chart αλλα ειναι πολυ πυκνα τα δεδομενα και βγαινει οπως να ναι...

ΥΓ: Καλο θα ηταν να λαβετε υποψην σας πως τα δεδομενα θα ειναι παρα πολλα... δηλ. για 60sec εχω 2036 γραμμες στο excel και τρεις στηλες. Εγω ομως θελω να κανω διαγραμμα για 7 ωρες...


Title: Re: Matlab βοηθεια
Post by: portinos on March 03, 2011, 02:29:17 am
Λοιπόν έχω το εξής πρόβλημα! Κάνω load ένα αρχεία mat και μετά θέλω να χρησιμοποιήσω τα δεδομένα που έχει σαν ένα πίνακα πάνω στον οποίο θα εφαρμόζονται συναρτήσεις, θα γίνονται πράξεις κλπ αλλά δεν μπορώ να βρω με τίποτα πως γίνεται. Καμιά ιδέα κανείς?
Μπορεί να χαζή η απορία αλλά τέτοια ώρα δεν μπορώ να σκεφτώ λογικά ;)


Title: Re: Matlab βοηθεια
Post by: fugiFOX on March 03, 2011, 10:59:21 am
Δεν ξέρω αν υπεύθυνη είανι η ώρα αλλα εγώ δεν καταλαβα τίποτα από το τι θες να κάνεις.
Που κολλάς; Στο load? Στη διαχείριση /συγχώνευση πινάκων; (και πώς ειναι αυτοί)
Στα arguments των συναρτήσεων;
Αλλού;


Title: Re: Matlab βοηθεια
Post by: portinos on March 03, 2011, 11:15:00 am
Δεν ξέρω αν υπεύθυνη είανι η ώρα αλλα εγώ δεν καταλαβα τίποτα από το τι θες να κάνεις.
Που κολλάς; Στο load? Στη διαχείριση /συγχώνευση πινάκων; (και πώς ειναι αυτοί)
Στα arguments των συναρτήσεων;
Αλλού;
Καλημέρα κιόλας! Λοιπόν για να καταλάβεις: έχω ένα ερχείο mat που έχει μέσα 500 σταθερές. Θέλω πρώτα να τις εμφανίσω τις τιμές αυτές και μετά να μπουν στη συνάρτηση acos(ωt) σαν η γωνιακή συχνότητα ω και να πάρω σαν αποτέλεσμα τα διάφορα συνημίτονα


Title: Re: Matlab βοηθεια
Post by: Aurelius on March 03, 2011, 11:48:42 am
Γιατι δεν τα αποθηκευεις σαν πινανα και να περασεισ αυτον τον πινακα σαν ορισμα στην συναρτηση; Διαφορετικα κανε ενα for loop

dat = load('myfile.mat') ;

for i = 1 : numel(fieldnames(dat))
...
end


Title: Re: Matlab βοηθεια
Post by: fugiFOX on March 03, 2011, 13:27:36 pm
Πώς τα κατάφερες και έχεις 500 μεταβλητές;
Ξανασκέψου λίγο τον κώδικά σου στη βάση που γράφει ο Αυρελιους.


Title: Re: Matlab βοηθεια
Post by: portinos on March 03, 2011, 13:52:43 pm
OK ευχαριστώ και τους δύο!!!!  Με βοηθήσατε πάρα πολύ. Όσο για τις 500 μεταβλητές, είναι από μετρήσεις και γι' αυτό βγαίνουν τόσες πολλές


Title: Re: Matlab βοηθεια
Post by: fugiFOX on March 03, 2011, 14:50:41 pm
Δες τοτε πως θα κάνεις τον parser να μη δημιουργεί μεταβλητές αλλά πίνακα.
Δεν μπορείς να διαχειριστείς κώδικα με 500 μεταβλητές


Title: Re: Matlab βοηθεια
Post by: portinos on March 03, 2011, 15:20:56 pm
Δες τοτε πως θα κάνεις τον parser να μη δημιουργεί μεταβλητές αλλά πίνακα.
Δεν μπορείς να διαχειριστείς κώδικα με 500 μεταβλητές
Και πως θα το κάνω αυτό; Βασικά σε τρέλανα και σε ευχαριστώ που ασχολείσαι αλλά πρώτη φορά χειρίζομαι mat files και έχω μπερδευτεί αρκετά. Δοκιμάζω τώρα και αυτό που είπε ο Aurelius


Title: Re: Matlab βοηθεια
Post by: fugiFOX on March 03, 2011, 15:24:24 pm
Δεν υπάρχει πρόβλημα.

Δεν μπορώ όμως να σε βοηθήσω εάν δεν ξέρω τα δεδομένα σου.
Πόσταρε εδώ μερικές γραμμές από το αρχείο σου για να δουμε


Title: Re: Matlab βοηθεια
Post by: portinos on March 03, 2011, 16:00:14 pm
Λοιπόν αυτό είναι το δεύτερο mat file που έχω και είναι μεγαλύτερο από το άλλο. Κάνω αυτό:
Code:
c4=load('c4.mat')
for j=1:numel(c4)
    figure(4)
    stem(c4)
end
και όταν το τρέχω μου βγάζει αυτό
c4 =

    c4: [1152x1 double]
και μετά ένα σφάλμα:
??? Function 'real' is not defined for values of class 'struct'.

Error in ==> real at 15
  [varargout{1:nargout}] = builtin('real', varargin{:});

Error in ==> xychk at 42
    x = real(y); y = imag(y);

Error in ==> stem at 40
  [msg,x,y] = xychk(args{1:nargs},'plot');

Error in ==> tmima3 at 19
    stem(c4)

Τέλος όταν ανοίγω το c4 με το file/import data στο matlab μου βγάζει δεδομένα της μορφής
0.03271484375
-4.8828125E-4
-0.05908203125
-0.021484375
αυτά πρέπει να χρησιμοποιήσω βασικά, αλλά πως δεν μπορώ να καταλάβω


Title: Re: Matlab βοηθεια
Post by: fugiFOX on March 03, 2011, 17:34:05 pm
οι μεταβλητές σου μετά το load τη μορφ'η έχουν;


Title: Re: Matlab βοηθεια
Post by: megapixel on March 06, 2011, 17:17:21 pm
Πως γινεται να φτιαξω μια τετραγωινκη γραφικη παρασταση στο matlab?
με τη κλασικη μεθοδο plot(x,y) δε μου την κανει τετραγωνικη αλλά ενώνει τα σημεία μεταξυ τους


Title: Re: Matlab βοηθεια
Post by: Wade on March 06, 2011, 17:48:16 pm
Αν και δεν ξέρω αν κατάλαβα σωστά τι εννοείς τετραγωνική...  Έστω ότι έχεις τα διανύσματα x και y και θέλεις να κάνεις plot(x, y) τότε δοκίμασε αυτό (αλλάζοντας τα x και y με τα δικά σου στις πρώτες δύο γραμμές):

Code:
lx=length(x);
ly=length(y);
x1(1:2:lx*2-1)=x;
x1(2:2:lx*2)=x+1;
y1(2:2:ly*2)=y;
y1(1:2:ly*2-1)=y;
plot(x1, y1);

Αυτό εννοείς;


Title: Re: Matlab βοηθεια
Post by: megapixel on March 06, 2011, 18:02:28 pm
κατι πηγες να κανεις αλλα δε το πετυχες ακριβως.
Εσυ βγαζεις το 1 ενω εγω θελω το 2


Title: Re: Matlab βοηθεια
Post by: N3ikoN on March 06, 2011, 18:07:31 pm
κατι πηγες να κανεις αλλα δε το πετυχες ακριβως.
Εσυ βγαζεις το 1 ενω εγω θελω το 2

δε ξερω αν λεω μλκια , ομως δεν φαινεται σαν την παραγωγο αυτου?


Title: Re: Matlab βοηθεια
Post by: Wade on March 06, 2011, 18:16:58 pm
Για δοκίμασε αυτό:

Code:
lx=length(x);
ly=length(y);
x1(1:2:lx*2-1)=x;
xt=x(2:lx);
xt(lx)=2*x(lx)-x(lx-1);
x1(2:2:lx*2)=xt;
y1(2:2:ly*2)=y;
y1(1:2:ly*2-1)=y;
plot(x1, y1);


Title: Re: Matlab βοηθεια
Post by: megapixel on March 06, 2011, 18:30:39 pm
Ευχαριστω πολυ, τωρα εγινε

Μπορεις τωρα να μου επις πως θα εμφανιζω τις τιμες στους αξονες οπως δειχνω στο βελακι?


Title: Re: Matlab βοηθεια
Post by: megapixel on March 06, 2011, 18:40:06 pm
οκ το βρηκα, ευχαριστω και παλι


Title: Re: Matlab βοηθεια
Post by: Γιώργος on May 20, 2011, 14:00:27 pm
Γεια. Σειρά μου να χρειαστώ λίγο help. :P

Ψάχνω σχετικά με ... προβολές σημείων / σχημάτων σε επίπεδο. Συγκεκριμένα ψάχνω για ... κωνική προβολή, δηλαδή με βάση μιας κωνικής πηγής φωτός / κάμερας.

Οποιαδήποτε ιδέα καλοδεχούμενη. :)


[Παράλληλα σαφώς και ψάχνω και στο google για projections, αλλά αν κάποιος έχει ήδη ασχοληθεί, θα με βοηθούσε]


Title: Re: Matlab βοηθεια
Post by: fugiFOX on May 20, 2011, 15:21:01 pm
δεν ξερω αν βοηθά αλλά όταν πλοτάρεις μια επιφάνεια
με τη συνάρτηση surfc σου εμφανίζει και την προβολή της πάνω στο ΧΥ


Title: Re: Matlab βοηθεια
Post by: Γιώργος on May 20, 2011, 15:25:12 pm
δεν ξερω αν βοηθά αλλά όταν πλοτάρεις μια επιφάνεια
με τη συνάρτηση surfc σου εμφανίζει και την προβολή της πάνω στο ΧΥ


Ναι, ισχύει, ωστόσο πλοτάρει την ορθοκανονική προβολή της, ενώ εγώ θα ήθελα ένα perspective projection. Θενξ πάντως. :)


Title: Re: Matlab βοηθεια
Post by: dpa on May 21, 2011, 12:34:29 pm
δες και το παρακάτω λινκ,
http://www.mathworks.com/help/techdoc/visualize/f4-22650.html
υπάρχει η συνάρτηση
http://www.mathworks.com/help/techdoc/ref/camproj.html
με την οποία μπορείς να θέσεις εσύ τον τύπο προβολής που θέλεις.


Title: Re: Matlab βοηθεια
Post by: Γιώργος on May 21, 2011, 12:39:38 pm
δες και το παρακάτω λινκ,
http://www.mathworks.com/help/techdoc/visualize/f4-22650.html
υπάρχει η συνάρτηση
http://www.mathworks.com/help/techdoc/ref/camproj.html
με την οποία μπορείς να θέσεις εσύ τον τύπο προβολής που θέλεις.
Thank you, θα τα κοιτάξω (αν και νομίζω ότι έχω ξαναπέσει πανω τους).

Για την ιστορία, να πω ότι έπεσα και πριν λίγο στο viewmtx (http://www.mathworks.com/help/techdoc/ref/viewmtx.html), το οποίο φαίνεται ότι ίσως κάνει την δουλειά που θέλω (θα το κοιτάξω εκτενέστερα).


Title: Re: Matlab βοηθεια
Post by: Γιώργος on May 27, 2011, 14:33:46 pm
Έχει ασχοληθεί κανείς με τριγωνοποίηση; :(

Φτιάχνω ένα κύλινδρο ως εξής:
Code:
phi=0:pi/60:2*pi;
x=repmat([0;5],1,legth(phi));
y=repmat(cos(phi),2,1);
z=repmat(sin(phi),2,1);

Και τον τριγωνοποιώ με την delaunay ως εξής:

Code:
tri=delaunay(x,y,z);
trisurf(tri,x,y,z);
axis equal;

Το αποτέλεσμα των δύο surf φαίνεται παρακάτω. Το πρόβλημα είναι ότι μετά την τριγωνοποίηση μου "καλύπτονται" οι ... τρύπες του κυλίνδρου. Any ideas how to fix it?


Title: Re: Matlab βοηθεια
Post by: il capitano on June 05, 2011, 14:59:37 pm
Επειδή έχω κολλήσει άσχημα... πως μπορείς να πλοτάρεις έναν κύκλο (έστω μοναδιαίο) σε καρτεσιανό επίπεδο?


Title: Re: Matlab βοηθεια
Post by: Γιώργος on June 05, 2011, 15:07:00 pm
Επειδή έχω κολλήσει άσχημα... πως μπορείς να πλοτάρεις έναν κύκλο (έστω μοναδιαίο) σε καρτεσιανό επίπεδο?
Code:
R = 42;
phi = 0:pi/60:2*pi;
x = R*cos(phi);
y = R*sin(phi);
plot(x,y);

enjoy


Title: Re: Matlab βοηθεια
Post by: il capitano on June 05, 2011, 15:13:28 pm
θενξ  :)


Title: Re: Matlab βοηθεια
Post by: Γιώργος on November 02, 2011, 17:05:15 pm
Έχω τον παρακάτω κώδικα, ο οποίος "αναδιατάσσει" τα κελιά ενός 3D πίνακα.
Δηλ, αν:
u = (1, 2, 3)
v = (1, 1, 1)
I = (4, 6, 8)
J = (1, 5, 14)

Τότε:
Out(1,1) = In(4,1)
Out(2,1) = In(6,5)
Out(3,1) = In(8,14)

Το κάνω με for-loops:

Code:
for i=1:length(u)
        for j=1:length(v)
              Out(u(i),v(j)) = In(I(i),J(j));
        end
    end

Αλλά προφανώς είναι αργό. Έχετε κάποια ιδέα για υλοποίηση με matrices; Με κάποιο mask φερ' ειπείν, κάποιο άλλο rearrangement;
Ευχαριστώ!


Title: Re: Matlab βοηθεια
Post by: Time_Tripper on November 02, 2011, 18:17:49 pm
απο τη στιγμη που οι πινακες σου ειναι ιδιας διαστασης τοτε νομιζω με ενα απλο Out(u,v)=In(I,J) νομιζω γινεται η δουλεια. Κατσε να το τσεκαρω και θα σου πω και σιγουρα.


Title: Re: Matlab βοηθεια
Post by: Γιώργος on November 02, 2011, 18:21:16 pm
απο τη στιγμη που οι πινακες σου ειναι ιδιας διαστασης τοτε νομιζω με ενα απλο Out(u,v)=In(I,J) νομιζω γινεται η δουλεια. Κατσε να το τσεκαρω και θα σου πω και σιγουρα.
Παίζει να 'χεις δίκιο. Το θέμα είναι ότι μου πετάει:
??? Maximum variable size allowed by the program is exceeded.


Οπότε μάλλον θα πρέπει να σπάσω σε πολλά κομμάτια τους υπολογισμούς.


Title: Re: Matlab βοηθεια
Post by: Eru lluvatar on November 02, 2011, 18:37:16 pm
??? Maximum variable size allowed by the program is exceeded.
Αυτό έχει να κάνει με την μνήμη που έχει στο PC σου. Υπάρχει και όριο στο πόση μνήμη μπορεί να δει αν είναι 32bit. Μπορεί δηλαδή εσύ να χεις 8GB RAM στο pc αλλά να έχει 32bit OS και Μatlab να βλέπει μόνο ένα μέρος της. Αυτό που σου είπε ο Τime μου φαίνεται σωστό κι μένα με μια γρήγορη ματιά.
Για το θέμα της ταχύτητας τώρα, στο Matlab δεν αρέσουν και πολύ τα for, γι αυτό είναι αργά.Ότι μπορεί γράφτο διανυσματικά.Επίσης όταν γεμίζεις ένα πίνακα μέσω for, καλό είναι να τον αρχικοποιήσεις πρώτα με την εντολή zeros πχ που δημιουργείς ένα πίνακα από μηδενικά ότι διαστάσεων θέλεις εσύ.Το for δεν θα αλλάξει, απλά τώρα αυτός δεν θα προσπαθεί να κάνει κάθε φορά allocation στην μνήμη για να προσθέσει τα υπόλοιπα στοιχεία στον πίνακα. Αν δεν ξέρεις το μέγεθος, βάζε μια μεγαλύτερη από κάποια αναμενόμενη τιμή και στο τέλος κάνε ένα triming.


Title: Re: Matlab βοηθεια
Post by: Time_Tripper on November 02, 2011, 18:42:44 pm
Λοιπον ακυρο, σου δινει εναν πινακα ολων των Ι προς ολα τα J ενω εσυ θελεις την διαγωνιο αυτου του πινακα. Μπορει να γινει ευκολα με ενα for απλα δωσμου λιγο χρονο ακομα να δω αν μπορεις να το αποφυγεις και αυτο.


Title: Re: Matlab βοηθεια
Post by: Time_Tripper on November 02, 2011, 18:51:45 pm
Ok το βρηκα. Λοιπον θα ειναι :

>> Out((v-1)*size(Out,1)+u)=In((J-1)*size(In,1)+I)

Απλά και γρήγορα! ;)

εδιτ: αν θες και εξηγηση πως συμβαινει δες εδω: http://www.mathworks.com/help/techdoc/math/f1-85462.html (http://www.mathworks.com/help/techdoc/math/f1-85462.html)


Title: Re: Matlab βοηθεια
Post by: Γιώργος on November 02, 2011, 19:54:19 pm
Ευχαριστώ όλους. :) Εν τέλει χρησιμοποίησα την sub2ind για να κάνω τα διδιάστατα indexes μονοδιάστατα και δεν μου παραπονέθηκε.

Οπότε έγινε κάτι στυλ out(i) = in(j);


Title: Re: Matlab βοηθεια
Post by: Γιώργος on November 03, 2011, 11:45:35 am
Ok το βρηκα. Λοιπον θα ειναι :

>> Out((v-1)*size(Out,1)+u)=In((J-1)*size(In,1)+I)

Απλά και γρήγορα! ;)

εδιτ: αν θες και εξηγηση πως συμβαινει δες εδω: http://www.mathworks.com/help/techdoc/math/f1-85462.html (http://www.mathworks.com/help/techdoc/math/f1-85462.html)

For the record, αυτό που αναφέρεις το κάνει η sub2ind. :) Οπότε ναι, είχες απόλυτο δίκιο. ;)


Βάζοντας το out(u,v) βγάζει out of memory γιατί απλά βγαίνει κάτι τελείως διαφορετικό από αυτό που θέλουμε. :)


Title: Re: Matlab βοηθεια
Post by: Time_Tripper on November 03, 2011, 14:02:20 pm
Ναι οταν βαζεις πινακα για τις συνεταγμανες το παιρνει για μια μονο διασταση και σου δινει τελειως αλλα αποτελεσματα . Γι αυτο πρεπει να "αλλαξεις" λιγο την εκφραση. Την sub2ind δεν την ηξερα, χαιρομαι που υπαρχει ετοιμο κατι τετοιο. Παντως ειδες οτι ολα μπορουν να γινουν με μια γραμμη κωδικα χωρις καμια for και αυτη ειναι και η "μαγεια"/"δυσκολια" του matlab! ;)


Title: Re: Matlab βοηθεια
Post by: Eru lluvatar on November 03, 2011, 14:19:47 pm
Matlab Magic
έχει σκεφτεί για σένα πριν εσένα.  ::)


Title: Re: Matlab βοηθεια
Post by: il capitano on March 24, 2012, 21:22:21 pm
Λοιπόν θέλω να βρω την 2η ρίζα την εξίσωσης tan(a*x) - f(x) = 0, όπου a σταθερά και f(x) γνωστή έκφραση.

Προσπαθώ με την fsolve αλλά δεν έχω πραγματικά ιδέα σε ποιο διάστημα είναι η δεύτερη ρίζα οπότε δεν ξέρω και τι αποτέλεσμα παίρνω.... Καμιά βοήθεια;


Title: deleted
Post by: BOBoMASTORAS on March 24, 2012, 21:33:26 pm
deleted


Title: Re: Matlab βοηθεια
Post by: Eru lluvatar on March 24, 2012, 21:54:46 pm
δοκίμασε να πλοτάρεις την συνάρτηση για να δεις γραφικά λύσεις. δες περίπου που κοντά είσαι.
μετά αν βάχεις στο x0 διάνυσμα και όχι μια τιμή, αυτές που βλέπεις από το plot θα τρέξει 2 φορές και θα σου βγάλει 2 τιμές.

αν δεν θές να το περνάς σαν όρισμα παρακάτω προτείνω απλά γραφικά.


Title: Re: Matlab βοηθεια
Post by: il capitano on March 24, 2012, 22:10:50 pm
@bob θα ήθελα κάτι αυτόματο, αλλά καλή σκέψη γενικά! ίσως καταλήξω σ' αυτό αν δεν βρω τίποτε πιο αυτόματο!

@eru το είδα αυτό σε ένα πρόχειρο googlαρισμα αλλά το θεώρησα κάπως μπακάλικο.


Σκέφτηκα να βρω την ρίζα την edit: tan(a*x+π) - f(x) = 0 tan(a*x) - f(x) - π = 0, αλλά δεν ξέρω αν είμαι στον σωστό δρόμο. Αυτή την ώρα δεν μπορώ να σκεφτώ πολύ μαθηματικά δυστυχώς...

Anyway θενξ και τους 2


Title: Re: Matlab βοηθεια
Post by: Emfanever on March 24, 2012, 22:36:56 pm
Όταν λές ότι η f(x) είναι γνωστή έκφραση τι εννοείς?


Title: Re: Matlab βοηθεια
Post by: Eru lluvatar on March 25, 2012, 00:27:45 am
δεν έχει το Matlab κάτι πιο αυτόματο από το να βάλει vector στο x0.
που το θες αυτό? σε εργασία μαθήματος? αν ναι εγώ θυμάμαι να μου λένε γραφικά λύστε το, φωτονική πχ σε κάτι αποκοπές.

edit: υποψιάζομαι ότι θες να βρεις ρυθμούς. οπότε δοκίμασε να βρεις ιδιοτιμές με τις sptan eigs


Title: Re: Matlab βοηθεια
Post by: il capitano on March 25, 2012, 01:15:34 am
Όταν λές ότι η f(x) είναι γνωστή έκφραση τι εννοείς?

Γενικά όταν λέω έκφραση θέλω να πω οποιαδήποτε συνάρτηση του x, την οποία όμως την ξέρω.


@eru, Όταν λες να βρω ιδιοτιμές, θες να πεις του αρχικού μου πίνακα απ' τον οποίο προκύπτει η ΧΕ που θέλω να λύσω έτσι; Είναι αρκετά πολύπλοκος αυτός ο πίνακας όμως. Νομίζω θα με πάρει άπειρη ώρα, μόνο και μόνο να τον περάσω στο matlab :P


Title: Re: Matlab βοηθεια
Post by: Eru lluvatar on March 25, 2012, 01:27:06 am
Ε λύστο γραφικά τότε  :P


Title: Re: Matlab βοηθεια
Post by: Emfanever on March 25, 2012, 01:35:19 am
Έχω μπερδευτεί λίγο

Αν η f(x) είναι γνωστή και το a είναι γνωστό γιατί δε χρησιμοποιείς τη solve για να βρεις τις ρίζες?

Δηλαδή , έστω f(x) = x^2 + x και a=2

γράφεις
syms x
f = x^2 + x;
a = 2;
solve(tan(a*x) - f,x)

Ή μήπως θέλεις μια γενική λύση συναρτήσει a, f(x) ? Sorry αν δεν κατάλαβα τι εννοείς και λέω βλακείες  :P


Title: Re: Matlab βοηθεια
Post by: asmd on March 25, 2012, 01:36:03 am
μπας και σε βοηθάει αυτό :

http://www.wolframalpha.com/input/?i=tan%28a*x%29%2Bf%28x%29%3D0 (http://www.wolframalpha.com/input/?i=tan%28a*x%29%2Bf%28x%29%3D0)


δηλ. εάν α και χ πραγματικά χ Ε [-π/α,+π/α] εκτός εάν περιορίζεται περισσότερο από την f(x)


Title: Re: Matlab βοηθεια
Post by: il capitano on March 25, 2012, 01:48:39 am
μπας και σε βοηθάει αυτό :

http://www.wolframalpha.com/input/?i=tan%28a*x%29%2Bf%28x%29%3D0 (http://www.wolframalpha.com/input/?i=tan%28a*x%29%2Bf%28x%29%3D0)


δηλ. εάν α και χ πραγματικά χ Ε [-π/α,+π/α] εκτός εάν περιορίζεται περισσότερο από την f(x)

θενξ δούλεψε αυτό!!


@emfanever, Το θέμα είναι ότι η solve βγάζει μόνο την πρώτη ρίζα αυτή της εξίσωσης. Εγώ πχ ήθελα συγκεκριμένα την 2η ρίζα της, και μόνον αυτή! Anyway αφού δούλεψε το link του asmd, problem solved! ;)


Title: Re: Matlab βοηθεια
Post by: asmd on March 25, 2012, 02:18:06 am
δηλ. εάν α και χ πραγματικά χ Ε [-π/α,+π/α] εκτός εάν περιορίζεται περισσότερο από την f(x)

αυτό είναι μλκ που έγραψα.. αλλά έψαχνα μια εναλλακτική μορφή μπας και το σώσουμε..

μάλλον η εναλλακτική μορφή θα σε έσωσε.

άτιμα μαθηματικά - ποτέ δεν τα πήγαινα! ;D


Title: Re: Matlab βοηθεια
Post by: il capitano on May 03, 2012, 21:31:16 pm
Μόνιμος κάτοικος του τόπικ πλέον


Έχω ένα σήμα X.

Βρίσκω τον διακριτό μετασχηματισμό φουριέ του έστω 2048 σημείων με το Y = fft(X,2048);
τον βάζω στο κέντρο με Υ_shift = fftshift(Y);
και στην συνέχει θέλω να γυρίσω πίσω...

Κάνω πχ X_new = ifft(Y,length(X)) και δεν δουλεύει.
Αντίστοιχα δεν δουλεύει και η X_new = ifft(Y_shift,length(X)). (δεν δουλεύει υπό την έννοια ότι το τελικό σήμα ουδεμία σχέση έχει με το αρχικό)

Please αν κάποιος μπορεί να βρει τι στο διάολο κάνω λάθος. Είμαι σίγουρος ότι κάτι φταίει στο πως πάω στην συχνότητα και γυρνάω πίσω, αλλά το κεφάλι μου δεν μπορεί να σκεφτεί τι εδώ και 2 μέρες :S


Title: Re: Matlab βοηθεια
Post by: Eru lluvatar on May 03, 2012, 21:39:49 pm
t=linspace(-0.5*T0,0.5*T0,3000); %διανυσμα χρονου
r=κατι.*t %σήμα στο χρόνο
T=t(2)-t(1); %αποσταση δυο δειγμάτων στο χρονο
fs=1/T; %συχνότητα ''sampling''
f=fs*linspace(-1/2,1/2-1/3000,3000); %διανυσμα συχνοτητας
r_spec= fftshift( fft(r)*(T*3000) ); %σημα στην συχνότητα
r_return_to_time = fft( ifftshift( r_spec ) / (T*3000) ); %επιστροφή στο χρόνο

λογικά θα σου δουλέψει

edit: δες πως ορίζει τα fft/ifft το matlab με τις φάσεις μήπως τα ορίζει ανάποδα από ότι εμείς και πρέπει να πάρεις ifft για το fourier και το fft για τον αντίστροφο


Title: Re: Matlab βοηθεια
Post by: il capitano on May 03, 2012, 22:20:04 pm
θενξ! είσαι θεός!!


Title: Re: Matlab βοηθεια
Post by: Lampros on November 21, 2012, 17:46:34 pm
Έχω κάνει ένα for loop και θέλω να αποθηκεύω τις τιμές μου σε έναν πίνακα G.Πως το κάνω?Προσπάθησα διάφορα πράγματα αλλά όλα μου βγάζουν error.

Δηλαδή θέλω το πολύ απλό

for i=0:..:i=κάτι
....
G(i)=κάποια τιμή; <---πως στο διάολο πρέπει να το γράψω?
end


Title: Re: Matlab βοηθεια
Post by: Grecs on November 21, 2012, 17:48:55 pm
Μηπως με [ ] αντι για ()?


Title: Re: Matlab βοηθεια
Post by: Lampros on November 21, 2012, 17:50:40 pm
μαλάκα πρέπει να είσαι πολύ πιο χαζός απο όσο νόμιζα...
με απογοητεύεις


Title: Re: Matlab βοηθεια
Post by: Karaμazoβ on November 21, 2012, 17:51:23 pm
Έχω κάνει ένα for loop και θέλω να αποθηκεύω τις τιμές μου σε έναν πίνακα G.Πως το κάνω?Προσπάθησα διάφορα πράγματα αλλά όλα μου βγάζουν error.

Δηλαδή θέλω το πολύ απλό

for i=0:..:i=κάτι
....
G(i)=κάποια τιμή; <---πως στο διάολο πρέπει να το γράψω?
end


α ρε εργασίες Μικροκύματα...με μαθανε MatLab


Eστω πίνακας G 1xn, και x μια τυχαία τιμη

for i=1:n
     G(i)=x;
end



δεν υπάρχει δηλαδή μηδενικο στοιχειο G(0) = x



Title: Re: Matlab βοηθεια
Post by: Grecs on November 21, 2012, 17:52:10 pm
Α ναι στο ματλαμπ θελει παρενθεσεις.


Title: Re: Matlab βοηθεια
Post by: Lampros on November 21, 2012, 17:53:12 pm
Το δοκίμασα αυτό και μου βγάζει error...

πως ορίζεις τον πίνακα πριν απο το loop?


Title: Re: Matlab βοηθεια
Post by: Karaμazoβ on November 21, 2012, 17:55:16 pm
Το δοκίμασα αυτό και μου βγάζει error...

πως ορίζεις τον πίνακα πριν απο το loop?


τι σου λεει το error ??


Title: Re: Matlab βοηθεια
Post by: Lampros on November 21, 2012, 17:58:03 pm
Βασικά αυτό με το 0 δεν το ήξερα απλά στην εκφώνηση λέει απο 0 ως μια τιμή..πως θα το κάνω αυτό?

τα ερρορ είναι 2 :

Error in ==> Askisi1_1 at 18
    G(f)=(Yo-yin)/(Yo+yin);

Error in ==> run at 57
          evalin('caller', [s ';']);


Title: Re: Matlab βοηθεια
Post by: Karaμazoβ on November 21, 2012, 17:59:30 pm
Βασικά αυτό με το 0 δεν το ήξερα απλά στην εκφώνηση λέει απο 0 ως μια τιμή..πως θα το κάνω αυτό?

τα ερρορ είναι 2 :

Error in ==> Askisi1_1 at 18
    G(f)=(Yo-yin)/(Yo+yin);

Error in ==> run at 57
          evalin('caller', [s ';']);


αυτό το f τι είναι??


Title: Re: Matlab βοηθεια
Post by: Lampros on November 21, 2012, 18:00:12 pm
Μη κoλλάς σε λεπτομέρειες ρε συ...αντί για i έχω f...


Title: Re: Matlab βοηθεια
Post by: Lampros on November 21, 2012, 18:02:22 pm
Λοιπόν για να μην μπερδευόμαστε ο κώδικας είναι αυτός

Code:
Zo=50;
f0=1;
Yo=1/Zo;
R=100;
C=2*10^(-3);
N=201;
GL=1/R;
for f=0:(4*f0/N):(4*f0)
    BL=C*2*pi*f;
    yL=GL/Yo+1i*BL/Yo;
    y1in=Yo*((yL+1i*Yo*tan(2*pi*0.2))/(Yo+1i*yL*tan(2*pi*0.2)));
    y2=Yo*1i*tan(2*pi*0.13);
    y2in=y1in+y2;
    y3in=Yo*((y2in+1i*Yo*tan(2*pi*0.1))/(Yo+1i*y2in*tan(2*pi*0.1)));
    B2=2.7*10^(-3)*2*pi*f;
    b2=B2/Yo;
    yin=y3in+1i*b2;
    G(f)=(Yo-yin)/(Yo+yin);
end


Title: Re: Matlab βοηθεια
Post by: Grecs on November 21, 2012, 18:04:39 pm
Aφου εχεις f απο 0 μας δουλευεις?

βαλε G(f+1)


Title: Re: Matlab βοηθεια
Post by: Karaμazoβ on November 21, 2012, 18:09:42 pm
Μη κoλλάς σε λεπτομέρειες ρε συ...αντί για i έχω f...

οκ ρε, γιατι θύμησε την συχνοτητα f, και είπα μηπως.

Λοιπον, μπορει να ειναι αυτονόητο και να το χεις κανει, αλλα το λεω έτσι κι αλλιως.
Εστω πως σου λεει απο 0 ως 10 GHz, και για καλή (?) ακρίβεια παίρνεις 100 δείγματα.

αρα Δf = 10/100 = 0.1 GHz το βημα της δειγματοληψίας. Αρα ο πινακας θα εχει n=100 στοιχεία με f(1)=0;, f(2)=0.1; f(3)=0.3; ... f(100)=10;


επομενως ετσι βγαζεις τους συντελεστες ανακλασης απο 0 ως 10...αρκει φυσικα να υπολογίζεις την σωστή Yin για καθε δείγμα βεβαια!


Title: Re: Matlab βοηθεια
Post by: bakeneko on November 21, 2012, 18:10:18 pm
 f=0:(4*f0/N):(4*f0)

Εκτός από το 0 που έχεις, το πρόβλημα για το μάτλαμπ είναι αυτά τα άλλα f δε βγαίνουν ακέραιοι, δηλαδή δεν μπορείς να βάλεις G(1,5). Θα πρέπει να βρεις έναν άλλο τρόπο να το κάνεις, π.χ. να βάλεις οι κάθε 10 στήλες του G να αντιπροσωπεύουν 1 μονάδα του οριζόντιου άξονά σου! (δεν ξέρω ακριβώς τι κάνεις οπότε δεν μπορώ να σου πω και ακριβώς, απλά πετάω μια ιδέα :P )


Title: Re: Matlab βοηθεια
Post by: Lampros on November 21, 2012, 18:13:16 pm
f=0:(4*f0/N):(4*f0)

Εκτός από το 0 που έχεις, το πρόβλημα για το μάτλαμπ είναι αυτά τα άλλα f δε βγαίνουν ακέραιοι, δηλαδή δεν μπορείς να βάλεις G(1,5). Θα πρέπει να βρεις έναν άλλο τρόπο να το κάνεις, π.χ. να βάλεις οι κάθε 10 στήλες του G να αντιπροσωπεύουν 1 μονάδα του οριζόντιου άξονά σου! (δεν ξέρω ακριβώς τι κάνεις οπότε δεν μπορώ να σου πω και ακριβώς, απλά πετάω μια ιδέα :P )

Σωστός ρε..λολ

Απλά πως θα το κάνω αυτό.Να βάλω μια δεύτερη λούπα?


Title: Re: Matlab βοηθεια
Post by: Karaμazoβ on November 21, 2012, 18:15:55 pm
f=0:(4*f0/N):(4*f0)

Εκτός από το 0 που έχεις, το πρόβλημα για το μάτλαμπ είναι αυτά τα άλλα f δε βγαίνουν ακέραιοι, δηλαδή δεν μπορείς να βάλεις G(1,5). Θα πρέπει να βρεις έναν άλλο τρόπο να το κάνεις, π.χ. να βάλεις οι κάθε 10 στήλες του G να αντιπροσωπεύουν 1 μονάδα του οριζόντιου άξονά σου! (δεν ξέρω ακριβώς τι κάνεις οπότε δεν μπορώ να σου πω και ακριβώς, απλά πετάω μια ιδέα :P )

Σωστός ρε..λολ

Απλά πως θα το κάνω αυτό.Να βάλω μια δεύτερη λούπα?



αποσυμπλεξε τον υπολογισμο του f απο το loop.
Βαλε i=1:n και μεσα στο loop βαλε f(i) = i*df; , οπου df το βημα ((fmax-fmin)/n Ghz). Μετα οπου f, αντικατεστησε με f(i).


στο τελος plot(f,G)


Title: Re: Matlab βοηθεια
Post by: Grecs on November 21, 2012, 18:19:30 pm
f=0:(4*f0/N):(4*f0)

Εκτός από το 0 που έχεις, το πρόβλημα για το μάτλαμπ είναι αυτά τα άλλα f δε βγαίνουν ακέραιοι, δηλαδή δεν μπορείς να βάλεις G(1,5). Θα πρέπει να βρεις έναν άλλο τρόπο να το κάνεις, π.χ. να βάλεις οι κάθε 10 στήλες του G να αντιπροσωπεύουν 1 μονάδα του οριζόντιου άξονά σου! (δεν ξέρω ακριβώς τι κάνεις οπότε δεν μπορώ να σου πω και ακριβώς, απλά πετάω μια ιδέα :P )

Σωστός ρε..λολ

Απλά πως θα το κάνω αυτό.Να βάλω μια δεύτερη λούπα?
Βαλε μια αλλη μεταβλητη στο G(a) px πριν την λουπα a=1 και μεσα στην λουπα a++

Αμα θες και τα f βαλτα σε μια γραμμη του G απο διπλα.


Title: Re: Matlab βοηθεια
Post by: Lampros on November 21, 2012, 18:24:59 pm
f=0:(4*f0/N):(4*f0)

Εκτός από το 0 που έχεις, το πρόβλημα για το μάτλαμπ είναι αυτά τα άλλα f δε βγαίνουν ακέραιοι, δηλαδή δεν μπορείς να βάλεις G(1,5). Θα πρέπει να βρεις έναν άλλο τρόπο να το κάνεις, π.χ. να βάλεις οι κάθε 10 στήλες του G να αντιπροσωπεύουν 1 μονάδα του οριζόντιου άξονά σου! (δεν ξέρω ακριβώς τι κάνεις οπότε δεν μπορώ να σου πω και ακριβώς, απλά πετάω μια ιδέα :P )

Σωστός ρε..λολ

Απλά πως θα το κάνω αυτό.Να βάλω μια δεύτερη λούπα?



αποσυμπλεξε τον υπολογισμο του f απο το loop.
Βαλε i=1:n και μεσα στο loop βαλε f(i) = i*df; , οπου df το βημα ((fmax-fmin)/n Ghz). Μετα οπου f, αντικατεστησε με f(i).


στο τελος plot(f,G)

έτσι όμως η λούπα θα κάνει μόνο 4 επαναλήψεις(στη δική μου περίπτωση)...


Title: Re: Matlab βοηθεια
Post by: bakeneko on November 21, 2012, 18:25:17 pm
Αν θέλεις να γίνεις λίγο μπακάλης πάντως μπορείς απλά αντί για "f" (στο G(f)) να βάλεις round(100*f), όπου round κάνει στρογγυλοποίηση στον κοντινότερο ακέραιο, και αρκεί βέβαια το 100 να σου δίνει την επιθυμιτή ανάλυση στον άξονα (π.χ. μη σου βγει 2 φορές το ίδιο νούμερο με τη στρογγυλοποίηση), αλλιώς μπορείς να βάλεις και 1000 κτλ, και απλά μετά να το έχεις υπόψη σου αυτό στους υπόλοιπους υπολογισμούς, και αν εμφανίζονται νούμερα στο plot να αναφέρεις την κλίμακα!


Title: Απ: Matlab βοηθεια
Post by: Karaμazoβ on November 21, 2012, 18:27:58 pm
f=0:(4*f0/N):(4*f0)

Εκτός από το 0 που έχεις, το πρόβλημα για το μάτλαμπ είναι αυτά τα άλλα f δε βγαίνουν ακέραιοι, δηλαδή δεν μπορείς να βάλεις G(1,5). Θα πρέπει να βρεις έναν άλλο τρόπο να το κάνεις, π.χ. να βάλεις οι κάθε 10 στήλες του G να αντιπροσωπεύουν 1 μονάδα του οριζόντιου άξονά σου! (δεν ξέρω ακριβώς τι κάνεις οπότε δεν μπορώ να σου πω και ακριβώς, απλά πετάω μια ιδέα :P )

Σωστός ρε..λολ

Απλά πως θα το κάνω αυτό.Να βάλω μια δεύτερη λούπα?



αποσυμπλεξε τον υπολογισμο του f απο το loop.
Βαλε i=1:n και μεσα στο loop βαλε f(i) = i*df; , οπου df το βημα ((fmax-fmin)/n Ghz). Μετα οπου f, αντικατεστησε με f(i).


στο τελος plot(f,G)

έτσι όμως η λούπα θα κάνει μόνο 4 επαναλήψεις(στη δική μου περίπτωση)...


γιατι 4 ρε? βαλε εκει 100-500 να δεις την υγεια σου


Title: Re: Matlab βοηθεια
Post by: Lampros on November 21, 2012, 18:43:25 pm
λοιπόν έκανα τις εξής αλλαγές και μοιάζει να δουλεύει..

Code:
Zo=50;
f0=1;
Yo=1/Zo;
R=100;
C=2*10^(-3);
N=201;
GL=1/R;
j=1;
for f=0:(4*f0/N):(4*f0)
    F(j)=f;
    BL=C*2*pi*f;
    yL=GL/Yo+1i*BL/Yo;
    y1in=Yo*((yL+1i*Yo*tan(2*pi*0.2))/(Yo+1i*yL*tan(2*pi*0.2)));
    y2=Yo*1i*tan(2*pi*0.13);
    y2in=y1in+y2;
    y3in=Yo*((y2in+1i*Yo*tan(2*pi*0.1))/(Yo+1i*y2in*tan(2*pi*0.1)));
    B2=2.7*10^(-3)*2*pi*f;
    b2=B2/Yo;
    yin=y3in+1i*b2;
    G(j)=10*log((Yo-yin)/(Yo+yin));
    if (G(j)<-40)
        G(j)=-40;
    end
    j=j+1;
end

το τελευταίο κομμάτι είναι γιατί θέλω τις τιμές σε dB..μου φαίνεται όμως πως έχω κάποιο λογικό λάθος.
Τέλος πάντων ευχαριστώ για τις απαντήσεις με βοηθήσατε!


Title: Re: Matlab βοηθεια
Post by: Lampros on November 22, 2012, 14:34:57 pm
Για να πάρω το μέτρο ενός μιγαδικού αριθμού, θα χρησιμοποιήσω την συνάρτηση abs(value) ?

(Το ρωτάω γιατί μου βγάζει περίεργα αποτελέσματα και ενώ έχω ψάξει το πρόγραμμά μου πολύ δεν βρίσκω κάποιο άλλο λογικό λάθος)


Title: Re: Matlab βοηθεια
Post by: il capitano on November 22, 2012, 14:45:35 pm
Θεωρητικά ναι, αλλά νομίζω και μένα μου παρουσίαζε προβλήματα κατά καιρόυς, και τότε έκανα το παλιό καλό
Code:
sqrt((real(x)).^2+(imag(x)).^2)


Title: Re: Matlab βοηθεια
Post by: png on December 21, 2012, 18:32:10 pm
λοιπόν:
θέλω να χρησιμοποίσω την fzero για να βρω νουμερικώς τις ριζες μιάς τριγωνομετρικής εξίσωσης η οποία δε λύνεται αναλυτικά.
η fzero θελει function handler. εγώ έχω αυτό:
Code:
syms theta;
phi=pi/6;
for h=[0 0.1 0.2 0.5 1 2 5]
        y=(sin(theta))^2+ 2*h*cos(theta-phi);
        y1 = sin(theta)*cos(theta)+h*sin(theta-phi);
        y2 = cos(2*theta)+h*cos(theta-phi);
        ezplot(y,[0 2*pi]);

//κάπου εδω θέλω να βρω της ριζες της y1.

        %ezplot(y1,[0 2*pi]);
        %ezplot(y2,[0 2*pi]);
        %hold all;
end

τα y, y1, y2 είναι symbolic variables (απ'όσο κατάλαβα). τι πρέπει να τα κάνω ώστε μια fzero μεσα στη λούπα να μη μου γυρνάει error;
(πλιζ, όχι references στο documentation της mathworks, γιατι ειναι καλό μόνο άμα έχεις χρόνο και υπομονή)

και γενικά έχω μπλεχτεί άπειρα.


Title: Re: Matlab βοηθεια
Post by: Karaμazoβ on December 21, 2012, 18:49:08 pm
να σε ρωτησω, γιατι δεν χρησιμοποιείς την solve(y,theta) ??


Title: Re: Matlab βοηθεια
Post by: png on December 21, 2012, 18:50:29 pm
γιατι δε μπορεί να τη λύσει.

μου βγαζει ans= arg(Re(z1)+i*Im(z2))+2*pi*k το οποίο δε βοηθάει ιδιαίτερα.


Title: Re: Matlab βοηθεια
Post by: Karaμazoβ on December 21, 2012, 18:54:53 pm
γιατι δε μπορεί να τη λύσει.

μου βγαζει ans= arg(Re(z1)+i*Im(z2))+2*pi*k το οποίο δε βοηθάει ιδιαίτερα.


εισαι σιγουρη?? απο το MatLab 2011b:



Code:
syms theta;
phi=pi/6;
h = 0.1; %paradeigma

        y=(sin(theta))^2+ 2*h*cos(theta-phi);
        y1 = sin(theta)*cos(theta)+h*sin(theta-phi);
        y2 = cos(2*theta)+h*cos(theta-phi);
        ezplot(y,[0 2*pi]);
>>
>>
>>
>> solve(y1,theta)
 
ans =
 
0.046027347431528771078536140575958 + 1.8436655436388304855647095976386e-34*i
 
>> solve(y2,theta)
 
ans =
 
-0.7977431803860713605522195021279
 
>> solve(y,theta)
 
ans =
 
- 0.049895392467347344096156514398011 - 0.41934903901100004962886897809882*i
 
>>


Title: Re: Matlab βοηθεια
Post by: png on December 21, 2012, 18:57:43 pm
εχω το 2010α... λες να φταιει αυτο;

(επισης θελω οι τιμες του solve να ειναι πραγματικες)



Title: Re: Matlab βοηθεια
Post by: Eru lluvatar on December 21, 2012, 19:07:37 pm
δοκίμασε fsolve.
πραγματική είναι η λύση του Karaμazoβ
το φανταστικό μέρος είναι σφάλμα μηχανής 1e-34


Title: Απ: Matlab βοηθεια
Post by: Karaμazoβ on December 21, 2012, 19:09:40 pm
δοκίμασε fsolve.
πραγματική είναι η λύση του Karaμazoβ
το φανταστικό μέρος είναι σφάλμα μηχανής 1e-34


το μυστηριώδες είναι οτι σκαλώνει στην y(theta) και βγαζει μιγαδικό, ενω στο διαγραμμα φαινεται οτι εχει δυο ριζες


Title: Re: Matlab βοηθεια
Post by: png on December 21, 2012, 19:13:03 pm
*sigh*

σας ευχαριστώ.


Title: Re: Απ: Matlab βοηθεια
Post by: Eru lluvatar on December 21, 2012, 19:26:21 pm
δοκίμασε fsolve.
πραγματική είναι η λύση του Karaμazoβ
το φανταστικό μέρος είναι σφάλμα μηχανής 1e-34


το μυστηριώδες είναι οτι σκαλώνει στην y(theta) και βγαζει μιγαδικό, ενω στο διαγραμμα φαινεται οτι εχει δυο ριζες
Το y(theta) δε το δα
Η solve είναι για πολυώνυμα αν δεν κάνω λάθος.

Code:
yy =@(theta) sin(theta).^2+ 2*h*cos(theta-phi);

fsolve(yy,[2 4])

Equation solved.

fsolve completed because the vector of function values is near zero
as measured by the default value of the function tolerance, and
the problem appears regular as measured by the gradient.

<stopping criteria details>


ans =

    2.7782    3.6048


Title: Re: Matlab βοηθεια
Post by: Karaμazoβ on December 21, 2012, 19:44:49 pm
γαμηστερός ρε Eru !

η solve δεν ειναι μονο για πολυώνυμα, εχω λύσει και λογαριθμικες , αλλα επειδη ειναι περιοδική μαλλον κομπλαρει, και δε μπορείς να βαλεις πεδίο ορισμου να ψαξει...


Title: Re: Matlab βοηθεια
Post by: Eru lluvatar on December 21, 2012, 19:54:27 pm
δε ξέρω δεν την έχω δουλέψει την solve γι αυτό είπα νομίζω  :P

Γενικά fsolve χρησιμοποιώ στην οποία μπορείς να περάσεις και πολλές παραμέτρους.
Αργεί καμιά φορά αλλά την κάνει την δουλεία της.


Title: Re: Matlab βοηθεια
Post by: Karaμazoβ on December 21, 2012, 19:56:23 pm
δε ξέρω δεν την έχω δουλέψει την solve γι αυτό είπα νομίζω  :P

Γενικά fsolve χρησιμοποιώ στην οποία μπορείς να περάσεις και πολλές παραμέτρους.
Αργεί καμιά φορά αλλά την κάνει την δουλεία της.


πρεπει να χεις και μια ιδεα για το ποσες ειναι οι λυσεις και που περίπου είναι, αλλα εν προκειμένω τις πληροφορίες αυτές τις έχεις, γιατι κανεις πλοτ


Title: Re: Matlab βοηθεια
Post by: Decadence on January 02, 2013, 22:48:11 pm

a = fi(v,s,w,F) returns a fixed-point object with value v, Signed property value s, word length w, best-precision fraction length, and embedded.fimath F.

μπορεί να μου εξηγήσεις κάποιος τι παριστάνει το "embedded.fimath F"

το έψαξα στο documentation, αλλά δεν έβγαλα άκρη..


Title: Re: Matlab βοηθεια
Post by: Decadence on January 02, 2013, 23:30:03 pm
νομίζω έβγαλα μια άκρη.. μάλλον δεν έπρεπε να ασχοληθώ καν..

"Specifying a Fixed-Point Input Parameter by Example

To specify fixed-point inputs, you must install Fixed-Point Toolbox software.
To specify a signed fixed-point type with a word length of 8 bits, and a fraction
length of 3 bits, in the Define by Example dialog box, enter:
fi(10, 1, 8, 3)
HDL Coder sets the type of input to embedded.fi(1x1). By default, if you
have not specified a local fimath, HDL Coder uses the global fimath.
"

κάτι τέτοιο πρέπει να παριστάνει το "embedded.fimath F"

το συγκεκριμένο παράδειγμα αναφέρεται σε αυτήν την μορφή :

a = fi(v,s,w,f) returns a fixed-point object with value v, Signed property value s, word length w, and fraction length f.

αλλά λέει ότι :  HDL Coder sets the type of input to embedded.fi(1x1).


Title: Re: Matlab βοηθεια
Post by: Elade on January 06, 2013, 22:31:18 pm
η συνάρτηση δέλτα στο matlab είναι dirac έτσι? γιατί προσπαθώ νατην χρησιμοποιήσω και μου λέει ότι είναι undefined


Title: Re: Matlab βοηθεια
Post by: Eru lluvatar on January 06, 2013, 22:54:30 pm
μόνο με syms δουλεύει νομίζω


Title: Re: Matlab βοηθεια
Post by: Elade on January 06, 2013, 22:56:10 pm
που σημαίνει?(είμαι τελείως άσχετος sorry  :P )


Title: Re: Matlab βοηθεια
Post by: Eru lluvatar on January 06, 2013, 23:01:05 pm
πρέπει να έχεις ορίσει κάποιου πιο πανω μια μεταβλητή τύπου syms στον κώδικα σου
δεν ξέρω τι θες να προσομοιώσεις ακριβώς

γράψε doc syms στο command line για παραπάνω λεπτομέρειες

το dirac(5) δεν θα σου δουλέψει πάντως


Title: Re: Matlab βοηθεια
Post by: Elade on January 06, 2013, 23:02:02 pm
θα το κοιτάξω, ευχαριστώ για τη βοήθεια :-)


Title: Re: Matlab βοηθεια
Post by: Lampros on January 13, 2013, 23:34:26 pm
Πως αντιστρέφω πίνακα?
Δοκίμασα το inv(A) αλλά ώς απάντηση πήρα FAIL  :D


Title: Re: Matlab βοηθεια
Post by: Karaμazoβ on January 13, 2013, 23:36:36 pm
Πως αντιστρέφω πίνακα?
Δοκίμασα το inv(A) αλλά ώς απάντηση πήρα FAIL  :D


τι σου λεει το MatLab?


Title: Re: Matlab βοηθεια
Post by: Lampros on January 13, 2013, 23:37:12 pm
FAIL

Να:
>> inv(B)
 
ans =
 
FAIL
 
>> B^(-1)
 
ans =
 
FAIL


Title: Re: Matlab βοηθεια
Post by: Karaμazoβ on January 13, 2013, 23:42:23 pm
ντόινγκ

ο πινακας είναι τετραγωνικος, ετσι?


Title: Re: Matlab βοηθεια
Post by: jason_ on January 13, 2013, 23:46:38 pm
η ορίζουσα του πίνακα είναι διάφορη του μηδενός (και άρα αντιστρέψιμος);


Title: Re: Matlab βοηθεια
Post by: Lampros on January 13, 2013, 23:47:35 pm
Ναι ο πίνακας είναι 4χ4 και είναι σίγουρα αντιστρέψιμος απλά χρησιμοποιώ και syms στα στοιχεία του.
Παίζει ρόλο αυτό?

εδιτ: οκ βασικά πρέπει να έχω λάθος στα στοιχεία του πίνακα γιατί η ορίζουσα βγαίνει όντως μηδεν για κάποιο λόγο.Οπότε σόρι


Title: Re: Matlab βοηθεια
Post by: crystal on January 14, 2013, 13:01:25 pm
Ναι ο πίνακας είναι 4χ4 και είναι σίγουρα αντιστρέψιμος απλά χρησιμοποιώ και syms στα στοιχεία του.
Παίζει ρόλο αυτό?

εδιτ: οκ βασικά πρέπει να έχω λάθος στα στοιχεία του πίνακα γιατί η ορίζουσα βγαίνει όντως μηδεν για κάποιο λόγο.Οπότε σόρι

Νομίζω αν έχεις στοιχεία syms μέσα στον πίνακα , δεν δουλεύει το inv()


Title: Re: Matlab βοηθεια
Post by: Emfanever on January 14, 2013, 13:17:32 pm
Ναι ο πίνακας είναι 4χ4 και είναι σίγουρα αντιστρέψιμος απλά χρησιμοποιώ και syms στα στοιχεία του.
Παίζει ρόλο αυτό?

εδιτ: οκ βασικά πρέπει να έχω λάθος στα στοιχεία του πίνακα γιατί η ορίζουσα βγαίνει όντως μηδεν για κάποιο λόγο.Οπότε σόρι

Νομίζω αν έχεις στοιχεία syms μέσα στον πίνακα , δεν δουλεύει το inv()

Εγώ που δοκίμασα δουλεύει.

Επίσης ένας άλλος τρόπος για να κάνεις πχ inv(A)*B είναι να γράψεις Α\Β


Title: Re: Matlab βοηθεια
Post by: Lampros on January 25, 2013, 23:57:03 pm
To σκέτο log(χ) είναι το ln(χ)?


Title: Απ: Matlab βοηθεια
Post by: Karaμazoβ on January 26, 2013, 00:01:59 am
To σκέτο log(χ) είναι το ln(χ)?

yes.


Title: Re: Matlab βοηθεια
Post by: igoutas on February 21, 2013, 15:55:53 pm
παιδιά μπορεί να μου πεί κάποιος για κανένα free tutorial για την matlab για αρχάριους για να κατεβάσω?


Title: Re: Matlab βοηθεια
Post by: Grecs on February 21, 2013, 15:57:25 pm
παιδιά μπορεί να μου πεί κάποιος για κανένα free tutorial για την matlab για αρχάριους για να κατεβάσω?
http://www.youtube.com/playlist?list=PL7CAABC40B2825C8B&feature=plcp


Title: Re: Matlab βοηθεια
Post by: igoutas on February 21, 2013, 19:49:33 pm
μόνο σ youtube δηλαδή σε άλλη μορφή δεν προτείνεται κάτι?


Title: Re: Matlab βοηθεια
Post by: Neal on February 21, 2013, 20:05:11 pm
Δοκίμασες να το googlareis αυτό που ψάχνεις;


Title: Re: Matlab βοηθεια
Post by: igoutas on February 21, 2013, 20:11:46 pm
προφανώς και έχει πολλά!κατι που να έχετε δεί και δοκιμάσει απλά ρωτάω!


Title: Re: Matlab βοηθεια
Post by: testiculos on February 21, 2013, 20:24:56 pm
παιδιά μπορεί να μου πεί κάποιος για κανένα free tutorial για την matlab για αρχάριους για να κατεβάσω?

Δες και αυτό (http://kype.auth.gr/downloads/e-courses/index.html)
Είναι για τελείως αρχάριους, ελπίζω να βοηθήσει ;)


Title: Re: Matlab βοηθεια
Post by: christineL on April 14, 2013, 18:42:12 pm
Έχω το εξής πρόβλημα. Έχω αυτή τη συνάρτηση:

Code:
function [ A ,B] = dixotomos2( func,a,b,l,e)
z=1;
A(z)=a;
A(z)=b;

while (b-a)>l
    x1=(a+b)/2 -e;
    x2=(a+b)/2 +e;
    if func(x1)<func(x2)
        A(z+1)=a;
        B(z+1)=x2;
    else
        A(z+1)=x1;
        B(z+1)=b;
    end
 z=z+1; 
   
end

end

και όταν πάω να την καλέσω πχ [a,b]=dixotomos2(@f1,0,4,0.01,0.001) έχοντας φτιάξει φυσικά την f1 κολάει και δεν γίνεται τίποτα. Προφανώς έχω λάθος στην συνάρτηση,αλλα δεν μπορώ να το βρω με τίποτα .Καμιά ιδέα;


Title: Re: Matlab βοηθεια
Post by: il capitano on April 14, 2013, 18:48:19 pm
Έχω την εντύπωση ότι έχει ατέρμων βρόγχο :P

Μέσα στο while δεν αλλάζεις τιμές στα a,b έτσι άπαξ και b-a>l στην αρχή, τότε αυτό θα είναι ίδιο για πάντα...


Title: Re: Matlab βοηθεια
Post by: christineL on April 14, 2013, 18:54:26 pm
Αν δεν βλέπεις μπροστά σου αυτά παθαίνεις. Ευχαριστώ πολύ!!


Title: Re: Matlab βοηθεια
Post by: teslaaaa on April 14, 2013, 21:37:31 pm
ας πάρω το θάρρος να ρωτήσω και εγώ τι πάει στραβά παρακάτω:
Code:
function [ak,bk] = dichotomy_method( l,e,a )

a1=0;
b1=4;

if(a==1)
    while(b1-a1>=l)
        x1=(a1+b1)*0.5-e;
        x2=(a1+b1)*0.5+e;
        if((x1-1)^2+cos(x1)<(x2-1)^2+cos(x2))
            b1=x2;
        else
            a1=x1;
        end;
    end;
            ak=a1;
            bk=b1;
else if(a==2)
    while(b1-a1>=l)
        x1=(a1+b1)*0.5-e;
        x2=(a1+b1)*0.5+e;
        if((x1+4)^0.5+(x1^2-6)*ln(x1+1)<(x2+4)^0.5+(x2^2-6)*ln(x2+1))
            b1=x2;
        else
            a1=x1;
        end;
    end;
ak=a1;
bk=b1;
    end;
end



Title: Re: Matlab βοηθεια
Post by: T--hmmy on April 14, 2013, 21:41:32 pm
ερωτηματικό στο τέλος?


Title: Re: Matlab βοηθεια
Post by: Emfanever on April 14, 2013, 21:43:38 pm
ας πάρω το θάρρος να ρωτήσω και εγώ τι πάει στραβά παρακάτω:
Code:
function [ak,bk] = dichotomy_method( l,e,a )

a1=0;
b1=4;

if(a==1)
    while(b1-a1>=l)
        x1=(a1+b1)*0.5-e;
        x2=(a1+b1)*0.5+e;
        if((x1-1)^2+cos(x1)<(x2-1)^2+cos(x2))
            b1=x2;
        else
            a1=x1;
        end;
    end;
            ak=a1;
            bk=b1;
else if(a==2)
    while(b1-a1>=l)
        x1=(a1+b1)*0.5-e;
        x2=(a1+b1)*0.5+e;
        if((x1+4)^0.5+(x1^2-6)*ln(x1+1)<(x2+4)^0.5+(x2^2-6)*ln(x2+1))
            b1=x2;
        else
            a1=x1;
        end;
    end;
ak=a1;
bk=b1;
    end;
end


Για αρχή βάλε elseif αντί για else if


Title: Re: Matlab βοηθεια
Post by: teslaaaa on April 14, 2013, 21:49:01 pm
δουλεύει! :D
danke!!! ;)
πριν μου έβγαζε ένα κόλλημα σαν αυτό που είχε η κριστινέλ!


Title: Re: Matlab βοηθεια
Post by: T--hmmy on April 14, 2013, 22:08:37 pm
δάσκαλε βάλε ak=0 bk=0 στην αρχή και παίζει και με το else if


Title: Re: Matlab βοηθεια
Post by: teslaaaa on April 14, 2013, 22:13:44 pm
δάσκαλε βάλε ak=0 bk=0 στην αρχή και παίζει και με το else if
όταν το κανα αυτό laggαρε πάλι! ;D


Title: Re: Matlab βοηθεια
Post by: T--hmmy on April 14, 2013, 22:19:01 pm
δάσκαλε βάλε ak=0 bk=0 στην αρχή και παίζει και με το else if
όταν το κανα αυτό laggαρε πάλι! ;D
σε μένα έβγαλε αυτό
Output argument "ak" (and maybe others) not assigned during call
όριζοντας τα ak bk ok.Ίσως δεν τα έβαλες στην αρχή της συνάρτησης,ίσως σε τρολλάρει το matlab  :D


Title: Re: Matlab βοηθεια
Post by: teslaaaa on April 14, 2013, 22:22:16 pm
στην αρχη τα ειχα βαλει
αλλα και χωρις αρχικοποιηση τους,μια χαρα νουμερα βγαζει παλι!
θενξ για την τρολλο-απαντηση παντως! :P


Title: Re: Matlab βοηθεια
Post by: Randall Flagg on April 24, 2013, 11:21:00 am
function [aa,bb] = squarepar(e)
x = [0 1 4];
k=1;
while (x(1,3)-x(1,1))>e
    y = [ eq1(x(1,1)) eq1(x(1,2)) eq1(x(1,3))];
    d=polyfit(x,y,2);
    dd=polyder(d);
    w=roots(dd);
if w>x(1,2)
    if eq1(w)>=eq1(x(1,2))
        x(1,3)=w;
    else
        x(1,1)=x(1,2);
        x(1,2)=w;
    end;
elseif w<x(1,2)
     if eq1(w)>=eq1(x(1,2))
        x(1,1)=w;
     else
         x(1,3)=x(1,2);
         x(1,2)=w;
     end;
else
     if x(1,3)-x(1,2) < x(1,2)-x(1,1)
     w=x(1,2)-e/2;
     if eq1(w)>=eq1(x(1,2))
        x(1,1)=w;
        else
        x(1,3)=x(1,2);
        x(1,2)=w;
     end;
    else
        w=x(1,2) + e/2;
        if eq1(w)>=eq1(x(1,2))
        x(1,3)=w;
       else
        x(1,1)=x(1,2);
        x(1,2)=w;
        end;
    end;
end;
k=k+1;
end;
aa=x(1,1)
bb=x(1,3)
k=k
end


μου βγάζει συνέχεια το ίδιο αποτέλεσμα :-\ έχει κανείς ιδέα τι πάει λάθος;;;


Title: Re: Matlab βοηθεια
Post by: Merlin on April 24, 2013, 11:55:02 am
Έχω το εξής πρόβλημα. Έχω αυτή τη συνάρτηση:

Code:
function [ A ,B] = dixotomos2( func,a,b,l,e)
z=1;
A(z)=a;
A(z)=b;

while (b-a)>l
    x1=(a+b)/2 -e;
    x2=(a+b)/2 +e;
    if func(x1)<func(x2)
        A(z+1)=a;
        B(z+1)=x2;
    else
        A(z+1)=x1;
        B(z+1)=b;
    end
 z=z+1;  
    
end

end

και όταν πάω να την καλέσω πχ [a,b]=dixotomos2(@f1,0,4,0.01,0.001) έχοντας φτιάξει φυσικά την f1 κολάει και δεν γίνεται τίποτα. Προφανώς έχω λάθος στην συνάρτηση,αλλα δεν μπορώ να το βρω με τίποτα .Καμιά ιδέα;

Τσέκαρε τις τιμές των a και b,την συνθήκη στο while και βάλε ένα άνω όριο επαναλήψεων που να κάνει break την while,πχ με a=0,b=4 και l=0,01 τα x1,x2 => α,β θα αλλάζουν κατά +-e=0,01 οπότε ο βρόχος θα κάνει πολλές επαναλήψεις.Βάλε πχ

n = 100
while ()
....
if (k==n)
    break  
end
...
end


Title: Re: Matlab βοηθεια
Post by: teslaaaa on April 29, 2013, 23:09:21 pm
Code:
function X = newton_stathero( x0,y0,e,gk,df,d2f )
%Είσοδος:(x0,y0)το αρχικό σημείο
%e->η σταθερά τερματισμού ε
%το βήμα γκ->εδώ σταθερό
%df->to grad tis f pou thelo na elaxistopoihso->apo cmw
%d2f->o essianos tis f os jacobian(df,v) opou v=[x,y]

k=1;
syms x y;
grad=subs(df,{x,y},{x0,y0});
%ypologismos arxikis timis gia na ksekinisei o algorithmos
%df diastaseis 1x2
%d2f diastaseis 2x2



while norm(grad)>e
    disp(norm(grad));
    grad=subs(df,{x,y},{x0,y0});%se kathe bima
    ess=subs(d2f,{x,y},{x0,y0});% 2x2
    i=inv(ess);%2x2
    dk=-i.*[grad(1);grad(2)];%(2x2)*(2x1)=(2x1)
    x0=x0+gk.*dk(1);
    y0=y0+gk.*dk(2);
    k=k+1;
end;
X(1)=x0;
X(2)=y0;
X(3)=k;


end

ενω προσπαθω να τα χω καλα με τις διαστασεις μου βγαζει αυτο:
??? Error using ==> times
Matrix dimensions must agree.

Error in ==> newton_stathero at 22
    dk=-i.*[grad(1);grad(2)];%(2x2)*(2x1)=(2x1)

μπορει κανεις να βρει τι μου διαφευγει?
ευχαριστω! :)

εδιτ:ακυρο,η τελεια εκανε ολη τη ζημια τλκα :D


Title: Re: Matlab βοηθεια
Post by: T--hmmy on April 30, 2013, 16:52:50 pm
teslaaaa trolling


Title: Re: Matlab βοηθεια
Post by: Δον on May 01, 2013, 23:57:42 pm
Xρειάζομαι και γω βοήθεια με το matlab.

Έχω τον κώδικα :

Code:
function m = LevenbergMarquart( f,x0,y0 )

xk=[x0, y0];
gk=0.5;
e=0.01;
k=1;

gradf=jacobian(f);
hessianf=jacobian(gradf);
gradf=matlabFunction(gradf);
d=eig(hessianf);
a=inv(hessianf);
hessianf=matlabFunction(hessianf);
a=matlabFunction(a);
d=matlabFunction(d);


while norm(gradf(xk(1),xk(2)),2)>=e
   
   
    mk=max(d(xk(1),xk(2)))+10*e;
    syms x y;
    dk=[x ; y];
    sol=(hessianf(xk(1),xk(2))+mk*eye(2))*dk+gradf(xk(1),xk(2))';
    [dx ,dy]=solve(sol(1),sol(2));
   
   
    xk=xk+gk*[dx dy]
   
   
    k=k+1;
   
   
   
end

m=xk;

end

Και μου βγάζει το error :

??? Undefined function or method 'norm' for input arguments of type 'sym'.

Error in ==> LevenbergMarquart at 18
while norm(gradf(xk(1),xk(2)),2)>=e
 
Ενώ το norm() στην 1η επανάληψη υπολογίζεται κανονικά, στη 2η με πετάει από τη συνάρτηση.

Εν τω μεταξύ δοκίμασα και "με το χέρι" στο command line του matlab να τρέξω τις ίδιες ακριβώς εντολές, με την ίδια ακριβώς σειρά και μου τρέχει κανονικότατα.

Έχει κανείς καμιά ιδέα τι παίζει  :-\ ???


Title: Re: Matlab βοηθεια
Post by: edenaxas on May 02, 2013, 00:37:31 am
γιατι δεν το τρεχεις σε debug να δεις τι παιζει αναλυτικα?


Title: Re: Matlab βοηθεια
Post by: Merlin on May 02, 2013, 00:53:09 am
Xρειάζομαι και γω βοήθεια με το matlab.

Έχω τον κώδικα :

Code:
function m = LevenbergMarquart( f,x0,y0 )

xk=[x0, y0];
gk=0.5;
e=0.01;
k=1;

gradf=jacobian(f);
hessianf=jacobian(gradf);
gradf=matlabFunction(gradf);
d=eig(hessianf);
a=inv(hessianf);
hessianf=matlabFunction(hessianf);
a=matlabFunction(a);
d=matlabFunction(d);


while norm(gradf(xk(1),xk(2)),2)>=e
   
   
    mk=max(d(xk(1),xk(2)))+10*e;
    syms x y;
    dk=[x ; y];
    sol=(hessianf(xk(1),xk(2))+mk*eye(2))*dk+gradf(xk(1),xk(2))';
    [dx ,dy]=solve(sol(1),sol(2));
   
   
    xk=xk+gk*[dx dy]
   
   
    k=k+1;
   
   
   
end

m=xk;

end

Και μου βγάζει το error :

??? Undefined function or method 'norm' for input arguments of type 'sym'.

Error in ==> LevenbergMarquart at 18
while norm(gradf(xk(1),xk(2)),2)>=e
 
Ενώ το norm() στην 1η επανάληψη υπολογίζεται κανονικά, στη 2η με πετάει από τη συνάρτηση.

Εν τω μεταξύ δοκίμασα και "με το χέρι" στο command line του matlab να τρέξω τις ίδιες ακριβώς εντολές, με την ίδια ακριβώς σειρά και μου τρέχει κανονικότατα.

Έχει κανείς καμιά ιδέα τι παίζει  :-\ ???

Η συνάρτησή σου f, είναι sym, δηλαδή expression, ενώ η Norm δέχεται σαν ορίσματα διανύσματα.Πρέπει με κάποιο τρόπο να περάσεις την κανονική συνάρτηση f μέσα στην συνάρτησή σου.Δηλαδή με κανονικό πεδίο ορισμού,ας πούμε
x = linspace(-1:1:400), αντί για syms x


Title: Re: Matlab βοηθεια
Post by: Δον on May 02, 2013, 10:28:18 am

Η συνάρτησή σου f, είναι sym, δηλαδή expression, ενώ η Norm δέχεται σαν ορίσματα διανύσματα.Πρέπει με κάποιο τρόπο να περάσεις την κανονική συνάρτηση f μέσα στην συνάρτησή σου.Δηλαδή με κανονικό πεδίο ορισμού,ας πούμε
x = linspace(-1:1:400), αντί για syms x

Μααα, μέσα στη norm δεν έχω την f αλλά την gradf συνάρτηση η οποία δεν είναι sym :S


Title: Re: Matlab βοηθεια
Post by: fugiFOX on May 02, 2013, 11:32:22 am
Δεν την έχω δουλέψει αλλά έτσι πως βλέπω τον κώδικα νομίζω και η gradf symbolic ειναι


Title: Re: Matlab βοηθεια
Post by: Δον on May 02, 2013, 11:40:02 am
Δεν την έχω δουλέψει αλλά έτσι πως βλέπω τον κώδικα νομίζω και η gradf symbolic ειναι

Έστω ότι είναι symbolic.
 
Στην 1η επανάληψη της while τρέχει κανονικά! Αυτό είναι που με τρελαίνει.  >:(

Έχω αφήσει μια εντολή χωρίς ερωτηματικό για να βλέπω τι υπολογίζει και στην 1η επανάληψη την υπολογίζει .
Μετά μόλις πάει να υπολογίσει το νέο norm κρασάρει.
Και το δοκίμασα με τον ευκλείδιο τύπο sqrt(χ^2 + y^2) και μου λέει ότι το ge ( >= ) δεν υποστηρίζει και αυτό symbolic. Μα αφού βάζω τιμές(?)!  >:( >:(

(Ευχαριστώ για την ανταπόκριση πάντως :) )


Title: Re: Matlab βοηθεια
Post by: fugiFOX on May 02, 2013, 18:26:59 pm
κάνε debugging by step και δες κάθε φορά τι input μπαίνει.
έτσι θα το βρεις το σφάλμα.

π.χ. όταν ο δείκτης του debugging είναι 1 βήμα πριν το while
τρέξε στο command window to gradf(xk(1),xk(2)),2
και δες τι δίνει ως αποτέλεσμα
(αυτό θα ειναι το input του norm() )


Title: Re: Matlab βοηθεια
Post by: edenaxas on May 02, 2013, 19:23:34 pm
γιατι δεν το τρεχεις σε debug να δεις τι παιζει αναλυτικα?
8))


Title: Re: Matlab βοηθεια
Post by: Δον on May 02, 2013, 22:15:09 pm
γιατι δεν το τρεχεις σε debug να δεις τι παιζει αναλυτικα?
8))

A καλά τώρα το είδα ( σόρρυ   :-\ )

Θα το δοκιμάσω :D


Title: Re: Matlab βοηθεια
Post by: christineL on May 04, 2013, 12:18:32 pm
Πώς γίνεται όταν μια συνάρτηση επιστρέφει ως αποτέλεσμα ένα τεράστιο κλάσμα αυτό να το κάνω έναν απλό αριθμό; Δοκίμασα με FORMAT αλλά δεν γίνεται τίποτα,εκτός και αν το χρησιμοποιώ λάθος.


Title: Re: Matlab βοηθεια
Post by: edenaxas on May 04, 2013, 12:32:39 pm
Πώς γίνεται όταν μια συνάρτηση επιστρέφει ως αποτέλεσμα ένα τεράστιο κλάσμα αυτό να το κάνω έναν απλό αριθμό; Δοκίμασα με FORMAT αλλά δεν γίνεται τίποτα,εκτός και αν το χρησιμοποιώ λάθος.
Τι εννοεις απλο αριθμο?

integer?

ή απλα να τον εκτυπωσεις σε απλο format?


Title: Re: Matlab βοηθεια
Post by: christineL on May 04, 2013, 12:37:32 pm
Το δεύτερο. Απλά να φαίνεται πιο καθαρά ποιος αριθμός είναι και να μην χρειάζεται να κάνω τι διαίρεση του κλάσματος.


Title: Re: Matlab βοηθεια
Post by: edenaxas on May 04, 2013, 12:46:36 pm
disp(sprintf('%.3f', number));

όπου number ο αριθμος σου

αν αλλαξεις το 3 και βαλεις 4 αντι για 3 δεκαδικα θα δειχνει 4


Title: Re: Matlab βοηθεια
Post by: christineL on May 04, 2013, 12:50:46 pm
Ευχαριστώ ευχαριστώ έγινε !  :)


Title: Re: Matlab βοηθεια
Post by: g on August 24, 2013, 15:22:03 pm
Σε έκδοση R2011a σε windows7, εμφανίζεται πρόβλημα στην τιτλοφόρηση γραφήματος στα ελληνικά. Οταν εισάγεται το όνομα, τα γράμματα εμφανίζονται κανονικά αλλά μετά την αποθήκευση της επιλογής βγαίνουν εκείνα τα περίεργα σαν όταν υπάρχει μπέρδεμα με τις κωδικοποιήσεις ...Εχει κανείς καμία ιδέα ?

Πχ

(http://s24.postimg.org/nkd1o0f1x/Capture.jpg)


Title: Re: Matlab βοηθεια
Post by: il capitano on August 24, 2013, 15:54:18 pm
Εκτός απ' τα προφανή, να γράφεις τους τίτλους στα Αγγλικά ή σε Greeklish μπορείς να χρησιμοποιείς τους χαρακτήρες TeX (αν λέγονται έτσι, δεν είμαι και σίγουρος :P)... ftp://ftp.ams.org/pub/tex/doc/amsmath/short-math-guide.pdf στην σελίδα 5..

Αν π.χ. ήθελες να γράψεις:
title('Τίτλος')
γράφεις:
title('\Tau\iota\tau\lambda\omikron\varsigma')

Δεν έχω βρει κάποιον πιο απλό τρόπο, αν και φαντάζομαι ότι θα υπάρχει...


Title: Re: Matlab βοηθεια
Post by: Exomag on August 24, 2013, 17:24:54 pm
Δες και αυτό (http://kb.mit.edu/confluence/pages/viewpage.action?pageId=3907492), μήπως βοηθήσει.


Title: Re: Matlab βοηθεια
Post by: dpa on August 24, 2013, 20:39:47 pm
χρησιμοποίησε τον plot editor
http://www.mathworks.com/help/matlab/creating_plots/adding-axis-labels-to-graphs.html#f0-33426
για να αλλάξεις τον τιτλο στο γράφημα σου.


Title: Re: Matlab βοηθεια
Post by: Sand on December 21, 2013, 17:46:26 pm

Μήπως ξέρει κανείς ποια είναι η αντίστοιχη εντολή του stepinfo για ράμπα; Θέλω ουσιαστικά να βγάλω τον χρόνο ανόδου, τον χρόνο αποκατάστασης και την υπερύψωση από την απόκριση ενός συστήματος.


Title: Re: Matlab βοηθεια
Post by: τσαι-borg on December 21, 2013, 17:59:36 pm
Εχεις κάνει μέσω simulink τα διαγράμματα?
Τεσπά, ένας τρόπος είναι αυτός:
s=tf('s');
accepted=zeros(length(k),1);
for i=1:length(k)
sys(i)=k(i)*(s+0.3)/((s*(s+0.1)*(s+10)));
sysc(i)=feedback(sys(i),1);


S=stepinfo(sysc(i));
tr=S.RiseTime;
ovr=S.Overshoot;



Μη δίνεις σημασία στο k, ήταν μια παράμετρος που χρησιμοποίησα εγώ.


Title: Re: Matlab βοηθεια
Post by: Sand on December 21, 2013, 22:52:19 pm
Εχεις κάνει μέσω simulink τα διαγράμματα?
Τεσπά, ένας τρόπος είναι αυτός:
s=tf('s');
accepted=zeros(length(k),1);
for i=1:length(k)
sys(i)=k(i)*(s+0.3)/((s*(s+0.1)*(s+10)));
sysc(i)=feedback(sys(i),1);


S=stepinfo(sysc(i));
tr=S.RiseTime;
ovr=S.Overshoot;



Μη δίνεις σημασία στο k, ήταν μια παράμετρος που χρησιμοποίησα εγώ.

Ευχαριστώ για την απάντηση. Ναι, έχω τα διαγράμματα μέσω Simulink, γι' αυτό θα με βόλευε περισσότερο κάτι που παίρνει ως όρισμα τα resonse data και την τελική τιμή που θέλω να παίρνει το μέγεθος που μελετάω κάθε φορά. Το lsiminfo(y,t,yfinal) δεν κάνει γι' αυτή την περίπτωση;


Title: Re: Matlab βοηθεια
Post by: teslaaaa on December 22, 2013, 02:12:35 am
Ποια εντολή χρησιμοποιώ για να μετατρέψω ένα συμβολικό σύστημα εξισώσεων σε μορφή πίνακα ?


Title: Re: Matlab βοηθεια
Post by: dpa on December 22, 2013, 13:12:49 pm
http://www.mathworks.com/help/symbolic/equationstomatrix.html


Title: Re: Matlab βοηθεια
Post by: teslaaaa on December 22, 2013, 15:22:43 pm
Και εγώ αυτην είχα βρει αλλά δε μου την αναγνωρίζει ,δν μ τη βγάζει καν στον function browser..καμιά άλλη ιδέα?έχω matlab r2011a


Title: Re: Matlab βοηθεια
Post by: Eru lluvatar on December 22, 2013, 17:00:44 pm
μπορείς να κάνεις και το ανάποδο αφού δεν την έχει στο r2011
http://www.mathworks.ch/ch/help/symbolic/subs.html


Title: Re: Matlab βοηθεια
Post by: dpa on December 23, 2013, 02:13:27 am
Και εγώ αυτην είχα βρει αλλά δε μου την αναγνωρίζει ,δν μ τη βγάζει καν στον function browser..καμιά άλλη ιδέα?έχω matlab r2011a
Σωστά,την αναφέρει στο R2013...
http://www.mathworks.com/help/symbolic/equationstomatrix.html
δες αυτό:
είναι BSD License:
http://www.mathworks.com/matlabcentral/fileexchange/29889-equation-to-matrix-form
Equation to matrix form

by Jon André Adsersen

 

02 Jan 2011

Function that converts a symbolic linear equation to vector form.
νομίζω ότι δεν θα έχει πρόβλημα στο R2011


Title: Re: Matlab βοηθεια
Post by: teslaaaa on December 23, 2013, 16:20:19 pm
Και εγώ αυτην είχα βρει αλλά δε μου την αναγνωρίζει ,δν μ τη βγάζει καν στον function browser..καμιά άλλη ιδέα?έχω matlab r2011a
Σωστά,την αναφέρει στο R2013...
http://www.mathworks.com/help/symbolic/equationstomatrix.html
δες αυτό:
είναι BSD License:
http://www.mathworks.com/matlabcentral/fileexchange/29889-equation-to-matrix-form
Equation to matrix form

by Jon André Adsersen

 

02 Jan 2011

Function that converts a symbolic linear equation to vector form.
νομίζω ότι δεν θα έχει πρόβλημα στο R2011
thanx θα το δοκιμάσω! :)

μπορείς να κάνεις και το ανάποδο αφού δεν την έχει στο r2011
http://www.mathworks.ch/ch/help/symbolic/subs.html
θενξ και σε σένα που απάντησες :)


Title: Re: Matlab βοηθεια
Post by: Tracy_McGrady on December 13, 2015, 17:47:23 pm
Υο,
ξέρει κανεις αν μπορώ να βρώ κάποιο package απο την matlab στο διαδίκτυο...θελω χρηση webcam αλλά δε το έχει και πρέπει να το κατεβάσω με mathwork account.


Title: Re: Matlab βοηθεια
Post by: teslaaaa on December 13, 2015, 18:43:36 pm
Υο,
ξέρει κανεις αν μπορώ να βρώ κάποιο package απο την matlab στο διαδίκτυο...θελω χρηση webcam αλλά δε το έχει και πρέπει να το κατεβάσω με mathwork account.
openCV :D


Title: Re: Matlab βοηθεια
Post by: Μουργόλυκος on December 13, 2015, 18:50:27 pm
Πως λυνουμε την [tanh(x)]^2=a+jb? a, b γνωστά


Title: Re: Matlab βοηθεια
Post by: vlad on December 13, 2015, 19:00:52 pm
Πως λυνουμε την [tanh(x)]^2=a+jb? a, b γνωστά
syms x;
solve(tanh(x)*tanh(x)==a+bj,x);


Title: Re: Matlab βοηθεια
Post by: ioanoiko on March 31, 2016, 14:06:19 pm
Κατέβασα το matlab R2016 και μόλις πατάω να κάνει setup μου βγάζει : "Error finding installer class. An exception occured while looking for class." Τί φάση?


Title: Re: Matlab βοηθεια
Post by: Apostolof on March 31, 2016, 18:37:29 pm
Κατέβασα το matlab R2016 και μόλις πατάω να κάνει setup μου βγάζει : "Error finding installer class. An exception occured while looking for class." Τί φάση?

Μήπως έχεις ελληνικά γράμματα στο path σου;


Title: Re: Matlab βοηθεια
Post by: ioanoiko on April 01, 2016, 14:43:01 pm
Μήπως έχεις ελληνικά γράμματα στο path σου;

χίλια ευχαριστώ!! στο path το όνομα του user ήταν στα ελληνικά!!