Legolas Δημοσ. 24 Μαρτίου 2011 Δημοσ. 24 Μαρτίου 2011 εχω ενα προβλημα ενα ενα πινακα που με τον αριθμο 1 ειναι οι αντρες και το 2 γυναικες... κ διπλα εχει βαρος...π.χ 1 56 1 50 2 72 2 55 1 34 2 56 θελω να εμφανισω σε μια plot, με κοκκινο χρωμα τα βαρη των αντρων και με μπλε των γυναικων... καμια βοηθεια ? πρεπει να αποθηκευσω σε ενα πινακα τους αντρες ξεχωριστα και τις γυναικες αλλου αλλα πως γινεται ?
insomniaK Δημοσ. 24 Μαρτίου 2011 Δημοσ. 24 Μαρτίου 2011 πολύ αδύνατους άντρες έχεις > sample = [1 56 1 50 2 72 2 55 1 34 2 56]; ind_male = find(sample(:,1)==1); male = sample(ind_male,2); ind_female = find(sample(:,1)==2); female = sample(ind_female,2); figure, hold on plot(male,'b') plot(female,'r') hold off Υπάρχει και μία ελαφρά γρηγορότερη λύση, αλλά αυτή είναι πιο κατανοητή.
Legolas Δημοσ. 24 Μαρτίου 2011 Μέλος Δημοσ. 24 Μαρτίου 2011 ειναι αδυνατα ειναι παιδια δημοτικου ενω τα κοριτσια λυκειου χαχαχ ευχαριστω πολυ, το εβγαλα και με αλλο τροπο αλλα θα κρατησω το δικο σου να σου πω μιας και εισαι καλος..... θελω να γραψω μια συναρτηση σε m.file και αφου του δινω τα στοιχεια του πινακα να μου επιστρεφει το δευτερο μεγαλυτερο (θα δινω διαφορετικα στοιχεια καθε φορα, δεν ειναι δεδομενα δηλαδη απο την αρχη)
insomniaK Δημοσ. 24 Μαρτίου 2011 Δημοσ. 24 Μαρτίου 2011 1. αυτό που θες να κάνεις γενικά ονομάζεται function, διαβάζεις εδώ και πράττεις, είναι εύκολο. Τυχούσες απορίες τις ρωτάς εδώ. 2. ειδικά δεν κατάλαβα τι θες να κάνεις. Το ζητούμενο είναι η δεύτερη υψηλότερη τιμή βάρους; Αν ναι, χρησιμοποίησε τη sort με descending και στο αποτέλεσμα της να παίρνεις τη δεύτερη τιμή. Και πάλι τις απορίες σου, τις ρωτάς εδώ. Θαυμασμός: 72 κιλά η 16χρονη;;; Μάνα της τα μαστάρια της... Υ.Γ. Δε γράφω την απάντηση ξεκάθαρα, διότι πολλές φορές έχουμε κράξει κόσμο που ζητάει έτοιμες λύσεις και δεν είναι δίκαιο να έχουμε διαφορετική συμπεριφορά απέναντι στους συμφορουμίτες.
Legolas Δημοσ. 24 Μαρτίου 2011 Μέλος Δημοσ. 24 Μαρτίου 2011 οχι καμια σχεση με το πρωτο ερωτημα μου θελω την ενολη για το m file ωστε οταν το φτιαξω να δηλωνω απο το matlab το πινακα και να εμφανιζει το δευτερο μικροτερο...σαν να λεμε "δηλωσε πινακα" και να δηλωνω εγω 5 8 25 1 4 87 κλπ κλπ και να εμφανιζει το 4 αφου ειναι ο δευτερος μικροτερος τη συνεχεια την ξερω μετα παταω y=unique(x) x ειναι ο πιναακας...οποτε ο πινακας φτιαχτηκε απο το μικροτερο στο μεγαλυτερο... κ κανω y(1,2) και εμφανιζεται ο δευτερο μικροτερος
insomniaK Δημοσ. 24 Μαρτίου 2011 Δημοσ. 24 Μαρτίου 2011 Στον φάκελο που εργάζεσαι, θα σώσεις αυτό που είναι μέσα στα code με όνομα: ntirintahata.m > function [output] = ntirintahata(A) A = sort(A); output = A(2); Μετά, πρέπει να βάζεις έναν array (μονοδιάστατος πίνακας) Α με τα δεδομένα σου και θα καλεις την ntirintahata, όπως όποια άλλη εντολή της matlab.
Legolas Δημοσ. 24 Μαρτίου 2011 Μέλος Δημοσ. 24 Μαρτίου 2011 αν εννοεισ οτι παω στο matlab και παταω ntirintahata(5 7 34 95 1 5 65 24) τοτε μου βγαζει σφαλμα
insomniaK Δημοσ. 24 Μαρτίου 2011 Δημοσ. 24 Μαρτίου 2011 Το σωστό είναι με [...] >ntirintahata([5 7 34 95 1 5 65 24]) Εγώ θα το έγραφα ως >Α = [5 7 34 95 1 5 65 24] Β = ntirintahata(Α) Αν δεν πεις και τι σφάλμα βγάζει, δε γίνεται να βοηθήσουμε.
Legolas Δημοσ. 25 Μαρτίου 2011 Μέλος Δημοσ. 25 Μαρτίου 2011 ναι εχεις δικιο... ξεχναγα τις αγκυλες...δουλευει αδερφιαααααααααααααα ευχαριστω πολυ...κανενας οδηγος για αρχαριους υπαρχει σε pdf ελληνικα?
Timonkaipumpa Δημοσ. 25 Μαρτίου 2011 Δημοσ. 25 Μαρτίου 2011 οχι καμια σχεση με το πρωτο ερωτημα μου θελω την ενολη για το m file ωστε οταν το φτιαξω να δηλωνω απο το matlab το πινακα και να εμφανιζει το δευτερο μικροτερο...σαν να λεμε "δηλωσε πινακα" και να δηλωνω εγω 5 8 25 1 4 87 κλπ κλπ και να εμφανιζει το 4 αφου ειναι ο δευτερος μικροτερος Αυτό που ζητάς μπορείς να το κάνεις με τον εξής κώδικα: >function A = testF(varargin) A = []; for i = 1:length(varargin) A = [A varargin{i}]; end A = sort(A); A = A(2); end Λειτουργεί και με τις εξής εντολές: > A = [1 2 3]; B = [5 6 7]; C = [8 9 10]; S = testF(A, B, C) Αλλά και με: > S = testF(10, 5, 11, 20, 32)
Legolas Δημοσ. 26 Μαρτίου 2011 Μέλος Δημοσ. 26 Μαρτίου 2011 αντι για sort εβαλα unique το ιδιο βγσζει... για να βρω τον δευτερο μεγιστο υπαρχει εντολη που να το βαζει απο μεγαλυτερο σε μικροτερο ?
Timonkaipumpa Δημοσ. 26 Μαρτίου 2011 Δημοσ. 26 Μαρτίου 2011 αντι για sort εβαλα unique το ιδιο βγσζει... για να βρω τον δευτερο μεγιστο υπαρχει εντολη που να το βαζει απο μεγαλυτερο σε μικροτερο ? Τι εννοείς που να το βγάζει από μεγαλύτερο σε μικρότερο; Αυτό ακριβώς κάνει η sort. Ταξινομεί τα δεδομένα κατά αύξουσα ή φθίνουσα σειρά. Δεν ξέρω εάν λειτουργεί το indexing κατευθείαν στη sort, δλδ: (sort(a))(2) Που δεν το κόβω... χλωμό το βρίσκω. Μία δοκιμή θα σε πείσει όμως.
Legolas Δημοσ. 27 Μαρτίου 2011 Μέλος Δημοσ. 27 Μαρτίου 2011 οκ σε ευχαριστω πολυ αρχηγε... κατι αλλο τωρα... εχω ενα πινακα με 100 στοιχεια κ θελω να βρω το μικροτερο αριθμο(ο πινακας περιεχει τα βάρη των μαθητων) εχω γραψει λοιπον y=length(A) (A o πινακας με τα στοιχεια για να βρω ποσα στοιχεια εχει και μετα) for i=1:1:y data(y+1,3)=500; (εθεσα ενα μεγαλο αριθμο γτ αποκλειται ενας μαθητης να ειναι 500 κιλα αρα αποκλιεται να γινει ελαχιστο βαροσ αυτο) if data(i,3)< data(i+1,3) (το 3 ειναι επιδη τα βάρη βρισκοντε στη τριτη στηλη) elaxBar= data(i,3) end ειναι λαθος το ξερω επειδη μου εμφανιζει καθε φορα ολα τα βαρη σαν elaxBar ******edit βρηκα τις εντολες max(x) και min(x) που δινουν κατευθειαν το μεγιστο κ ελαχιστο.... αλλος τροπος υπαρχει ομως? (κανω ασκηση κ ρωταω σε περιπτωση που ρωτησουν...)
marios_geo Δημοσ. 27 Μαρτίου 2011 Δημοσ. 27 Μαρτίου 2011 Min_weight=1e6; y=length(A); for I=1:y if data(I,3)<Min_weight Min_weight=data(I,3); end end Πάντως δεν είναι καλό να χρησιμοποιείς την matlab με αυτό τον τρόπο. Είναι πολύ αργή. Όταν υπάρχει ενσωματομενη συνάρτηση για αυτή τη δουλεία, να τη χρησιμοποιείς.
Legolas Δημοσ. 27 Μαρτίου 2011 Μέλος Δημοσ. 27 Μαρτίου 2011 ευχαριστω πολυ.... το εκανα με max και min κατι τελευταιο γιατι σας ζαλισα κιολας.... εχω δυο πινακες ενας που εχει αριθμους μικροτερους του 100 κ εναν που εχει και μικροτερους κ μεγαλυτους του εκατο...(αυτα σε ενα αρχειο *.mat) θελω οταν οι αριθμοι ειναι μικροτεροι του εκατο να βγαζει αποτελεσμα 0 ενω οταν ειναι μεγαλυτεροι του εκατο να βγαζει τον μεγαλυτερο αριθμο που ειναι μικροτερος του 100 δηλαδη σε ενα π.χ [ 23 102 54 75 34 125 345] να εμφανισει το 75
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.