Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Bücher:

Modellbildung und Simulation dynamischer Systeme

Studierende:
weitere Angebote

Partner:


Vermarktungspartner


Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Structs anhand von Signalliste zuschneiden und überschreibe

 

Simeoniberer
Forum-Newbie

Forum-Newbie


Beiträge: 1
Anmeldedatum: 02.03.21
Wohnort: ---
Version: 2019b
     Beitrag Verfasst am: 02.03.2021, 12:00     Titel: Structs anhand von Signalliste zuschneiden und überschreibe
  Antworten mit Zitat      
Hallo zusammen,
ich bin neu hier und zu meinem Anliegen habe ich bereits mehrere Beiträge gelesen, jedoch noch nicht das richtige für mich gefunden. Die Frage bezieht sich auf Folgenden Code:

Code:


for i = 1:length(signalliste)
    current_signal = signalliste(i);
       
    eval(string(current_signal)).Value = eval(string(current_signal)).Value(Start:Ende);
    eval(string(current_signal)).Min = min(eval(string(current_signal)).Value);
    eval(string(current_signal)).Max = max(eval(string(current_signal)).Value);
end

 



Ich würde gerne Struct-Signale zuschneiden von einem definierten Startpunkt bis Endpunkt. Dies würde ich gerne für jedes Signal in einer Cell-Signalliste durchführen (Bsp.: signalliste(1)='Testsignal') . Das Zuschneiden mit "eval(string(current_signal)).Value(Start:Ende)" funktioniert (rechte Seite der Gleichungen). Jetzt würde ich diese zugeschnittenen Daten wiederum in den selben struct (Testsignal.Value) abspeichern.
Von dem zugeschnittenen Signal sollen dann der Maximal- und Minimalwert ausgelesen werden und unter Testsignal.Max und Testsignal.Min gespeichert werden. Wie gesagt sind die Namen in der Siganlliste enthalten und sind variabel.

Für Tipps bin ich dankbar.

(Ich bin mir bewusst, dass man eval im Allgemeinen vermeiden sollte, weiß aber keine alternative Lösung)

Grüße
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.037
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 02.03.2021, 17:35     Titel: Re: Structs anhand von Signalliste zuschneiden und überschr
  Antworten mit Zitat      
Hallo Simeoniberer,

Zitat:
würde ich gerne für jedes Signal in einer Cell-Signalliste durchführen (Bsp.: signalliste(1)='Testsignal').

Das verstehe ich nicht. Was ist denn der Typ und Inhalt von "signalliste"?
Befinden sich darin die Namen von Variablen? Dann wäre es doch viel einfacher, statt der Namen die Variablen selbst zu speichern.

Der Code sieht eigentlich gut aus. Nur wozu soll das EVAL dienen? Damit bohrt man sich nur ein Loch ins Knie.
Code:
for i = 1:length(signalliste)
    current_signal = signalliste{i};  
    current_signal.Value = current_signal.Value(Start:Ende);
    current_signal.Min = min(current_signal.Value);
    current_signal.Max = max(current_signal.Value);
end

Bei der Nutzung von EVAL versteckt man Informationen im Namen der Variablen. Stattdessen Arrays zu benutzen, ist deutlich einfacher und direkter.

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
.


goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de


 Impressum  | Nutzungsbedingungen  | Datenschutz  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2021 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

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.