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

Cell array in einer for-Schleife vermischt sich

 

trust114
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 80
Anmeldedatum: 10.11.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.01.2016, 15:03     Titel: Cell array in einer for-Schleife vermischt sich
  Antworten mit Zitat      
Hallo Leute,

hab folgende Frage:

Bei einer for-schleife durch die eine cell-array entstehen soll passiert etwas komisches. Hier ist erstmal der code:

Code:
for ii=1:length(Datei) % Datei ist eine gegebene Tabelle

cell_array{ii}=Datei(ii,:) % jede Zeile der Tabelle soll in eine Zelle gepacken werden

end
 


Von der Variablen "Datei" habe ich zwei unterschiedliche. Eine mit 100 Zeilen (Nennen wir sie mal Datei_1) und eine mit 200 Zeilen (Datei_2). Die Spaltenanzahl sind gleich mit jeweils 50.

Nun das Komische:

Falls ich die for-Schleife zunächst mit der längeren Datei abspiele speichert er mir für cell_array im Workspace 1x200 cell. Wie üblich. Lösche ich jetzt nicht den workspace und lasse einfach nochmal die for-schleife laufen, allerdings diesmal mit der kürzeren Datei gibt er mir im Workspace ebenfalls eine 1x200 cell bei denen jedoch die ersten 100 Zellen auch den Zeilen der Datei_2 entsprechen und die anderen 100 der Datei_1.

Also mischt er diese sozusagen. Das soll ja nicht so passieren.

Hoffe ihr wisst was ich meine. Danke im vorraus.

Schönen Gruß
Trust
Private Nachricht senden Benutzer-Profile anzeigen


denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 28.01.2016, 15:59     Titel:
  Antworten mit Zitat      
Das ist richtig, du hast ja bereits Variable erzeugt und diese befüllt.
Bei 2.Mal existiert bereit diese Variable, also werden nur die ersten N-Werte ersetzt(also 100 Werte ersetzt), da der Schleifenindex ja von 1 bis der Länge deiner Datei läuft.

Du musst diese Variable entweder löschen oder cell neu initialisieren
mach so:
Code:


cell_array = cell(1, length(Datei) );

for ii=1:length(Datei) % Datei ist eine gegebene Tabelle

cell_array{ii}=Datei(ii,:) % jede Zeile der Tabelle soll in eine Zelle gepacken werden

end
 
Private Nachricht senden Benutzer-Profile anzeigen
 
trust114
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 80
Anmeldedatum: 10.11.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.01.2016, 16:24     Titel:
  Antworten mit Zitat      
Dank dir denny. Klappt wunderbar. Smile
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: 29.01.2016, 18:32     Titel:
  Antworten mit Zitat      
Hallo trust114,

Die Matrix "Datei" könnte auch mal mehr Spalten als Zeilen enthalten. Dann wäre dies sicherer:
Code:
nRow = size(Datei, 1);
cell_array = cell(1, nRow);
for ii = 1:nRow
  cell_array{ii}=Datei(ii,:);
end

Alternativ ist der Befehl von Matlab dafür:
Code:
cell_array = num2cell(Datei, 2);

Gruß, Jan
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.