Verfasst am: 24.04.2012, 10:30
Titel: Quadratische 3D Regressionsfäche erzeugen
Hallo liebe Matlab Freunde,
ich arbeite seit zwei Wochen an einem Datenauswerteprogramm zur Leistungsoptimierung eines Dampfmotors. Die Daten werden aus einer SPS ausgelesen und in eine CSV Datei gespeichert. Mein Programm importiert diese Daten in Matlab und filtert die unsinnigen Werte (Motorstillstand, Anfahrzustände und sonstige abweichende Betriebspunkte) heraus. Im Anschluss möchte ich die überbleibenden Daten, zur Übersicht der Leistungsbereiche in den verschiedenen Betriebspunkten, in einem 3D Plot darstellen.
In den dazugehörigen 2D Plots habe ich mit polynomischen Regressionskurven vom Grad 2 gearbeitet um Maximalpunkte (max. Leistung) zu erfassen. Hierbei habe ich für jede mögliche Dampfmenge ein Plot erstellt (quasi das 3D Plot in Scheiben geschnitten).
Nun habe ich versucht die Messdaten dreidimensional zu plotten, wobei in den meisten Funktionen wie z.B. gridfit immer nur zwischen den Daten interpoliert wird. Da es sich in meinem Beispiel aber um Messdaten handelt, bei denen trotz der Filterung immer noch Ausweicher auftreten können, würde ich diese jetzt gern so plotten, dass ich eine Ausgleichsfläche vom Grad 2 in x sowie in y Richtung zwischen den Messpunkten habe.
Für lineare 3D Regression habe ich unter folgendem Link
ein Programm gefunden, dass dies schon einmal linear kann.
Im Anhang habe ich hierzu drei Plots hochgeladen. In den ersten zwei zeigt es die interpolierten Flächen, wobei deutlich zu erkennen ist, dass das Tal bei ca. 100% Drehmoment nicht sein kann. Im dritten Plot ist dann die lineare Variante zu sehen, die mir nichts nützt, da ich einen quadratischen Verlauf erwarte.
Hier mal mein Programm für das interpolierte Plot mit der Funktion gridfit (ist mit angehangen).
Code:
%% Messwerte x_3D, y_3D und z_3D aus txt Datei importieren
xi=min(x_3D):0.1:max(x_3D);
yi=min(y_3D):0.1:max(y_3D);
[zg,xg,yg] = gridfit(x_3D,y_3D,z_3D,xi,yi,'tilesize',... 120,'overlap',0.25);
surf(xg,yg,zg) shading interp
colormap(jet(256)) camlight right
lighting phong
title '3D Plot Leistungskurve über Dampfmenge und Drehmoment';
xlabel('Dampfmenge[t/h]');
ylabel('Drehmoment[%]');
zlabel('Leistung[KW]');
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.