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

2 num2str Befehle in einer Gleichung in For-Schleife

 

aloop
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 23.05.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.05.2012, 17:57     Titel: 2 num2str Befehle in einer Gleichung in For-Schleife
  Antworten mit Zitat      
Hallo, ich bin neu hier und habe nen kleines Problem. Ich versuchs mal so verständlich wie möglich zu schildern:

Ich habe bisher 13 txt Datein (in Form von Matrizen mit 4 Spalten) in meinem Workspace. Nun würde ich gerne von jeder datei die 1. spalte auslesen und ihr eine variable zu ordnen. Am besten in Form einer For-Schleife.
Aja die txt.Datein sind von der bezeichnung so:
Name_5
Name_10
.
.
.
Name_65

Mein bisheriger Ansatz:
Code:

for i=5:5:65
(['y_',num2str(i),])=(['Name_',num2str(i),'[:,1]')]
end
 

im prinzip möchte ich dass, das y_ von 5 bis 65 bezichnet wird und zu dem jeweiligen y_ die richtige Spalte aus meiner txt-Datei geschrieben wird.
Y_5 soll die 1. Spalte von 'Name_5' enthalten

Jedoch zeigt mir Matlab da einen Fehler beim Gleichheitszeichen an.

Ich hoffe ich habe jetzt nicht entgültige Verwirrung gestiftet und jemand weiß was ich meine und kann mir evtl sogar helfen.

Vielen Dank schon mal
aloop


_Peter_:Bitte Codeumgebung verwenden. Danke.
Private Nachricht senden Benutzer-Profile anzeigen


Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 24.05.2012, 07:09     Titel:
  Antworten mit Zitat      
Ich mache beim debuggen solcher String-Konstrukte immer ein DISP um den String herum. So sehe ich, ob das Ergebnis wirklich so aussieht wie ich mir das vorstellen.

Es wird aber bestimmt bald ein paar Antworten geben die das ganzen anders (natürlich besser Wink ) lösen.

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
_Peter_
Moderator

Moderator


Beiträge: 537
Anmeldedatum: 08.12.10
Wohnort: ---
Version: 7.10, 2010a
     Beitrag Verfasst am: 24.05.2012, 07:25     Titel:
  Antworten mit Zitat      
Hallo aloop,
ich würde da eher einen anderen Ansatz wählen.

Die Dateien einlesen würde ich über den dir- Befehl. Schau dir den mal in der Hilfe an, bzw such mal hier im Forum, da findest du auch einige Beispiele.

Die Zahl als Variablenbezeichnung miteinzubeziehen ist immer unglücklich.
Da wäre vielleicht ein struct interessant, um dort die Spalten der jeweiligen Dateien abzulegen.

Da wäre das Handling auf jeden Fall einfacher.

p.s.: Wenn Matlab einen Fehler ausgibt, diesen bitte vollständig hier immer auch posten, da dieser wertvolle Informationen enthält.
_________________

Gruß
Peter
_________________
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht? Oder der MATLAB Hilfe?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
aloop
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 23.05.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.05.2012, 09:27     Titel:
  Antworten mit Zitat      
Hallo,
vielen Dank für die schnellen Tipps. Also ist es vllt besser, das ganze nicht mit Hilfe einer For-Schleife zu realisieren, sondern jeden Befehl zum Einleisen der Spalte für die jewieligen 13 Datein einzeln auszuführen?

Gruß
aloop
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 24.05.2012, 11:29     Titel: Re: 2 num2str Befehle in einer Gleichung in For-Schleife
  Antworten mit Zitat      
Hallo aloop,

Indices in den Variablen-Namen zu packen ist immer eine unnötig aufwändige Methode. Ein CELL Array ist deutlich praktischer: Also statt A1, A2, ... besser A{1}, A{2}, ... verwenden.

In Deinem bisherigen Ansatz steht links und rechts vom = Zeichen ein String:
Code:
(['y_',num2str(i),])=(['Name_',num2str(i),'[:,1]')]

Du möchtest aber auf der linken Seite eine Variable stehen haben, keinen String. Der Unterschied ist essentiell.
Man könntes das zwar per EVAL lösen, welches einen String als Matlab Code interpretiert. Davon rate ich aber deutlich ab (wie schon öfters im Forum besprochen und dort auch auffindbar).

Ich würde ebenfalls ein Struct verwenden:
Code:
S(1).Index = 5;
S(1).Value = rand(2,3);
etc.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
_Peter_
Moderator

Moderator


Beiträge: 537
Anmeldedatum: 08.12.10
Wohnort: ---
Version: 7.10, 2010a
     Beitrag Verfasst am: 24.05.2012, 12:58     Titel:
  Antworten mit Zitat      
Also eine For-Schleife wirst du schon nutzen müssen, damit du über alle Dateien iterieren kannst, aber die Verarbeitung innerhalb der Schleife mit deinen String versuchen ist unpraktikabel.
_________________

Gruß
Peter
_________________
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht? Oder der MATLAB Hilfe?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
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 - 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.