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

Mewsserte Matlab Integrieren

 

jasmin_89
Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 08.04.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.11.2020, 18:49     Titel: Mewsserte Matlab Integrieren
  Antworten mit Zitat      
Hi,
ich habe in Matlab einen Datensatz von 50 Werten (50 Werte von a)

Meine Funktion ist:
y=a

Ich muss nun diese Funktion über eine Uhrzeit 12.00 Uhr von bis 16.00 Uhr integrieren.

Ich würde dies in Matlab so machen:
Code:
integral(@(a) a, 12, 16)


Aber kann ich da für die Obere und Untere Grenze einfach die Zahl 16 für 16 Uhr eintragen? Oder muss ich dies in rad (bzw. Winkelminuten umwandeln)

Danke
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 02.11.2020, 20:30     Titel:
  Antworten mit Zitat      
Hallo,

hast du eine Funktion oder einen Datensatz? Das ist ein ziemlicher Unterschied.
Mit dem momentanen Befehl verwendest du jedenfalls keinen Datensatz.

Zitat:
Aber kann ich da für die Obere und Untere Grenze einfach die Zahl 16 für 16 Uhr eintragen?

Kannst du meines Erachtens. Es ist lediglich eine Frage der Einheit. Wenn a z.B. in kW ist, dann bekommst du damit kWh.

Zitat:
Oder muss ich dies in rad (bzw. Winkelminuten umwandeln)

Wenn, dann würde ich das in "ganz normale" Minuten umwandeln. Ich sehe keinerlei Bezug zu Winkeln.

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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
jasmin_89
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 08.04.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.11.2020, 21:38     Titel:
  Antworten mit Zitat      
Um genau zu sein habe ich von einem Tag (halbstündlich) gemessene UV-Index Werte (Ultravioletstrahlung). Und wenn ich diese Integriere erhalte ich die UV-Bestrahlungsstärke (UV_Dosis). Und diese Bestrahlungsstärke muss ich für den Zeitraum von 12.00 Uhr bis 16.00 Uhr berechnen. Ich habe diese Formel zu verfügung:

Das Integral zeichen konnte ich hier leider nicht darstellen:

UV_{Dosis}=Integral* { UVI(t) dt }
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 02.11.2020, 21:53     Titel:
  Antworten mit Zitat      
Hallo,

dieses Integral hat nun aber wenig mit dem vorher berechneten zu tun. Hier würde ich stattdessen trapz verwenden. Wenn du da über einen bestimmten Bereich integrieren willst, musst du die Daten vorab filtern.

Integrale darstellen geht mit \int.
UV_{Dosis}=\int{ UVI(t) dt }

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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
jasmin_89
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 08.04.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.11.2020, 06:54     Titel:
  Antworten mit Zitat      
Ok danke für die Info. Mit Filtern meinst du die Messwerte Zeitlich filtern?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 03.11.2020, 08:47     Titel:
  Antworten mit Zitat      
Hallo,

ja, z.B.
Code:
ySelected = y(x >= 12 & x <= 16);


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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
jasmin_89
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 08.04.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.11.2020, 09:55     Titel:
  Antworten mit Zitat      
Ah ok, dann wenn ich die Trapez Formel verwende dann müsste dies mein Integral sein (Bzw. Strahlenbelastung in diesem Zeitraum):

UV_{Dosis}=trapz(ySelected)

Ich möchte nun den Wert für den Zeitraum von 12:30 bis 13:15 berechnen. Dort habe ich nur einen Datenwert. (Ich habe praktisch Werte um 12:25 Uhr; 12:55 Uhr; 13:25... usw]

Wenn ich diesen Wert nun mit

Code:
y_{Selected} = y(x >= 12.30 & x <= 13.15)
UV_{Dosis}=trapz(ySelected)

berechne bekomme ich Null heraus. Das kann aber nicht stimmen.

Was mache ich da falsch? thx:)
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 03.11.2020, 17:33     Titel:
  Antworten mit Zitat      
Hallo,

trapy ist so ausgelegt, dass über die vorhandenen Werte integriert wird. Dass du Integrationsgrenzen vorgibst, für die du keine Datenwerte hast, ist nicht im Geiste der Trapezregel. Wenn du das willst, müsstest du die Daten vorab geeignet interpolieren.

Sind die Uhrzeiten wirklich als Dezimalzahlen in dieser Form gegeben? Das finde ich recht seltsam... 12:30 würde für mich eher 12.5 entsprechen. Da muss man dann auch sehr aufpassen, weil der Abstand zwischen 12.59 und 13.0 nicht 0.41, sondern 0.01 wäre. Das ist äußerst gefährlich!

Achte auch auf durchgehende Verwendung des selben Namens im Code (ySelected vs. y_{Selected}). Ich würde auch die Syntax trapz(x, y) verwenden, aber eben mit "vernünftigen" x-Werten.

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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
jasmin_89
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 08.04.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.11.2020, 18:21     Titel:
  Antworten mit Zitat      
Ah ok ich glaube da lag der Fehler. Die Uhrzeiten liegen so vor: 12.5 usw....


Meine Berechnung lautet nun so:

Code:
ySelected = y(x >= 12.5 & x <= 13.25);


Nun erhalte ich auch einen Wert. Muss ich die Daten nun vorher aber interpolieren oder kann ich das so lassen?

Denn die Daten habe ich interpoliert um diese grafisch Darzustellen.

Code:
xi= linspace(1,48, 500);
yi= interp1(x, y, xi, 'spline');
plot(xi, yi, 'r')


Wenn ich die interpolierten Werte eingebe bekomme ich einen sehr großen Unterschied für den berechneten Wert UV_{Dosis}
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 03.11.2020, 20:43     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Muss ich die Daten nun vorher aber interpolieren oder kann ich das so lassen?

Das hängt davon ab, ob du Werte für 12.5 und 13.25 hast oder nicht. Wenn du sie nicht hast, musst du sie interpolieren oder das Integral für einen Datenbereich berechnen, bei dem du Werte an den Randpunkten hast.

Zitat:
Wenn ich die interpolierten Werte eingebe bekomme ich einen sehr großen Unterschied für den berechneten Wert UV_{Dosis}

Ich hatte dir ja vorgeschlagen, die Syntax trapz(x,y) zu verwenden. Wenn du sie nicht verwendest und stattdessen trapz(y), dann geht MATLAB davon aus, dass die x-Werte gleichmäßig abgetastet mit Schrittweite 1 sind. Wenn sie das nicht sind, ist das Ergebnis ziemlich sicher falsch. Steht übrigens auch so in der Doku.

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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
jasmin_89
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 08.04.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.11.2020, 20:56     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:

Das hängt davon ab, ob du Werte für 12.5 und 13.25 hast oder nicht. Wenn du sie nicht hast, musst du sie interpolieren oder das Integral für einen Datenbereich berechnen, bei dem du Werte an den Randpunkten hast.


In diesem Bereich habe ich genau zwei Werte. Ist es dann besser zu interpolieren?

LG,
jasmin_89
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 03.11.2020, 21:06     Titel:
  Antworten mit Zitat      
Hallo,

wenn diese beiden Werte nicht auf dem Rand liegen: ja!

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 ;)
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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 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.