|
JN78 |

Forum-Fortgeschrittener
|
 |
Beiträge: 69
|
 |
|
 |
Anmeldedatum: 18.05.09
|
 |
|
 |
Wohnort: Stuhr
|
 |
|
 |
Version: R2010b, R2011a
|
 |
|
|
 |
|
Verfasst am: 10.08.2010, 13:05
Titel: Problem mit cat
|
 |
|
 |
|
Hallo,
ich hab folgendes Problem:
Ich habe einige hundert Variablen/Vektoren die ich zusammenfügen möchte.
Der Namen baut sich wie folgt auf: "file1_spalte_1", "file1_spalte2", etc. insgesamt gibt es in dieser Form jede Menge Files mit jeweils den Spalten 1-248, ich hoffe es ist verständlich wie ich das meine.
Ich möchte nun gerne die einzelnen Spalten zusammenfassen, damit ich mir das besser plotten lassen kann. Also alle "Spalten1" zusammengefasst, alle "Spalten26" usw.
Es sollte in der Art c = [a;b] ja klappen, ich hab das dann in form einer Schleife realisieren wollen:
Zitat: |
Fehlermeldung:
??? Error using ==> vertcat
CAT arguments dimensions are not consistent.
Error in ==> test at 3
assignin('base',['spalte_',num2str(i)], ['file',num2str(n),'_spalte',num2str(i); 'file',num2str(n+1),'_spalte',num2str(i)]);
|
Die Dimensionen der Variablen sind identisch!
Hat jemand einen Lösungsvorschlag?
Gruß Jan
Edit by denny: Bitte die Code-Formatierung verwenden. Danke!
|
|
|
|
|
denny |

Supporter
|
 |
Beiträge: 3.853
|
 |
|
 |
Anmeldedatum: 14.02.08
|
 |
|
 |
Wohnort: Ulm
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 10.08.2010, 14:58
Titel:
|
 |
Hallo
du muss aufpassen, du hast unterschiedliche Anzahl von Ziffern, dass du zusammenfassen willst.
so läuft es durch:
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 10.08.2010, 18:24
Titel: Re: Problem mit cat
|
 |
Hallo Jan 78,
Ich rate sehr gerne von ASSIGNIN (und EVAL) ab. Hier ein weitere Grund dafür:
JN78 hat Folgendes geschrieben: |
|
Was möchtest Du erreichen? ASSIGNIN verschleiert das so gut, dass man leicht aus den Augen verliert, was eigentlich passiert:
Zunächst erzeugst Du ein CHAR Array, wobei eine Fehlermeldung erscheint, weil die beiden Zeilen unterschiedlich lang sind, falls n und n+1 unterschiedlich viele Ziffern haben:
Für n=1 läuft es aber. Das CHAR Array ist dann:
Dieses CHAR Array wird dann per ASSIGNIN im Base-Workspace der Variablen "spalte_1" zugewiesen.
Möchtest Du das? Oder soll "spalte_1" andere Werte enthalten? Aus dem Programm wird das nicht ersichtlich.
Deshalb, ich wiederhole mich ja ganz gerne, rate ich ausdrücklich von ASSIGNIN (und EVAL, EVALIN und anderen Code-Obfustcation-Techniken) ab.
Gruß, Jan
|
|
|
JN78 |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 69
|
 |
|
 |
Anmeldedatum: 18.05.09
|
 |
|
 |
Wohnort: Stuhr
|
 |
|
 |
Version: R2010b, R2011a
|
 |
|
|
 |
|
Verfasst am: 10.08.2010, 22:45
Titel:
|
 |
Hallo Jan,
also ich möchte eigentllich die verschiedenen Inhalte von "filex_spalte_1" in "spalte1" schreiben, dann eins weiterzählen und wieder die inhalte der variablen "filex_spalte_y" in dementsprechend "spalte_y" schreiben.
wenn nicht assignin, was sollte ich denn dann besser nehmen. von eval bin ich nun weg, dank deiner hinweise. hoff ich jedenfalls
Gruß Jan
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 10.08.2010, 23:19
Titel:
|
 |
Hallo Jan 78,
sorry für die Nummerierung, ich möchte nur die Verwirrung reduzieren.
Du kannst die verschiedenen Variablen als Felder eines Structs definieren:
Das nennt man "dynamic field names".
Aber eigentlich wäre es besser, die Indizierung nicht in den Namen der Felder zu packen - ich Benutze ja auch nicht meine Telefonnummer als Nachname, obwohl das auch ein paar Vorteile hätte. Als Indizierung könnte man ganz hervorragend --- Inidzes verwenden:
Wenn die Daten (hier halt nur sinnlose Testdaten) alle die gleiche Größe und den gleichen Typ haben, wäre ein Array noch besser (also schneller und klarer).
Das Zusammenfassen wird dann sehr einfach.
Gruß, Jan
|
|
|
JN78 |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 69
|
 |
|
 |
Anmeldedatum: 18.05.09
|
 |
|
 |
Wohnort: Stuhr
|
 |
|
 |
Version: R2010b, R2011a
|
 |
|
|
 |
|
Verfasst am: 11.08.2010, 08:30
Titel:
|
 |
Hallo Jan,
ich habe deinen Vorschlag mal eben probiert, klappt bis auf die Tatsache das in die Felder nur der Arrayname und nicht der Inhalt geschrieben wird.
Also statt Zahlen stehen dann leider die bisherigen Bezeichnungen also "file3_spalte45" drin und nicht die 30.000 Werte die drin stehen und die ich eigentlich übergeben möchte.
JN
|
|
|
JN78 |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 69
|
 |
|
 |
Anmeldedatum: 18.05.09
|
 |
|
 |
Wohnort: Stuhr
|
 |
|
 |
Version: R2010b, R2011a
|
 |
|
|
 |
|
Verfasst am: 11.08.2010, 10:37
Titel:
|
 |
Hallo,
so ich hab mein Problem gelöst. Ich hab nun geschnallt wie ich mit dem dynamic field names umgehen muss. Ist wirklich viel leichter als ich dachte und das reduziert meinen Code ungemein.
Danke nochmals
|
|
|
|
|
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.
|
|