ich habe ein ziemlich unübersichtliches Skript das zwar läuft, aber eben unübersichtlich ist. Ich suche schon lange eine Möglichkeit das irgendwie zu verkürzen. Vielleicht hat da jemand einen Tipp für mich.
Ich erkläre kurz was hier gemacht wird. Es werden zwei Tabellen erstellt, in der jeweils 11 Werte stehen. Diese 11 Werte stellen Mittelwerte dar und werden allesamt unter der gleichen Bedingungen aus unterschiedlichen Tabellen, also aus insgesamt 22 Tabellen, aus dem Workspace geholt.
Genau das hier muss ich noch für andere Bedingungen ausführen. Ich muss also immer wieder auf dieselbe Abfolge von Tabellen (die wie gesagt im Workspace sind) zugreifen und dann jeweils die gleiche Bedingung dafür ausführen. Weil sich die Bedingung ja immer auf eine andere Tabelle bezieht, weiß ich nicht wie ich das hier abkürzen kann und habe daher bisher ewig lange Skripte..
Ich hoffe hier steigt jemand durch und hat vielleicht eine passende Idee.
bei separaten Variablen geht das theoretisch mit eval, ist praktisch aber unübersichtlich, fehleranfällig etc. und daher nicht empfehlenswert.
Besser wäre, die Daten nochmal in ein Cell oder Struct abzulegen. Dann kann man das je nachdem mit
cellfun
oder
structfun
elegant verarbeiten.
Für weitere Unterstützung bitte sagen, welchen der Ansätze du verfolgen willst und idealerweise ein Datenbeispiel zur Verfügung stellen.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Danke für deine Antwort. Nach genau so einer eleganten Lösung suche ich.
Ich habe das gerade mal mit "struct" versucht und erstmal drei der Variablen dort abgelegt. Das habe ich als Datei mal beigefügt. Wie ich nun daraus jeweils aus der .Max Spalte, mit der Bedingung aus der .Abfluss Spalte einen Mittelwert bilde, habe ich noch nicht herausgefunden.
MHW = 500; % zum Testen
hQ = 100; % zum Testen
f = @(x)mean(x.Max(x.Hw >= MHW+250 & x.Abfluss > hQ)); % x ist was auch immer reinkommt structfun(f, All, 'UniformOutput', false)
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Wow, vielen Dank! Soweit funktioniert das und verkürzt mein Skript damit extrem. Ich kümmere mich morgen um die Umsetzung auf mein komplettes Skript und melde mich ggf. nochmals mit weiteren Fragen. Bis hierhin setze ich den Status auf "beantwortet".
Es geht später weiter mit dem Plotten. Dort habe ich immer wieder genau das gleiche stehen. Kann ich das irgendwie abspeichern und dann mit einem einfachen Befehl wieder aufrufen?
sieht so aus, als ob du das in eine Funktion ohne Inputs packen und diese aufrufen könntest. Die Verwendung von gcf und gca kann bei mehreren Koordinatensystemen problematisch werden. Besser ist es, wirklich die Handles auf die Koordinatensysteme (wie z.B. in deinem Code ax2) zu übergeben.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Einstellungen und Berechtigungen
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
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.