Verfasst am: 18.08.2011, 08:42
Titel: Matrix um String erweitern
Hallo zusammen,
ich habe eine große Matrix mit mehreren 100.000 Zeilen und 5 Spalten (Matrix A, nur Zahlen). Jetzt lautet die Aufgabe, eine neue Spalte hinzuzufügen und zwar an erster Stelle in der Matrix, in der der String (keine Zahl!) 'Versuch' steht. Also am Ende soll so etwas dabei raus kommen
usw..
Wie kann man das in Matlab erreichen. Wie kann ich einen Vektor erzeugen in dem in einer Spalte und mehrerene 100.000 Zeilen der String "Versuch" steht? Und kann man den Vektor dann auch mit horzcat und vertcat zur Matrix A zufügen?
Vielen Dank für eine Antwort!
Strings lassen sich überhaupt nicht in numerische Arrays schreiben. Dafür brauchst du ein Cell-Array, wobei ich mit hoher Sicherheit sagen kann, dass dein Vorhaben keinen Sinn macht und/oder anderweitig gelöst werden kann.
danke für die Antworten. Ich kome noch nicht so richtig weiter: zum einen weiß ich nicht, wie ich den String in jede Zeile schreiben kann. Händisch ist das etwas aufwendig ...
Weiterhin weiß ich nicht, wie ich den dann entstandenen Array in eine .txt schreiben kann. Ich habe es mit Deinem Beispiel,Tox, versucht (mit dem Befehl dlmwrite), das klappt nicht (Fehlermeldung: The input cell array cannot be converted to a matrix).
Gibt es da einen anderen Befehl? Das generelle Problem ist, dass ich eine Textdatei auslesen möchte (wie gesagt mehrere 100.000 Zeilen und wenig Spalten, bestehend bisher nur aus Zahlen). Die Textdatei ist vorhanden, muss aber erweitert werden um einen 4 stelligen String am Anfang jeder Zeile, damit diese Datei von einem anderen Befehl eingelesen werden kann.
Dann schreib doch einfach das Array mit fprintf in die Textdatei und setzte in jeder Zeile den String "Versuch" davor. Du musst das doch nicht zuvor zwingend in einer Variablen abspeichern.
Es tut mir leid, aber ich komme nicht weiter. Folgenden Versuch habe ich gestartet:
Code:
fid = fopen('bsp.txt','w');
test=ones(8,5);%irgendeine Matrix, die die bearbeitet werden soll liegt vor...
for i=1:length(test) var=test(i:end);
fprintf(fid,'%s\space%4.1f\space','TEST',var);
end fclose(fid);
%%Dann soll eine Tabelle wie folgt als txt. Datei geschrieben sein
TEST 1 1 1 1 1
TEST 1 1 1 1 1
TEST 1 1 1 1 1
TEST 1 1 1 1 1
TEST 1 1 1 1 1
TEST 1 1 1 1 1
TEST 1 1 1 1 1
TEST 1 1 1 1 1
Als Textdatei. Ich habe ehrlich gesagt noch nicht im geringsten den Durchblick, was diese "Hyroglyphen" hinter fprintf zu bedeuten haben / wie man sie richtig einsetzt. Wenn ich jedenfalls den Quellcode so ablaufen lasse, kommt nicht das gewünschte Ergebnis raus
1) var benutzt man nicht als Variablennamen, da dies gleichzeitig einer Funktion entspricht
2) Du musst nur jeweils nur die Zeile der Matrix ansprechen
Code:
fid = fopen('bsp.txt','w');
test=ones(8,5);%irgendeine Matrix, die die bearbeitet werden soll liegt vor...
for i=1:length(test)
varLine = test(i:end,:);
fprintf(fid,'%s\space%4.1f\space','TEST',varLine);
end fclose(fid);
Super recht herzlichen Dank. Leider kann ich mit der Hilfe in Matlab oft nichts Gescheites anfangen, da fehlen mir einfach die Grundlagen / die Erfahrungen... Danke, das hilft beim Erlernen der "Sprache"!
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
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.