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

Abfrage implemetieren ob der case Befehl ausgeführt wird

 

Mueller
Forum-Anfänger

Forum-Anfänger


Beiträge: 41
Anmeldedatum: 21.11.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.11.2016, 17:52     Titel: Abfrage implemetieren ob der case Befehl ausgeführt wird
  Antworten mit Zitat      
Hallo Kollegen, Hallo Experten,

Ich bin seit ca. 2 Wochen mit Matlab beschäftigt und habe wie ihr seht so meine typischen Anfänger Probleme. Vorab Danke für eure Zeit/Hilfe.

Ich lese meine Daten von einem .txt-File ein. Ich möchte jegliche Art von komplizierter Programmierung umgehen deshalb verwende ich ein paar statische Programmteile Very Happy

Ich würde gerne vor meinem case Befehl abfragen ob überhaupt der case XXXX existiert der vom .txt- File ursprünglich kommt. zb der case Input Data2 Erst dann sollte er den case hüpfen - quasi eine art if Abfrage.


Wie geht sowas in Matlab?



Code:
clear all %löscht alle Variablen
clear clc %löscht den Bildschirm
diagramoptions = [];
diagramlimits = [];
inputdata = [];
diagramoptions2 = [];
diagramlimits2 = [];
inputdata2 = [];
diagramoptions3 = [];
diagramlimits3 = [];
inputdata3 = [];
wholecontent = fileread('Rainflow_Data_Limits_Settingsx.txt')
sections = regexp(wholecontent, '\*+([^*]+)\*+([^*]+)', 'tokens')
for section = sections
   switch(strtrim(section{1}{1}))
         case 'Diagram Options' %Diagram Options -> siehe meine Gliederung im .txt file
            keyvalues = regexp(section{1}{2}, '([^\n\r=]+)=([^\n\r=]+)', 'tokens')%\n -> new line; \r carriage return
            diagramoptions = cell2table(vertcat(keyvalues{:}), 'VariableNames', {'Key', 'Value'})
         case 'Diagram Limits'
            header = strsplit(regexp(section{1}{2}, '[^\n\r]*', 'match', 'once'))
            content = textscan(section{1}{2}, repmat('%f', 1, numel(header)), 'HeaderLines', 2)
            diagramlimits = table(content{:}, 'VariableNames', header)
         case 'Input Data'
            inputdata = cell2mat(textscan(section{1}{2}, '%f%f%f', 'HeaderLines', 1))%dh: ich habe 1 Headerline zur besseren übersicht
         case 'Diagram Options2' %Diagram Options -> siehe meine Gliederung im .txt file
            keyvalues2 = regexp(section{1}{2}, '([^\n\r=]+)=([^\n\r=]+)', 'tokens')%\n -> new line; \r carriage return
            diagramoptions2 = cell2table(vertcat(keyvalues{:}), 'VariableNames', {'Key', 'Value'})
         case 'Diagram Limits2'
            header2 = strsplit(regexp(section{1}{2}, '[^\n\r]*', 'match', 'once'))
            content2 = textscan(section{1}{2}, repmat('%f', 1, numel(header2)), 'HeaderLines', 2)
            diagramlimits2 = table(content2{:}, 'VariableNames', header2)    
         case 'Input Data2'
            inputdata2 = cell2mat(textscan(section{1}{2}, '%f%f%f', 'HeaderLines', 1))%dh: ich habe 1 Headerline zur besseren übersicht
          case 'Diagram Options3' %Diagram Options -> siehe meine Gliederung im .txt file
            keyvalues3 = regexp(section{1}{2}, '([^\n\r=]+)=([^\n\r=]+)', 'tokens')%\n -> new line; \r carriage return
            diagramoptions3 = cell2table(vertcat(keyvalues{:}), 'VariableNames', {'Key', 'Value'})
         case 'Diagram Limits3'
            header3 = strsplit(regexp(section{1}{2}, '[^\n\r]*', 'match', 'once'))
            content3 = textscan(section{1}{2}, repmat('%f', 1, numel(header3)), 'HeaderLines', 2)
            diagramlimits3 = table(content3{:}, 'VariableNames', header3)
         case 'Input Data3'
            inputdata3 = cell2mat(textscan(section{1}{2}, '%f%f%f', 'HeaderLines', 1))%dh: ich habe 1 Headerline zur besseren übersicht
        otherwise
            warning('Unknown section: %s', section{1}{1})
     end
  end
%öffnet die output fenster
openvar diagramoptions
openvar diagramlimits
openvar inputdata
openvar diagramoptions2
openvar diagramlimits2
openvar inputdata2
openvar diagramoptions3
openvar diagramlimits3
openvar inputdata3


Rainflow_Data_Limits_Settingsx.txt
 Beschreibung:

Download
 Dateiname:  Rainflow_Data_Limits_Settingsx.txt
 Dateigröße:  1.08 KB
 Heruntergeladen:  279 mal
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: 24.11.2016, 23:04     Titel: Re: Abfrage implemetieren ob der case Befehl ausgeführt wir
  Antworten mit Zitat      
Hallo Mueller,

Das ist ein beeindruckend kompliziertes Programm für 2 Wochen Matlab.

Zunächst empfehle ich (wie so häufig), das "clear all" weg zu lassen. Es läscht nicht nur die Variablen, sondern entfernt alle vorher geladenen Funktionen aus dem RAM. Diese Files neu von der Platte zu laden und zu übersetzen kostet eine Menge Zeit.
Packe den Code lieber in eine Funktion. Dann ist der Workspace auch sauber und das clear ist überflüssig.

Zitat:
Ich würde gerne vor meinem case Befehl abfragen ob überhaupt der case XXXX existiert der vom .txt- File ursprünglich kommt. zb der case Input Data2 Erst dann sollte er den case hüpfen - quasi eine art if Abfrage.

Ich verstehe noch nicht, was Du brauchst. Du kannst natürlich vor dem SWITCH eine IF-Abrage einfügen:
Code:
for section = sections
  if strcmp(strtrim(section{1}{1}), 'Input Data2' )
     ...
  end

  switch(strtrim(section{1}{1}))

Hilft Dir das bereits? Wenn nicht erkläre noch mal genauer, was Du brauchst.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 41
Anmeldedatum: 21.11.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.12.2016, 10:51     Titel:
  Antworten mit Zitat      
Danke für die Info Smile
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.