|
|
|
Ziffern aus einer Zahl filtern und in Vektor schreiben |
|
| Suchender |

Forum-Anfänger
|
 |
Beiträge: 19
|
 |
|
 |
Anmeldedatum: 13.04.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 14.04.2013, 20:04
Titel: Ziffern aus einer Zahl filtern und in Vektor schreiben
|
 |
Hallo,
ich möchte Ziffern aus einer Zahl herausfiltern und dann in einen Zeilenvektor schreiben. In dem Beispiel unten ist f die gegebene Zahl und r der Zeilenvektor, in dem die Ziffern rein sollen.
Am Ende möchte ich also den Vektor:
Ich bekomme aber
Was muss ich machen?
Danke
|
|
|
|
|
|
| Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 14.04.2013, 23:50
Titel: Re: Ziffern aus einer Zahl filtern und in Vektor schreiben
|
 |
Hallo Suchender,
num2str() macht aus der Zahl einen String aus ASCII-Zeichen hierbei hat '0' den ASSCII-Code 48, und '1' die 49.
Nun schlage ich vor, mal kurz nachzudenken: Du hast r=[49 50 51 52 53], suchst aber nach r=[ 1 2 3 4 5 ]. Wie könnte man das schaffen?
Der Umweg über einen String ist nicht wirklich elegant. Schönner ist es, man bleibt bei Zahlen.
Das sieht bestimmt etwas verwirrend aus. Aber wenn man Stück für Stück begriffen hat, was es macht, ist es sehr logisch und man hat eine Menge Matlab gelernt.
Gruß, Jan
|
|
|
|
| Suchender |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 19
|
 |
|
 |
Anmeldedatum: 13.04.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 15.04.2013, 12:01
Titel:
|
 |
Danke, ich werde mich damit auseinandersetzen.
|
|
|
|
| Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 15.04.2013, 16:51
Titel:
|
 |
Hallo Suchender,
Wenn Du versprichst, dass Du Dich mit der FLOOR(REM())-Wurst auseinandersetzt, verrate ich noch den Trick, wie man dies so löst, dass Matlab genau das gleiche intern macht:
Das sieht zwar knuffig aus, aber wieso ein DOUBLE Vektor herauskommt, wenn man zwei CHAR-Vektoren (auch "Strings" genannt) von einander subtrahiert, ist nicht wirklich klar. Deswgen sollte dies einen Programmieranfänger eigentlich mehr verwirren. Macht es aber gar nicht, oder?
Gruß, Jan
|
|
|
|
| Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 25.04.2013, 08:39
Titel:
|
 |
Hallo,
Nach einer Rückfrage per PN:
Dies macht folgendes:
1. SPRINTF wandelt die Zahl in den String '12345' um.
2. Ein String ist ein [1 x N] Vektor von Typ CHAR.
3. Die CHAR-Werte sind nach ASCII kodiert, also '0' ist 48 usw.
4. Wenn man in Matlab nun CHAR-Werte von einander abzieht, wird das Ergebnis aus Gründen der rückwärtskompatibility automatisch in den Typ DOUBLE umgewandelt. Dann:
5. CHAR sind eigentlich UINT16 Werte, die also statt nur ASCII von 0 bis 127 auch UNICODE Codes bis 2^16-1 darstellen können. Das spielt hier jedoch keine Rolle.
Gruß, 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.
|
|