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

Integrale / Summe von Nullen ergibt Werten die Ungleich null

 

feynomen
Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 12.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.07.2012, 21:55     Titel: Integrale / Summe von Nullen ergibt Werten die Ungleich null
  Antworten mit Zitat      
Hallo zusammen,

ich will ein paar Werte durch Integrator summieren. Nun weiss ich nicht mehr weiter, da der Integrator spuckt für eine Reihe von Nullen, Werte die ungleich null sind !

Kurz gesagt, Die Integrale von 0 -> 0 ( oder die Summe von Nullen ) sollte *natürlich* null ergeben...

DIES KLAPPT ABER BEI MIR NICHT !!!

o_0

Anhänge: -Scope zeigt die Eingangswerte der Integrator
-Integrale von Nullen ergibt Werte

Hat jemand einen Vorschlag ???

scope til 69 seconds.jpg
 Beschreibung:

Download
 Dateiname:  scope til 69 seconds.jpg
 Dateigröße:  46.64 KB
 Heruntergeladen:  666 mal
integral von null.jpg
 Beschreibung:

Download
 Dateiname:  integral von null.jpg
 Dateigröße:  30.57 KB
 Heruntergeladen:  650 mal
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: 11.07.2012, 22:08     Titel:
  Antworten mit Zitat      
Hallo,

eine Erklärung könnte sein, dass die Werte minimal von 0 verschieden sind und sich im Laufe der Zeit aufsummieren.

Vorschlag:
Bei dem Scope mal Autoskalierung ansehen. Vor allem aber auch den gesamten Bereich; vielleicht war das nur am Ende 0.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 12.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.07.2012, 22:32     Titel:
  Antworten mit Zitat      
Hallo Harald,

Vielen Dank für die schnelle Antwort.
Das mit den kleinen Werten kann leider nicht sein... Denn in den embedded funktion habe ich folgende programmiert:


function [a, b, c, d] = fcn(u, zyklus)
%#eml
a=0;
b=0;
c=0;
d=0;

if u <= 0.25
a=zyklus; b=0; c = 0; d=0;

elseif u > 0.25 && u <= 0.5
b=zyklus; a = 0; c = 0; d = 0;

elseif u > 0.5 && u <= 0.75
c=zyklus; a = 0; b=0; d = 0;

elseif u > 0.75
d=zyklus; a=0; b=0; c=0;
end


Ich kann somit entweder Zyklus oder 0 als Eingang der Integrale haben !!!
Ich habe auch den Display von << Short >> auf << Long e >> geändert... Da stehen voller nullen !!!
Meine Haare sind schon grau ey ...

long e.jpg
 Beschreibung:

Download
 Dateiname:  long e.jpg
 Dateigröße:  24.71 KB
 Heruntergeladen:  675 mal
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: 11.07.2012, 22:52     Titel:
  Antworten mit Zitat      
Hallo,

häng doch bitte das Modell, bzw. eine vereinfachte Version davon, anstatt Screenshots davon. Dann lässt sich das leichter nachvollziehen.

Wie gesagt, du solltest dir das Signal auch über den gesamten Simulationsbereich ansehen.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 12.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.07.2012, 10:20     Titel:
  Antworten mit Zitat      
Hallo Harald,

hier anbei ist ein vereinfachtes Model:

-Simulation
-fuzzyload ( bitte laufen lassen vor der Simulation um die Fuzzy daten zu laden )
-driverstil.fis



Block "Simulation/Weg" öffnen : Die Darstellung mit den << Switch >> und mit dem << embededd funktion >> sollten dasselbe darstellen !

Die Simulation einfach die erste 100 Sekunde laufen lassen.

Mein Problem liegt vor und nach den Integratoren 1 und Integrator 5 !!!

Ich bin nicht der beste Programmierer oder Simulink benutzer aber ich bin ziemlich ratlos bei der Sache Shocked

Matlab.rar
 Beschreibung:

Download
 Dateiname:  Matlab.rar
 Dateigröße:  13.29 KB
 Heruntergeladen:  371 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
cybbi
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 84
Anmeldedatum: 23.08.11
Wohnort: ---
Version: Alle
     Beitrag Verfasst am: 12.07.2012, 14:33     Titel:
  Antworten mit Zitat      
