WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Matrix um String erweitern

 

matlabbeginner
Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 09.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.08.2011, 08:42     Titel: Matrix um String erweitern
  Antworten mit Zitat      
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

Versuch 1 2 3 4 5
Versuch 6 7 8 9 10
Versuch 11 12 13 14 15

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!
Private Nachricht senden Benutzer-Profile anzeigen


eupho
Forum-Meister

Forum-Meister


Beiträge: 777
Anmeldedatum: 07.01.09
Wohnort: Marburg
Version: R2009b
     Beitrag Verfasst am: 18.08.2011, 08:45     Titel:
  Antworten mit Zitat      
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.
Private Nachricht senden Benutzer-Profile anzeigen
 
Tox
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 54
Anmeldedatum: 26.08.08
Wohnort: ---
Version: R2010b
     Beitrag Verfasst am: 18.08.2011, 08:48     Titel:
  Antworten mit Zitat      
Mit cell-Arrays kannst du Strings einfügen:

Code:
 Array = {'Versuch' 1 2 3;'Versuch' 4 5 6};
Private Nachricht senden Benutzer-Profile anzeigen
 
matlabbeginner
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 09.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.08.2011, 10:13     Titel:
  Antworten mit Zitat      
Hallo,

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 ...Smile

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.

Ich bekomms nicht hin Sad
Private Nachricht senden Benutzer-Profile anzeigen
 
eupho
Forum-Meister

Forum-Meister


Beiträge: 777
Anmeldedatum: 07.01.09
Wohnort: Marburg
Version: R2009b
     Beitrag Verfasst am: 18.08.2011, 10:18     Titel:
  Antworten mit Zitat      
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.
Private Nachricht senden Benutzer-Profile anzeigen
 
matlabbeginner
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 09.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.08.2011, 12:55     Titel:
  Antworten mit Zitat      
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 Sad
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 18.08.2011, 13:26     Titel:
  Antworten mit Zitat      
Und was ist daran bitte falsch?
Private Nachricht senden Benutzer-Profile anzeigen
 
eupho
Forum-Meister

Forum-Meister


Beiträge: 777
Anmeldedatum: 07.01.09
Wohnort: Marburg
Version: R2009b
     Beitrag Verfasst am: 18.08.2011, 13:29     Titel:
  Antworten mit Zitat      
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);


Dann kommt auch das richtige Ergebnis raus!
Private Nachricht senden Benutzer-Profile anzeigen
 
matlabbeginner
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 09.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.08.2011, 13:32     Titel:
  Antworten mit Zitat      
Wenn man den Quellcode in Matlab eingibt, kommt es nicht so in der Textdatei an, wie ich es wünsche..., siehe Anhang.

bsp.txt
 Beschreibung:

Download
 Dateiname:  bsp.txt
 Dateigröße:  212 Bytes
 Heruntergeladen:  526 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
eupho
Forum-Meister

Forum-Meister


Beiträge: 777
Anmeldedatum: 07.01.09
Wohnort: Marburg
Version: R2009b
     Beitrag Verfasst am: 18.08.2011, 13:40     Titel:
  Antworten mit Zitat      
Code:
fid = fopen('bsp.txt','w');
for i=1:length(test)
  fprintf(fid, '%s %.0f %.0f %.0f %.0f %.0f\r\n', 'TEST', test(i,1), test(i,2), test(i,3), test(i,4), test(i,5));
end
fclose(fid);


In die Hilfe schauen ist immer sehr hilfreich.
Private Nachricht senden Benutzer-Profile anzeigen
 
matlabbeginner
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 09.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.08.2011, 15:18     Titel:
  Antworten mit Zitat      
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"!
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 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.