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

Problem bei Übergabe von Variableninhalt in Schleife

 

stefan1111
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 15.03.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.03.2012, 16:16     Titel: Problem bei Übergabe von Variableninhalt in Schleife
  Antworten mit Zitat      
Hallo Leute,

ich hab ein großes Problem und hoffe das ihr mir weiterhelfen könnt!
Ich erarbeite derzeit mein Abschlussprojekt für meine Ausbildung als Fachinformatiker und komm einfach nicht weiter.

Mein Problem ist folgendes:
Bsp.:

Ich habe 2 Variablen
var_1 = 'test_datei.txt';
var_2 = 'testxy_dat.txt;

In einer for-Schleife möchte ich alle Variablen durchlaufen und den Inhalt übergeben.
for i = 1:2
i_str = num2str(i)
. . .
speicher = ['var_', i_str];
. . .
end

Leider musste ich feststellen, dass ich dann in der Variable "speicher" nur "var_1" stehen habe. Wie ist es möglich, die zwei Variablen in einer Schleife zu durchlaufen wie in obigem Beispiel, und den Inhalt zu übergeben?

Großen Dank schon einmal im voraus!

Viele Grüße
Stefan
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.03.2012, 16:32     Titel:
  Antworten mit Zitat      
Hallo,

du kannst mit EVAL arbeiten. Das wird aber sehr umständlich und schwierig zu debuggen.

Besser ist es, mit Cell Arrays statt verschiedenen Variablen zu arbeiten.

Code:
vari{1} = 'test_datei.txt';
vari{2} = 'testxy_dat.txt;


Dann kannst du in der for-Schleife problemlos mit geschweiften Klammern indizieren.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
stefan1111
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 15.03.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.03.2012, 19:30     Titel:
  Antworten mit Zitat      
Hallo Harald,

DANKE!!!
VIELEN DANK!!!

Es funktioniert Very Happy
Auf so eine Idee bin ich gar nicht gekommen, da hab ich wiedereinmal zu kompliziert gedacht Laughing

Du hast mir ein großes Stück weitergeholfen Wink

Viele Grüße
Stefan
Private Nachricht senden Benutzer-Profile anzeigen
 
stefan1111
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 15.03.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.03.2012, 08:57     Titel:
  Antworten mit Zitat      
Guten Morgen,

leider habe ich gemerkt das ich doch noch das gleiche Problem habe.

Ich habe immer eine unterschiedliche Anzahl an txt-Files.
Aus diesem Grund kann ich nichts statisch machen und muss eine Schleife durchlaufen die so oft durchläuft wie txt-Files vorhanden sind.

Sprich wenn ich es wie oben mit einem Cell versuche:

Code:

txtFile1 = 'testdf.txt'
txtFile2 = 'haus.txt'
txtFile3 = 'berg.txt'

...

for i = 1:AnzahlFiles
     var{i} = txtFile1;
end
 


Besteht weiterhin das Problem das ich die txtFiles nicht durchzählen kann.
Gibt es da eine Möglichkeit?
Denn folgendes funktioniert wie gesagt leider nicht.

Code:

for i = 1:AnzahlFiles
     i_str = num2str(i);
     var{i} = ['txtFile', i_str];
end
 


Großen Dank im Voraus.

Viele Grüße
Stefan
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 16.03.2012, 09:25     Titel:
  Antworten mit Zitat      
"funktioniert nicht" ist keine gute fehler beschreibung. was funktioniert nicht? was meinst du mit durchzählen?
Private Nachricht senden Benutzer-Profile anzeigen
 
stefan1111
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 15.03.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.03.2012, 10:07     Titel:
  Antworten mit Zitat      
Hallo Winkow,

Ich möchte in einer Schleife den Inhalt der vorhandenen txt-Files in eine Cell schreiben.

z.B. sind die txt-Files txtFile1, txtFile2, txtFile3 vorhanden.

Code:

txtFile1 = 'testdf.txt'
txtFile2 = 'haus.txt'
txtFile3 = 'berg.txt'
...
for i = 1:AnzahlFiles % Durchläuft die Schleife so oft, wie txt-Files vorhanden sind
     i_str = num2str(i);
     % Hier versuche ich die txt-Files hochzuzählen sprich
     % 1. Durchlauf var{1} = txtFile1
     % 2. Durchlauf var{2} = txtFile2
     % ...
     var{i} = ['txtFile', i_str];
end
 


Das Problem ist, das ich die Zahl am Ende der Variablen txtFile1 - txtFile3 nicht in der for-Schleife erhöhen kann, da ich dann in var{i} nur den Namen z.B. "txtFile1" stehen habe, nicht aber den Inhalt der Variable also z.B. "testdf.txt".
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 16.03.2012, 10:22     Titel:
  Antworten mit Zitat      
und warum schreibst du
Code:
txtFile1 = 'testdf.txt'
txtFile2 = 'haus.txt'
txtFile3 = 'berg.txt'
 
anstatt
Code:
txtFile{1} = 'testdf.txt'
txtFile{2} = 'haus.txt'
txtFile{3} = 'berg.txt'
 
macht doch keinen sinn die variabelen 2 mal zu definieren. du hast deinen falschen anstatz mit dem richtigen von harald gemischt ^^
Private Nachricht senden Benutzer-Profile anzeigen
 
stefan1111
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 15.03.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.03.2012, 10:42     Titel:
  Antworten mit Zitat      
Oh man...

Das beweist dann wohl das ich zurzeit einfach nicht klar denken kann ^^

Werde ich heut Nachmittag versuchen sollte aber funktionieren!

Vielen vielen Dank Very Happy

Viele Grüße
Stefan
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 16.03.2012, 19:36     Titel:
  Antworten mit Zitat      
Hallo,

du kannst dir z.B. mit
Code:
dateiliste = dir('*.txt');

eine Liste der .txt-Dateien ausgeben lassen.

Die Schleife würde dann etwa so aussehen:
Code:
for I=1:numel(dateiliste)
dateiname = dateiliste(I).name;
% weiteres Arbeiten mit dateiname
end


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
dotwinX
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 52
Anmeldedatum: 06.12.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.03.2012, 13:09     Titel:
  Antworten mit Zitat      
Ich hab das mal so gemacht:
[filename filepath]=uigetfile('*.txt','txt-File auswählen)','MultiSelect','on');

filename ist dann eine Zelle mit allen ausgewählten TXT-Dateien.
Einträge dann einfach über filename{1}, filename{2},... auswählen
Private Nachricht senden Benutzer-Profile anzeigen
 
stefan1111
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 15.03.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.03.2012, 09:15     Titel:
  Antworten mit Zitat      
Noch einmal einen großen dank an euch beide! Very Happy

Werde ich heute alles mal durchtesten Wink

Viele Grüße
Stefan
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.