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

Aufsplitten von Vektoren

 

FZS
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 16.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.12.2010, 19:09     Titel: Aufsplitten von Vektoren
  Antworten mit Zitat      
Hallo,

ich habe Versuchsdaten, die nach dem Schema Versuchsnummer_Messkanal als Vektoren (double) vorliegen (z.B. V01012_TemperaturA, V01012_D1 usw.). In den Versuchen wird ein bestimmter Zyklus mit vier Phasen abgefahren. Ich möchte gerne diese einzeln analysieren und die Daten in die einzelnen Phasen aufspalten. Dafür hätte ich gerne eine Funktion, der die Trennstellen mitgegeben werden, die dann alle Variablen eines Versuchs zerteilt und neue Variablen nach dem Schema Versuchsnummer_Phase_Messkanal anlegt. Hoffe, das war soweit verständlich.

Code:

function seperate(versuch,g1,g2,g3)
% Auswählen der Variablen im Workspace, die zum Versuch gehören
Variablen = who('global',strcat(versuch,'*'))

% Anzahl der Variablen für die Schleife
a = length(Variablen);

% Erzeugung der Variablen fuer Phase1

% Erzeugen der neuen Namen                  
VariablenNeu = regexprep(Variablen,versuch,strcat(versuch,'_P1_'));

% Zuweisen der Werte
for i=1:a
    assignin('base',VariablenNeu{i},eval(Variablen{i}(1:g1)));
end

% Erzeugung der Variablen fuer Phase2

% Erzeugen der neuen Namen                  
VariablenNeu = regexprep(Variablen,versuch,strcat(versuch,'_P2_'));

% Zuweisen der Werte
for i=1:a
    assignin('base',VariablenNeu{i},eval(Variablen{i}((g1+1):g2)));
end
end
 


Im Moment scheitert es schon daran, dass "who" keine Werte liefert. Wie bringe ich who bei, im workspace zu schauen? Könnte es ansonsten so funktionieren?


Grüße
Roman
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: 16.12.2010, 04:56     Titel: Re: Aufsplitten von Vektoren
  Antworten mit Zitat      
Hallo FZS,

Eine komplizierte Methode zu schreiben um komplizierte Variablen zu erzeugen erfordert immer eine weitere komplizierte Methode, um auf diese Variablen wieder zugreifen zu können.

Ich rate deswegen immer von dynamisch erzeugten Variablen ab. Ein Index ist dagegen eine sehr einfache und brauchbare Methode, verschiedene Messreihen zu unterscheiden.

Statt "V01012_D1" (was immer das bedeuten mag) könnte also z.B. "V(1, 1, 2).D{1}" besser geeignet sein. Damit könnte man die Variablen dann auch ganz sauber als Input und Output an verschiedene Funktionen übergeben.

Siehe z.B. die Diskussion mit HPA69:
http://www.gomatlab.de/variablen-au.....-und-benennen-t15648.html

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
FZS
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 16.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.12.2010, 15:35     Titel:
  Antworten mit Zitat      
Ich werde mir nochmal die anderen Datentypen anschauen. Trotzdem würde mich interessieren, wie ich "who" in einer Funktion aufrufen kann und die Variablen des Workspaces erhalte.
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: 16.12.2010, 16:37     Titel:
  Antworten mit Zitat      
Hallo FZS,

Zitat:
Trotzdem würde mich interessieren, wie ich "who" in einer Funktion aufrufen kann und die Variablen des Workspaces erhalte.

Das verstehe ich, und es kann mit EVALIN('base', 'who') auch tatsählich funktionieren.
Ich poste aber hier in diesem Forum, um Leuten zu helfen ihre Matlab-Probleme zu lösen. Deshalb kann ich einfach keine Methode näher beschreiben, von der ich weiß, dass sie unhandliche, kaum debugbare und ineffiziente Programme produziert. Die Geschwindigkeit und Stabilität leidet unter diesen "Poofing"-Tricks sehr.

Da das Thema in diesem Forum regelmäßig, fast täglich, besprochen wird, kannst Du ja mal in der History stöbern.

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.