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

Integral berechnen automtisch per Schleife ?

 

blubber
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 28.06.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.06.2010, 10:49     Titel: Integral berechnen automtisch per Schleife ?
  Antworten mit Zitat      
Hallo allerseits

ist es möglich bei einen plot der immer wieder mal die nulllinie kreuzt, immer von 0 bis zur nächsten 0 das integral zu berechnen und danach eine art übersicht zu erstellen.

Also soundsooft ist das integral >5, soundsooft >7,...>15 etc. ?


Weil per ranzoomen und jeden abschnitt mit trapz (zeit,zeit) zu berechnen ist bei ca. 50 Abschnitten sehr zeitintensiv Smile

danke schonmal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 28.06.2010, 11:37     Titel:
  Antworten mit Zitat      
Hallo,

das Identifizieren der Nullstellen geht mit
Code:

Für die Erstellung der Übersicht würde sich HIST anbieten.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
blubber
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 28.06.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.06.2010, 20:57     Titel:
  Antworten mit Zitat      
also das mit den Nullstellen berechnen hat geklappt, nur leider sind das viele (ca.50). Kann man MAtlab nicht sagen es soll immer von Nullstelle zu Nullstelle ein Integral bilden und ausgeben?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

du brauchst ja nur eine for-Schleife über den Nullstellenvektor laufen lassen und das Integral jeweils von einer zur nächsten Nullstelle laufen lassen. Etwa so:
Code:
nullstellen = find(diff(sign(x)));
integrale = zeros(size(nullstellen)); integrale(end) = [];
for I=1:length(nullstellen)-1
integrale(I) = trapz(x(nullstellen(I):nullstellen(I+1)), y(nullstellen(I):nullstellen(I+1)));
end


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
blubber
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 28.06.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.06.2010, 22:07     Titel:
  Antworten mit Zitat      
oh man ich blutiger anfänger bekomms natürlich nicht hin.

ich poste den code mit eingesetzen parametern, vielleicht ist ja der fehler offensichtlich

Code:
nullstellen = find(diff(sign(results.leistung.Values(1:51819,1))));
integrale = zeros(size(nullstellen)); integrale(end) = [];
for I=1:length(nullstellen)-1
integrale(I) = trapz(1:51819(nullstellen(I):nullstellen(I+1)), 1:150000(nullstellen(I):nullstellen(I+1)));
end
[/code]
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 28.06.2010, 22:34     Titel:
  Antworten mit Zitat      
Hallo,

x und y sind hier nicht irgendwelche 1:N - Vektoren, sondern die Datenvektoren!
y = results.leistung.Values
Was x ist, kann ich aus deinem Code nicht erkennen - die zu diesem y-Vektor gehörigen x-Werte eben.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
blubber
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 28.06.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.06.2010, 09:35     Titel:
  Antworten mit Zitat      
danke
Private Nachricht senden Benutzer-Profile anzeigen
 
blubber
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 28.06.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.07.2010, 14:26     Titel:
  Antworten mit Zitat      
ich bins nochmal Smile

bei

Code:
for I=1:length(nullstellen)-1
integrale(I) = trapz(1:250000)(nullstellen(I):nullstellen(I+1)), Results.pwrEmotElMot.Values(1:51819)(nullstellen(I):nullstellen(I+1));
end



kommt folgende Fehlermeldung:
??? Error: ()-indexing must appear last in an index expression.

zur Erklärung: (1:250000) ist Wert auf der y-Achse, Leistung in Watt

und (1:51819) ist der Wert auf der X-Achse, nämlich Sekunden
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 03.07.2010, 23:31     Titel:
  Antworten mit Zitat      
Hallo,

Du kannst da nicht einfach irgendwelche Zahlen reinschreiben.
Von mir aus setze x = 1:51819, und verwende dann x stattdessen.

Dieser Teil
Code:
Results.pwrEmotElMot.Values(1:51819)(nullstellen(I):nullstellen(I+1));
sieht aber ohnehin unsinnig aus - mir ist beim besten Willen nicht klar, was das soll.

Grüße,
Harald
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 - 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.