|
|
Vektoren mit Schleifen spiegeln (ohne fliplr, etc) |
|
Genzo Yo! |

Forum-Anfänger
|
 |
Beiträge: 11
|
 |
|
 |
Anmeldedatum: 23.09.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 23.09.2014, 18:13
Titel: Vektoren mit Schleifen spiegeln (ohne fliplr, etc)
|
 |
Hallo Leute,
ich habe folgendes Problem. Mein Dozent besteht immer darauf, dass wir Befehle wie max(), min(), sort(), find() vermeiden sollen. Wir sollen es mit Schleifen versuchen.
Bsp. für Maximum eines Vektors.
Nun soll ich einen Vektoren umdrehen. Also quasi spiegeln, sodass die letzte Zahl die erste im neuen Vektor wird, usw.
Dies dann eben ohne Standard-Befehle wie fliplr(V) oder V(end:-1:1).
Könnt ihr mir da vielleicht weiterhelfen?
_________________
Bäm!
|
|
|
|
|
DSP |

Forum-Meister
|
 |
Beiträge: 2.117
|
 |
|
 |
Anmeldedatum: 28.02.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2014b
|
 |
|
|
 |
|
Verfasst am: 23.09.2014, 18:21
Titel:
|
 |
Wie tauscht man denn 2 Werte ein einem array? Einen Wert zwischenspeichern, Platz tauschen und dann den Zwischenspeicher an die andere Stelle im array.
Das wäre eine Lösung...
|
|
|
Genzo Yo! |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 11
|
 |
|
 |
Anmeldedatum: 23.09.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 23.09.2014, 18:38
Titel:
|
 |
Könntest du mir bitte ein Beispiel geben?
_________________
Bäm!
|
|
|
DSP |

Forum-Meister
|
 |
Beiträge: 2.117
|
 |
|
 |
Anmeldedatum: 28.02.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2014b
|
 |
|
|
 |
|
Verfasst am: 23.09.2014, 18:43
Titel:
|
 |
Ehrlich gesagt nein...das ist so eine einfache Aufgabe, die man allein schon mit google lösen kann. Es muss nicht unbedingt in Matlab sein, aber diese Aufgabe ist eine typische Anfängeraufgabe in allen Programmiersprachen.
Mit einem Bsp. ist dir nicht geholfen bzw. du lernst nicht viel.
Mach mal bitte selbst einen Code-Vorschlag. Dann wird dir sicherlich weitergeholfen. Das Forum ist auch nicht dazu da deine Hausaufgaben zu lösen, sondern Hilfestellung zu geben.
Ich finde mein Hinweis ist schon sehr hilfreich
|
|
|
Genzo Yo! |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 11
|
 |
|
 |
Anmeldedatum: 23.09.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 23.09.2014, 18:51
Titel:
|
 |
Naja hier gibt es Beiträge, bei denen jemand fragt wie der Befehl fürs Spiegeln ist und die Antwort ist dann "fliplr"
Und ich setze mich erst seit kurzem mit Matlab auseinander und versuche Schritt für Schritt neue Sachen zu lernen. Nun weis ich leider nicht wie ich dieses Problem löse und dachte mir "Hey, da gibt es ein Forum. Vllt können Sie dir kurz helfen"
Wenn es doch so einfach ist, warum kannst du mir nicht kurz helfen?
_________________
Bäm!
|
|
|
DSP |

Forum-Meister
|
 |
Beiträge: 2.117
|
 |
|
 |
Anmeldedatum: 28.02.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2014b
|
 |
|
|
 |
|
Verfasst am: 23.09.2014, 18:56
Titel:
|
 |
Ich habe dir sehr wohl geholfen! Du willst aber gleich eine Lösung. Das ist der Unterschied.
|
|
|
Genzo Yo! |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 11
|
 |
|
 |
Anmeldedatum: 23.09.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 23.09.2014, 19:06
Titel:
|
 |
