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

Flächenberechnung

 

Sunrain
Forum-Anfänger

Forum-Anfänger


Beiträge: 43
Anmeldedatum: 08.01.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.01.2015, 13:09     Titel: Flächenberechnung
  Antworten mit Zitat      
Hallo,

Ich habe eine Messkurve und soll die Fläche unterhalb der Kurve berechnen, dies klappt auch ganz gut, ich gehe dabei folgendermaßen vor:
Code:
clear all; clc
data=xlsread('1.xlsx');
x=data(:,1);
y=data(:,2);
plot(x,y);
trapz(x,y)


meine Frage hierzu ist zum einen wie ich das automatisch hinbekomme, das Matlab die Fläche aus alles Messwerten so berechnet bis die Kurve wieder den 0 Punkt auf der x-Achse erreicht bzw. bis zu einem frei gewählten Messpunkt auf der x-Achse und diesen Bereich nach Möglichkeit farblich macht?
Zum anderen würde ich gerne wissen wie man in Matlab programmiert, das die Fläche nur für Werte die kleiner bzw. größer als z.B 10 sind?

Ich hoffe ihr könnt mir hierbei weiterhelfen

LG Sunrain
edit winkow: code umgebung eingefügt
Private Nachricht senden Benutzer-Profile anzeigen


Seban
Forum-Meister

Forum-Meister


Beiträge: 600
Anmeldedatum: 18.01.12
Wohnort: ---
Version: ab R2014b
     Beitrag Verfasst am: 17.01.2015, 01:51     Titel:
  Antworten mit Zitat      
Hallo Sunrain,

Einfach die x-y-Werte, die du nicht darstellen/berechnen willst, rausschmeißen:
Code:
x = 0:0.01:5;
y = 5-x.^2;

x0 = 3;   % Grenze

log_x = x <= x0;     % Stichwort logische Indizierung
x_neu = x(log_x);
y_neu = y(log_x);

plot(x,y);
hold on;
area(x_neu, y_neu);

trapz(x,y)
trapz(x_neu,y_neu)

Um Nullstellen zu bestimmen, gibt es bestimmt einige Matlab-Funktionen, damit kenne ich mich nicht aus.


Beispiel, die Werte außerhalb des Intervalls [-10, 10] aus der Betrachtung herauszunehmen:
Code:
x = 0:0.01:10;
y = 5-x.^2 .* 1 .* sin(x);

y(y >= 10) = 10;
y(y <= -10) = -10;

plot(x,y);


Hoffe, das hilft schon mal weiter.

Grüße,
Seban
_________________

Richtig fragen
Debugging
Private Nachricht senden Benutzer-Profile anzeigen
 
Sunrain
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 43
Anmeldedatum: 08.01.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.01.2015, 11:10     Titel:
  Antworten mit Zitat      
Also ich bin jetzt folgendermaßen vorgegangen bei meinem Problem

Code:
clear all; clc
data=xlsread('1.xlsx');
x=data(:,1);
y=data(:,2);
figure(1)
plot(x,y,'b','Linewidth',2);
F=trapz(x,y)

% Nur Werte über null oder über 10
z=y;
z(z<0)=0;
hold on
plot(x,z,'r')
hold off
F1=trapz(x,z)

z=y;
z(z<10)=0;
hold on
plot(x,z,'g')
hold off
F10=trapz(x,z)

% Nur Werte bis zur ersten Nullstelle
nmax=min(find(y<0))-1;
F2=trapz(x(1:nmax),y(1:nmax))
F2b = F1/2


das klappt auch alles soweit wunderbar, aber mit dem einfärben der Kurve in einem bestimmten Bereich klappt das nicht so, so habe ich angefangen

Code:
% Ausfüllen
figure(2)
plot(x,y,'r','Linewidth',2);
hold on
fill(x([1 1:nmax nmax]),[0 y(1:nmax) 0],'y');
plot(x,y,'r','Linewidth',2);
hold off
 

Aber bei der fill-Funktion sagt matlab dann Error, hast du vielleicht eine Idee woran das liegen könnte?

LG Sunrain
edit winkow: code umgebung eingefügt
Private Nachricht senden Benutzer-Profile anzeigen
 
Seban
Forum-Meister

Forum-Meister


Beiträge: 600
Anmeldedatum: 18.01.12
Wohnort: ---
Version: ab R2014b
     Beitrag Verfasst am: 19.01.2015, 14:57     Titel:
  Antworten mit Zitat      
Hi,

nmax nicht definiert?

Grüße,
Seban
_________________

Richtig fragen
Debugging
Private Nachricht senden Benutzer-Profile anzeigen
 
Sunrain
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 43
Anmeldedatum: 08.01.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.01.2015, 15:27     Titel:
  Antworten mit Zitat      
Ja genau das ist das Problem, hättest du vielleicht einen Tipp das zu beheben?
LG
Private Nachricht senden Benutzer-Profile anzeigen
 
Seban
Forum-Meister

Forum-Meister


Beiträge: 600
Anmeldedatum: 18.01.12
Wohnort: ---
Version: ab R2014b
     Beitrag Verfasst am: 19.01.2015, 18:31     Titel:
  Antworten mit Zitat      
Ja, nmax definieren Razz

Das hattest du darüber bereits getan, daher dachte ich, du hast es im zweiten Codeabschnitt nur vergessen.

Code:
x = 0:0.01:10;
y = 5-x.^2 .* 1 .* sin(x);

nmax = find(y<0, 1, 'first') - 1;   % entspricht deinem nmax=min(find(y<0))-1;
                                    % Matlab schlägt aber Verwendung von first vor

