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

Performance Probleme beim umwandeln von cell nach struc

 

Florian_S
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 30.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.01.2009, 16:30     Titel: Performance Probleme beim umwandeln von cell nach struc
  Antworten mit Zitat      
Hallo zusammen,

ich will in zwei ineinander geschachtelten Schleifen die Cell Variable file in die Struktur messdaten umwandeln. Leider dauert dies ziemlich lange da neue "Unterpunkte" nicht einfach angefügt werden sondern jedes Mal die komplette Struktur neu durchlaufen wird (so sieht es zumindestens im Command Window aus)

Untenstehend Mal mein Code vielleicht erkennt ihr einen Denkfehler.

Code:
%% Sortieren in Struktur
% Basis ist die Stufennummer
 
stufe = 0;
a = length(file{1,1});
b = 1;
dataset = file{1,1}(b,1);
 
 
try
    while (b <= a)
 
        while dataset == stufe
 
            % Strukturname Stufe erzeugen
           
             num_name = num2str(file{1,1}(b,1));
             bez_name = 'stufe';
 
             name = strcat(bez_name,num_name);
 
            % Punktname erzeugen
            name_punkt_cell{1,1} = file{1,3}(b,1);
           
            name_punkt = char(name_punkt_cell{1,1}{1,1});
            % Aufbau Speicherstruktur
            % messdaten
            %       - time file(1,2)
            %       - Messpunkt(e)  file(1,3)
            %               - X     file(1,4)
            %               - Y     file(1,5)
            %               - Z     file(1,6)
            %               - dX    file(1,7)
            %               - dY    file(1,8)
            %               - dZ    file(1,9)
            %               - d     file(1,10)
 
            messdaten.(name).time = file{1,2}(b,1);
            messdaten.(name).(name_punkt).X = file{1,4}(b,1)
            messdaten.(name).(name_punkt).Y = file{1,5}(b,1)
            messdaten.(name).(name_punkt).Z = file{1,6}(b,1)
            messdaten.(name).(name_punkt).dX = file{1,7}(b,1)
            messdaten.(name).(name_punkt).dY = file{1,8}(b,1)
            messdaten.(name).(name_punkt).dZ = file{1,9}(b,1)
            messdaten.(name).(name_punkt).d  = file{1,10}(b,1)

        b = b + 1;
        dataset = file{1,1}(b,1);
        end;
    stufe = stufe + 1;
    end;
 
catch
    disp('debug');
end;


Danke Florian
Private Nachricht senden Benutzer-Profile anzeigen


leonidas
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 52
Anmeldedatum: 22.12.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.01.2009, 19:03     Titel:
  Antworten mit Zitat      
hallo!
ist bisschen schwer vorzustellen... besteht jede Zelle aus einer Zahlenmatrix?
was zB wird hier zugewiesen?
Code:
% Punktname erzeugen
            name_punkt_cell{1,1} = file{1,3}(b,1);


warum definierst Du name_punkt_cell als cell-array, wenn Du bloß eine Zelle benutzt?
was macht die Variable Stufe?
welche Werte weist Du der Variablen num_name zu?

mfg
leonidas
Private Nachricht senden Benutzer-Profile anzeigen
 
Florian_S
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 30.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.02.2009, 09:03     Titel:
  Antworten mit Zitat      
Hallo,

die Daten sind mit dem Befehl textscan aus einem ASCII File eingelesen.

die Bezeichnung der Punktnamen ist als String eingelesen worden alle anderen Daten wurden als double eingelesen.

Alle Punkte die zum Zeitpunkt t gemessen werden sollen einer "Stufe" zugeordnet werden die von 0 bis n einfach durchnummeriert werden (über Var num_name).
[/img]
Code:
num_name = num2str(file{1,1}(b,1));
             bez_name = 'stufe';
 
             name = strcat(bez_name,num_name);


Als nächstes wird der Punktname aus dem Cell Array ausgelesen:


Code:
name_punkt_cell{1,1} = file{1,3}(b,1);


und dann in einen string umgewandelt da sonst die dynamische Namensgebung in struc Variablen bei mir nicht funktioniert hat.

Code:
name_punkt = char(name_punkt_cell{1,1}{1,1});


Das ganze funktioniert auch, aber sehr langsam.
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.