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

Variablen aus dem Workspace suchen und speichern

 

Lala888
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 67
Anmeldedatum: 05.09.16
Wohnort: München
Version: ---
     Beitrag Verfasst am: 05.10.2016, 08:17     Titel: Variablen aus dem Workspace suchen und speichern
  Antworten mit Zitat      
Guten Morgen ihr Lieben,

ich steh schon wieder vor einem Problem und weiss nicht weiter.

Ich habe Messdaten in Matlab eingelesen und würde mir jetzt gerne bestimmte davon raussuchen, mir die Periodendauer anschauen, die kleinste auswählen und abspeichern.

Als erstes würde ich gerne nach dem Variablennamen suchen.
Es gibt z.B.

Mdk_ist_2
Mdk_ist_4
Mdk_ist_5

Dann würde ich mir gerne den dazugehörigen Zeitvektor anschauen und die Differenz nehmen um die Periodendauer herauszufinden und den mit der kleinsten abspeichern.

Das möchste ich mir mehreren Messdaten machen.


Habt Ihr Ideen wie ich das am besten angehen soll?

Eure Lala
Private Nachricht senden Benutzer-Profile anzeigen


Lala888
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 67
Anmeldedatum: 05.09.16
Wohnort: München
Version: ---
     Beitrag Verfasst am: 05.10.2016, 11:23     Titel:
  Antworten mit Zitat      
Mein Ansatz ist es erstmal alle Variablen aus dem Workspace zu listen und dann über strfind und find nach dem Namen zu suchen:

Code:
WV=whos;

for ii=1:length(WV)
   
    AA=strfind(WV(ii).name,'Mdk_ist_');
   
    if ~isempty(AA)
       
       AB(ii,1)=ii;
       AC=find(AB>0);
       % hier würde ich gerne in die gefundenen Variablen rein gehen und die Differenz (diff) nehmen
       
    end
   
end


Nur leider weiss ich nicht wie ich das anstellen kann.
Muss ich die gefundnen Variablen erstmal irgendwo abspeichern?

[EDITED, Jan: Bitte Code-Umgebung verwenden - Danke!]
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: 05.10.2016, 12:21     Titel: Re: Variablen aus dem Workspace suchen und speichern
  Antworten mit Zitat      
Hallo Lala888,

Im Namen "Mdk_ist_2" ist ein Index versteckt. Das ist grundsätzlich eine sehr schlechte Idee. Denn wie Du merkst ist der Zugriff auf solche versteckten Indizes total mühsam ubnd fehleranfällig. Das Rumfrickeln mit who und eval führt immer dazu, dass man später noch mehr Probleme bekommt.

Sowie man einen Index als Index verwendet, wir das Suchen des Minimums trivial. Wenn die Daten leider schon mit den Namen wie "Mdk_ist_2" vorliegen, wandelt man sie so schnell wie möglich in ein richtiges Array um, z.B.:
Code:
Data = [Mdk_ist_1; Mdk_ist_2; Mdk_ist_3];  % etc.

Danach kann man ganz einfach die min Funktion verwenden.

In Zukunft vermeide versteckte Indizes unbedingt. Bei der Verwendung von Arrays werden die Programme deutlich übersichtlicher, besser debug- und wartbar, schneller und laufen problöemlos auch über Milliarden von Messpunkten.
Dein STRFIND-Ansatz strauchelt dagegen schon bei mehr als 10 Daten, wenn er "Mdk_ist_1" in "Mdk_ist_10" wiederfindet.

Du findest sehr viele Threads zu diesem Thema im Forum, denn Indizes im Namen sind der meist verbreitetste Anfängerfehler. Suche nach "eval" und "assignin".

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 67
Anmeldedatum: 05.09.16
Wohnort: München
Version: ---
     Beitrag Verfasst am: 05.10.2016, 14:21     Titel:
  Antworten mit Zitat      
Das werd ich mir aufjedenfall anschauen.
Danke
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.