|
|
Integrale / Summe von Nullen ergibt Werten die Ungleich null |
|
feynomen |
Forum-Anfänger
|
|
Beiträge: 19
|
|
|
|
Anmeldedatum: 12.04.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 11.07.2012, 21:55
Titel: Integrale / Summe von Nullen ergibt Werten die Ungleich null
|
|
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 ???
Beschreibung: |
|
Download |
Dateiname: |
scope til 69 seconds.jpg |
Dateigröße: |
46.64 KB |
Heruntergeladen: |
666 mal |
Beschreibung: |
|
Download |
Dateiname: |
integral von null.jpg |
Dateigröße: |
30.57 KB |
Heruntergeladen: |
650 mal |
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 11.07.2012, 22:08
Titel:
|
|
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
|
|
|
feynomen |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 19
|
|
|
|
Anmeldedatum: 12.04.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 11.07.2012, 22:32
Titel:
|
|
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 ...
Beschreibung: |
|
Download |
Dateiname: |
long e.jpg |
Dateigröße: |
24.71 KB |
Heruntergeladen: |
675 mal |
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 11.07.2012, 22:52
Titel:
|
|
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
|
|
|
feynomen |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 19
|
|
|
|
Anmeldedatum: 12.04.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 12.07.2012, 10:20
Titel:
|
|
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
Beschreibung: |
|
Download |
Dateiname: |
Matlab.rar |
Dateigröße: |
13.29 KB |
Heruntergeladen: |
371 mal |
|
|
|
cybbi |
Forum-Fortgeschrittener
|
|
Beiträge: 84
|
|
|
|
Anmeldedatum: 23.08.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: Alle
|
|
|
|
|
|
Verfasst am: 12.07.2012, 14:33
Titel:
|
|
|
|
|
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
|
|
|
feynomen |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 19
|
|
|
|
Anmeldedatum: 12.04.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 12.07.2012, 17:36
Titel:
|
|
Hallo,
Ich werde sofort die vorgeschlagene Lösung einsetzen und bedanke mich ganz herzlich im Voraus , denn ich wäre von allein nicht drauf gekommen !!!
Ich melde mich noch *feedback* !
|
|
|
feynomen |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 19
|
|
|
|
Anmeldedatum: 12.04.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 12.07.2012, 18:25
Titel:
|
|
Hello nochmal
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*! Die integrale von den Nullen ergibt dann auch Null !
Mal ne Frage Diese Änderungen gelten leider nicht für mein Embedded Matlab Funktion: Das Problem besteht weiterhin da
Auf jeden Fall, mega vielen Dank... Ich wäre wirklich nicht drauf gekommen !!!! Ihr habt es einfach drauf.
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 13.07.2012, 08:07
Titel:
|
|
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
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|