|
|
Strings per for-Schleife zusammenfügen |
|
Hector |

Forum-Newbie
|
 |
Beiträge: 4
|
 |
|
 |
Anmeldedatum: 25.09.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 25.09.2013, 18:02
Titel: Strings per for-Schleife zusammenfügen
|
 |
Ein freundliches Hallo
Ich versuche etwas zu programmieren, was mir aus einem Buchstabensalat ein wirkliches Wort gibt.
Also gegeben ist eine zufällige 3x3 Zellen-Matrix "bsp" gefüllt mit Buchstaben.
Mit der for-Schleife greife ich die 1.Zeile ab und "matt" sieht dann aus wie:
.
Damit ich nun aber wirklich nach " 'abi ' " suchen kann, muss ich ja die einzelnen Zellen zusammenfügen, was ich manuell gemacht habe. Aber das kann ja nicht im Sinne des programmierens sein
MfG,
Hector
|
|
|
|
|
markuman |

Forum-Guru
|
 |
Beiträge: 320
|
 |
|
 |
Anmeldedatum: 14.12.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 2013a/2013b, Octave 3.6.4, 3.7.7
|
 |
|
|
 |
|
Verfasst am: 25.09.2013, 18:37
Titel:
|
 |
Aber ich glaube strjoin gibt es erst seit 2013a?
Kannst du dir aber auch selber bausteln
Funktioniert dann so:
Und komplett ohne Schleife (ohne ist immer besser) und ohne weiteren Funktionen kannst du das Wort auch direkt aus der bsp Zelle extrahieren.
_________________
DIY OR DIE
entropie=char(floor(94*rand(1, round(100.*rand)) + 32))
https://github.com/markuman
|
|
|
Hector |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 4
|
 |
|
 |
Anmeldedatum: 25.09.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 25.09.2013, 19:31
Titel:
|
 |
(ja, habe nur 2012b), aber wow.. danke markuman!
an eine extra Funktion habe ich auch gedacht, aber wusste nicht wie.
ist natürlich.. clever..
das ich " : " derart in den eckigen Klammern (im Umgang mit Strings) verwenden kann, dass es sie so schön aneinanderreiht, das wir mir bisher nicht klar.
Vielen Dank! nur..
warum?
Wenn ich genau das Gleiche mache mit einem skalaren Zeilenvektor, dann werden alle Einträge senkrecht ausgegeben
daher hätte ich gedacht, dass mir " [in{:}] " die Buchstaben auch untereinander ausgibt.
|
|
|
markuman |

Forum-Guru
|
 |
Beiträge: 320
|
 |
|
 |
Anmeldedatum: 14.12.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 2013a/2013b, Octave 3.6.4, 3.7.7
|
 |
|
|
 |
|
Verfasst am: 25.09.2013, 22:28
Titel:
|
 |
Hector hat Folgendes geschrieben: |
Wenn ich genau das Gleiche mache mit einem skalaren Zeilenvektor, dann werden alle Einträge senkrecht ausgegeben
daher hätte ich gedacht, dass mir " [in{:}] " die Buchstaben auch untereinander ausgibt. |
Die eckigen Klammern werden für Vektoren und Matrizen verwendet. Siehe auch http://www.mathworks.de/de/help/matlab/ref/specialcharacters.html
Macht also nicht viel Sinn was du da versuch hast.
Untereinander funktioniert so:
_________________
DIY OR DIE
entropie=char(floor(94*rand(1, round(100.*rand)) + 32))
https://github.com/markuman
|
|
|
Hector |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 4
|
 |
|
 |
Anmeldedatum: 25.09.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 26.09.2013, 01:25
Titel:
|
 |
ah, bei der letzten Frage haben wir etwas an uns vorbei geschrieben. habe mein Verständnisproblem auf folgendes reduziert:
Warum wird
praktischerweise waagerecht ausgegeben (damit ich z.B. "strcmp" benutzen kann), während
(normal, gemäß dem Doppelpunkt Operator, was er immer tut) senkrecht ausgegeben??
(ich vermute ich habe da eine Wissenlücke was Cell-Arrays angeht)
EDIT: ah, denke habe verstanden.. simple Lösung/Tatsache:
weil character arrays einfach immer horizontal im output erscheinen?!
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 26.09.2013, 09:15
Titel:
|
 |
Hallo Hector,
Mit "[matt{:}]" wird zunächst die innere Referencierung durchgeführt, wobei die geschweiften Klammern die Elemente aus dem Cell Array extrahieren:
Der [ ] operator ist dabei identisch zum horzcat Befehl, er verkettet also die enthaltenen Vektoren order Arrays horizontal. Bei scalaren CHARs oder Strings (also CHAR-Vektoren) kommt dabei ein String heraus.
"[matt(:)]" ist etwas ganz anderes. Hier wird zunächst das Cell-Array in einen Spalten-Vektor "reshaped":
Nun führt der HORZCAT-Befehl zu keiner Veränderung, weil alle enthaltenen Elemente nur noch die Breite 1 haben. Also bekommt man als Ergebnis ein {3 x 1} cell string, eben:
Zitat: |
EDIT: ah, denke habe verstanden.. simple Lösung/Tatsache:
weil character arrays einfach immer horizontal im output erscheinen?! :idea: |
Nein. Character-Arrays werden genauso behandelt wie andere Arrays auch, bis darauf, dass Mutli-dimensionale CHAR Arrays nur begrenzt sinnvoll sind.
Gruß, Jan
|
|
|
Hector |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 4
|
 |
|
 |
Anmeldedatum: 25.09.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 26.09.2013, 18:57
Titel:
|
 |
ein großes aahhhhh...
das hat mir sehr im Verständnis zu Zellen und Strings geholfen.
Danke Jan
|
|
|
|
|
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.
|
|