Hallo DSP,
zersteinmal muss ich dir danken, dass du dich doch dazu durchringen konntest mir zu helfen!
Aber:
Was du mir nun geschrieben hast, ist nicht die Antwort auf meine Lösung. Ich wollte nun nicht nur 2 Elemente tauschen. Das hätte ich noch hinbekommen.
Es geht mir darum, dass aus
V = [ 8 3 4 2 2 16 2 1]
eben
V1 = [1 2 16 2 2 4 3 8] wird.
Anders gesagt, wenn ich einen sehr langen Vektor habe, bei dem es sich nicht lohnt alle Elemente einzeln zu tauschen. Welche Schleife hilft mir dann, diesen Vektor zu spiegeln, bzw zu drehen? Ohne nun fliplr(V) zu verwenden.
_________________
Bäm!
|
|
|
DSP |

Forum-Meister
|
 |
Beiträge: 2.117
|
 |
|
 |
Anmeldedatum: 28.02.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2014b
|
 |
|
|
 |
|
Verfasst am: 23.09.2014, 19:10
Titel:
|
 |
Das ist mir sehr wohl bewusst. Aber nochmal...Hilfestellung immer gern, Komplettlösung für Hausaufgaben nein.
Mit diesem Vorschlag ist es sehr wohl möglich mit einer for Schleife das ganze für den kompletten Array zu realisieren. Du musst nur den Code vom maximum im 1. Post mit meinem kombinieren.
|
|
|
Genzo Yo! |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 11
|
 |
|
 |
Anmeldedatum: 23.09.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 23.09.2014, 19:26
Titel:
|
 |
Wie gesagt, ich bin noch nicht lange bei Matlab dabei. Falls das hier kompletter Bullshit ist, entschuldige ich mich.
Meine Idee wäre nun
Dass das nun so nicht stimmt, ist mir durchaus bewusst. Ich wollte nur wissen ob die Grundidee vom Prinzip her okay ist.
Also mein Vektor hat eine gewisse Länge. Ich mache das ganze natürlich nur bis zur Hälfte des Vektors, da dort dann die bereits gedrehten Werte kommen.
_________________
Bäm!
|
|
|
Genzo Yo! |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 11
|
 |
|
 |
Anmeldedatum: 23.09.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 23.09.2014, 19:28
Titel:
|
 |
Bzw.:
_________________
Bäm!
|
|
|
DSP |

Forum-Meister
|
 |
Beiträge: 2.117
|
 |
|
 |
Anmeldedatum: 28.02.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2014b
|
 |
|
|
 |
|
Verfasst am: 23.09.2014, 19:33
Titel:
|
 |
Das ist doch schon fast die Lösung. Es ist aber sinnvoller statt
Außerdem denk mal darüber nach ob es einen Unterschied macht, wenn V eine gerade oder ungerade Anzahl an Elementen hat.
|
|
|
Genzo Yo! |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 11
|
 |
|
 |
Anmeldedatum: 23.09.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 23.09.2014, 19:41
Titel:
|
 |
Was meinst du mit "sinnvoller"?
Was war nun an meiner Lösung an dem "length" unvorteilhaft?
Ich habe es nun mal ausprobiert. Es macht logischerweise keinen Unterschied.
Bei einem ungeraden Vektor ist es ja nun egal ob die mittlere Zahl gedreht wird. Da sie sich auf der Stelle dreht.
_________________
Bäm!
|
|
|
DSP |

Forum-Meister
|
 |
Beiträge: 2.117
|
 |
|
 |
Anmeldedatum: 28.02.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2014b
|
 |
|
|
 |
|
Verfasst am: 23.09.2014, 20:05
Titel:
|
 |
Da du mit length(V) immer wieder die Funktion length benutzen musst. Das ist bei solchen trivialen Schleifen kein Problem, aber dennoch unnötig.
Wenn length(V) = 9 -> (length(V)/2) = 4.5
Du hast Glück das Matlab beim Schleifenkopf dir Arbeit erspart. In anderen Programmiersprachen könnte das schon Probleme bereiten. Außerdem ist es unnötig das mittlere Element zu drehen, weshalb man es auch gleich unterbinden kann
|
|
|
Genzo Yo! |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 11
|
 |
|
 |
Anmeldedatum: 23.09.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 23.09.2014, 20:19
Titel:
|
 |
Ah, alles klar!
Vielen Dank für deine Hilfe DSP!
_________________
Bäm!
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|