ich würde gerne folgendes realisieren, jedoch reichen meine Matlab/Simulink Kenntnisse bei weitem dafür nicht aus, weshalb ich eure Hilfe erbitte.
Dazu erkläre ich am Besten kurz mein vorhaben anhand des Bildes.
- Es wird ein Profil vorgegeben, was hier durch die schwarzen Linie gekennzeichnet ist
- Die negative Fläche unterhalb der x-Achse(lila) wurde nach oben kopiert und soll vom grünen Bereich abgezogen werden
- Das Ziel ist es, dass der grüne Bereich und der "hautfarbene" Bereich nach Abzug des linanes Bereiches gleich groß sind
-> Die graue Linie ergibt sich also daraus, wo der hautfarbene Bereich = grünem Bereich (abzüglich lila Bereich) ist
Mir wurde gesagt, dass man dies mit Hilfe von Matlab realisieren kann, jedoch fehlen mir dafür jedoch ganz klar die Kenntnisse.
Würde mich freuen wenn ihr mir helfen könntet.
Vielen Dank
In welcher Form liegen die Inputs vor und wie stellst Du Dir die Outputs vor?
Welche Art von Hilfe erwartest Du? Es ist immer wahrscheinlicher eine konkrete Hilfestellung zu bekommen, wenn man eine konkrete Frage stellt. Zudem ist es hilfreich, wenn Du postest, was Du bisher geschafft hast, auch wenn es noch Fehler hat.
Mit trapz kannst du die Fläche unter einer Kurve ausrechnen, mit abs kannst du eine Kurve "hochklappen"... damit sollte man eigentlich schon was hinkriegen.
Ich versteh ja nicht warum du in Simulink rummachst, wenn du ne Lösung in Matlab suchst. Mit "aufintegrieren" alleine wirst du nicht weit kommen, stattdessen hättest du es ja einfach mal in Matlab versuchen können.
Aber das hier sollte dir weiterhelfen (eventuelle Fehler nicht ausgeschlossen).
Code:
% Beispieldaten
x = 1:2201;
y = [zeros(1,100)0:0.01:1010 - 0.01:-0.01:0zeros(1,100)];
function[ Abweichung ] = LinienAbweichung(x, y, h)
% Fläche oberhalb der Linie bestimmen ("orange" Fläche)
y_temp = y - h;
for i=1:length(y_temp) if y_temp(i) < 0
y_temp(i) = 0;
end end
orangeFlaeche = trapz(x,y_temp);
% Differenzfläche bestimmen ("weiße" Fläche) for i=1:length(y) if y(i) > h
y(i) = h;
end end
weisseFlaeche = trapz(x,y);
% Fläche unterhalb der Linie bestimmen ("grüne" Fläche)
grueneFlaeche = trapz(x,h*ones(1,length(y))) - weisseFlaeche;
% Abweichung berechnen und zurückgeben
Abweichung = (orangeFlaeche - grueneFlaeche)^2;
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.