hold on
fill(x([1 1:nmax nmax]),[0 y(1:nmax) 0],'y');
plot(x,y,'r','Linewidth',2);


Wenn man in den Plot reinzoomt, sieht man, dass dieser Weg die Nullstelle zu bestimmen nicht exakt ist:



Wenn es nur um die grafisch Darstellung geht, dürfte das zu vernachlässigen sein. Wenn das Ergebnis des Integrals möglichst genau sein soll, gibt es wie oben bereits vermutet Matlab-Funktionen, die NS bestimmen oder man nähert sich "von Hand" an.

Ach ja, eben vergessen: Verwende statt clear all besser clearvars. Ersteres löscht mehr aus dem Speicher als nur die Variablen, glaub ua. Funktionen, die Matlab sich zwischenspeichert.

Grüße,
Seban
_________________

Richtig fragen
Debugging
Private Nachricht senden Benutzer-Profile anzeigen
 
Sunrain
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 43
Anmeldedatum: 08.01.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.01.2015, 08:15     Titel:
  Antworten mit Zitat      
ok jetzt nimmt er die nmax-Funktion und berechnet auch die Fläche, allerdings kennzeichnet er diese nicht farbig...
Private Nachricht senden Benutzer-Profile anzeigen
 
Sunrain
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 43
Anmeldedatum: 08.01.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.01.2015, 08:18     Titel:
  Antworten mit Zitat      
und wieso nehmen wir y<0 wenn ich doch den wert auf der x-Achse benötige bzw. bis dahin soll das sein.
Wäre es dann nicht sinnvoller statt y<0, x<0 zu nehmen?
Private Nachricht senden Benutzer-Profile anzeigen
 
Seban
Forum-Meister

Forum-Meister


Beiträge: 600
Anmeldedatum: 18.01.12
Wohnort: ---
Version: ab R2014b
     Beitrag Verfasst am: 20.01.2015, 08:40     Titel:
  Antworten mit Zitat      
Sunrain hat Folgendes geschrieben:
ok jetzt nimmt er die nmax-Funktion und berechnet auch die Fläche, allerdings kennzeichnet er diese nicht farbig...

Bitte poste ein ausführbares Beispiel, in dem man das nachvollziehen kann. In dem von mir geposteten Beispiel wird die Fläche eingefärbt.

Sunrain hat Folgendes geschrieben:
und wieso nehmen wir y<0 wenn ich doch den wert auf der x-Achse benötige bzw. bis dahin soll das sein.
Wäre es dann nicht sinnvoller statt y<0, x<0 zu nehmen?

y = f(x) = 0 ist die Bedingung für eine Nullstelle.
x = 0 liegt auf der y-Achse

Das gesuchte x (bei dem y=0) ist (~)nmax.

Grüße,
Seban
_________________

Richtig fragen
Debugging
Private Nachricht senden Benutzer-Profile anzeigen
 
Sunrain
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 43
Anmeldedatum: 08.01.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.01.2015, 09:23     Titel:
  Antworten mit Zitat      
Code:
clear all; clc
data=xlsread('1.xlsx');
x=data(:,1);
y=data(:,2);
figure(1)
plot(x,y,'b','Linewidth',2);
F=trapz(x,y)
nmax = find(y<0, 1, 'first') - 1;
hold on
fill(x([1 1:nmax nmax]),[0 y(1:nmax) 0],'y');
plot(x,y,'r','Linewidth',2);


So habe ich das in Matlab eingeben, hoffe das ist jetzt auch richtig als Code angeben
edit winkow: code umgebung eingefügt
Private Nachricht senden Benutzer-Profile anzeigen
 
Sunrain
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 43
Anmeldedatum: 08.01.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.01.2015, 09:24     Titel:
  Antworten mit Zitat      
hab das in dem Code fenster eingefügt aber irgendwie zeigt er das nicht richtig an.
wie mach ich das richtig?
Private Nachricht senden Benutzer-Profile anzeigen
 
Seban
Forum-Meister

Forum-Meister


Beiträge: 600
Anmeldedatum: 18.01.12
Wohnort: ---
Version: ab R2014b
     Beitrag Verfasst am: 20.01.2015, 09:40     Titel:
  Antworten mit Zitat      
[code*]hier den Code rein[/code] ohne *

Dein Beispiel kann ich nicht nachvollziehen, da ich 1.xlsx nicht kenne Wink
_________________

Richtig fragen
Debugging
Private Nachricht senden Benutzer-Profile anzeigen
 
Sunrain
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 43
Anmeldedatum: 08.01.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.01.2015, 09:43     Titel:
  Antworten mit Zitat      
1.xlsx ist der name der datei die ich von excel einlese in Matlab um die Werte zu haben
Private Nachricht senden Benutzer-Profile anzeigen
 
Seban
Forum-Meister

Forum-Meister


Beiträge: 600
Anmeldedatum: 18.01.12
Wohnort: ---
Version: ab R2014b
     Beitrag Verfasst am: 20.01.2015, 09:51     Titel:
  Antworten mit Zitat      
Seban hat Folgendes geschrieben:
Bitte poste ein ausführbares Beispiel, in dem man das nachvollziehen kann. In dem von mir geposteten Beispiel wird die Fläche eingefärbt.

_________________

Richtig fragen
Debugging
Private Nachricht senden Benutzer-Profile anzeigen
 
Sunrain
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 43
Anmeldedatum: 08.01.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.01.2015, 10:18     Titel:
  Antworten mit Zitat      
Also wenn ich den Code den ich um 9.23 Uhr gepostet habe erzeugt matlab das Bild im Anhang

1.fig
 Beschreibung:

Download
 Dateiname:  1.fig
 Dateigröße:  13.58 KB
 Heruntergeladen:  338 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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.