Hallo,

also nach langem Hin-und Herprobieren sind wir darauf gekommen, dass bei der numerischen Integration sogenannte Minor-steps auftreten. Diese minor-steps bei der numerischen Integration führen dazu, dass eben Werte, die nicht 0 sind, mit aufintegriert werden. Deswegen ist das Ergebnis so gesehen nicht das erwartete.

Lösung für das ganze Problem:
Setze Sample Times auch für die Matlab Function Blöcke (Rechts-Klick auf den ML Function Block --> Block Parameters --> Sample Time von "-1" auf "0.5" abändern).

Das Problem liegt ursächlich in von 0 verschiedenen Eingangswerten, die eben "zwischen" den Major Time Steps (das sind die, die du über fixed step solver einstellst) übergeben werden. Wo jetzt genau diese von 0 verschiedenen Eingangswerte (oder drücken wir uns mit "nicht sofort sichtbare Eingangswerte" aus) herkommen, liegt nicht an deinem Matlab Function Block. Ich würde in erster Schätzung mal vermuten, dass es an deiner Lookup-Tabelle liegt.
Eine weitere Lösung könnte hier noch sein, bei der Lookup Tabelle 0.5 als Sample Time einzustellen. Vermutlich wird er dir dann eine Fehlermeldung bringen, dass du doch bitte die Sample Times aufeinander abstimmen sollst. Abhilfe schafft dann ein Rate Transition Block direkt zwischen Ramp und Lookup Table, bei dem du auch als Output Sample Time 0.5 angibst. Weiterhin musst du vermutlich unter Umständen unter Configuration Parameters --> Diagnostics --> Sample Time --> Multitask Rate Transition auf "Warning" umstellen.

Wenn du das alles gemacht hast, schau dir mal dein Signal "u" genau an. Du wirst feststellen, dass das Signal ganz schön schwanken wird (vor dem Matlab Function Block). Das erklärt dann auch das aufintegrierte Signal.

Hoffe, dass das zumindest ein wenig weiterhilft Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
feynomen
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 12.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.07.2012, 17:36     Titel:
  Antworten mit Zitat      
Hallo,
Very Happy Very Happy Very Happy Very Happy Very Happy
Ich werde sofort die vorgeschlagene Lösung einsetzen Cool und bedanke mich ganz herzlich im Voraus Razz , denn ich wäre von allein nicht drauf gekommen !!!

Ich melde mich noch *feedback* !
Private Nachricht senden Benutzer-Profile anzeigen
 
feynomen
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 12.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.07.2012, 18:25     Titel:
  Antworten mit Zitat      
Hello nochmal Smile

ich habe soweit den Time step der gesamte Simulation ( Simulation => config. Parameters => solver => fixed step-size ) auf 0.1 geändert und die Sample-Time der Matlab-blocks auch auf 0.1 gesetzt, und auf einmal klappt es soweit *nur bei der Lösungsweg mit den Matlab-blöcke*! Laughing Die integrale von den Nullen ergibt dann auch Null !

Mal ne Frage Question Diese Änderungen gelten leider nicht für mein Embedded Matlab Funktion: Das Problem besteht weiterhin da Shocked

Auf jeden Fall, mega vielen Dank... Ich wäre wirklich nicht drauf gekommen !!!! Ihr habt es einfach drauf.
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: 13.07.2012, 08:07     Titel:
  Antworten mit Zitat      
Hallo,

mal eine ganz andere Frage: warum nutzt du einen Fixed-Step - Solver? Ich würde einen Fixed-Step - Solver an sich nur einsetzen, wenn es um Codegenerierung geht.

In jedem anderen Fall würde ich einen Variable-Step - Solver bevorzugen. Da könnte man eventuell eine Maximum Stepsize angeben, um zu große Schritte zu vermeiden.

Ich habe mir das ursprüngliche Problem auch mal angesehen. Meines Erachtens ist die Ausgabe des Integrators korrekt. Das in den Integrator geführte Signal sieht lediglich so aus, als ob es konstant Null wäre, ist es aber nicht. Das kann man sehen, wenn man sich im Embedded MATLAB Function Block mal über fprintf jede einzelne Auswertung des Blocks ausgeben lässt.

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