|
guguli |
Forum-Century
|
|
Beiträge: 166
|
|
|
|
Anmeldedatum: 04.04.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 11.09.2013, 09:31
Titel: discrete Time integrator
|
|
Hallo zusammen,
kann mir einer Sagen wie ich die Funktion discret integrieren kann??
f(x) = sin(x)
alsoich möchte das tun
THX
|
|
|
|
|
guguli |
Themenstarter
Forum-Century
|
|
Beiträge: 166
|
|
|
|
Anmeldedatum: 04.04.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 13.09.2013, 17:21
Titel:
|
|
ich hab folgendermaßen bis jetzt gemacht:
hab einen Vector erstellt [0:10] dann habe ich jeden einzelnen Punkt berechnet, und die Summe davon ist ja die Fläche unter meiner Funktion. Aber wie kann ich aus diesen Punkten den Graph scopen??? Oder geht das vielleicht einfacher???
THX
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 13.09.2013, 18:58
Titel:
|
|
Hallo,
was soll "discrete integrieren" heißen?
Integrale lassen sich am einfachsten direkt in MATLAB berechnen:
Grüße,
Harald
|
|
|
guguli |
Themenstarter
Forum-Century
|
|
Beiträge: 166
|
|
|
|
Anmeldedatum: 04.04.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 13.09.2013, 22:05
Titel:
|
|
HI, ich will das aber in Simulink machen. Ambesten wäres mit discrete tim integrator block, aber kriege ich nicht hin .. Kannste mir nen Tipp geben?? Ichbin echt seit Tagen dran:(
THX
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 14.09.2013, 08:50
Titel:
|
|
Hallo,
Zitat: |
HI, ich will das aber in Simulink machen. |
Und warum? Die Aufgabe für sich wäre in MATLAB deutlich einfacher erfüllt.
Wenn du unbedingt willst, kannst du auch den von dir gewünschten Block verwenden. Du musst nur die Sample Time so einstellen, dass du eine vernünftige Genauigkeit bekommst. Beispiel im Anhang.
Grüße,
Harald
Beschreibung: |
|
Download |
Dateiname: |
sin0to10.mdl |
Dateigröße: |
27.36 KB |
Heruntergeladen: |
624 mal |
|
|
|
guguli |
Themenstarter
Forum-Century
|
|
Beiträge: 166
|
|
|
|
Anmeldedatum: 04.04.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 14.09.2013, 09:47
Titel:
|
|
Hi, danke nochmal.
Aber wie geht das denn wenn die Funktion etwas komplizierter wird. also mit konstanten und so.
Z.B
f(x) = sinh(a*x) - sin(a.*x)
wobei a = 5
Im anhang hab ich meine Lösung, ist sie denn korrekt??? wenn ich von 0 bis 100 integrieren mächte?
Beschreibung: |
|
Download |
Dateiname: |
t.mdl |
Dateigröße: |
26.02 KB |
Heruntergeladen: |
571 mal |
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 14.09.2013, 10:06
Titel:
|
|
|
|
|
Hallo,
bitte auf Rückfragen eingehen.
Ich bin nach wie vor der Meinung, dass eine Berechnung eines Integrals auf diese Weise recht sinnfrei ist. Für sich genommen sowieso, aber wohl auch als Teil eines größeren ganzen. Jedenfalls bin ich zuversichtlich, dir auch in letzterem Fall einen sinnvolleren Vorschlag machen zu können. Dazu müsste ich aber wissen, was dieses größere ganze ist.
In der Implementierung sind etliche Fehler:
- Anfangsbedingung sollte 0 sein, zumindest bei der von dir vorgegebenen Problemstellung.
- Sättigung ist nicht sinnvoll!
- du berücksichtigst x überhaupt nicht, sondern integrierst über eine Konstante!
- Endzeit der Integration muss über Simulationszeit eingestellt werden
Wenn du die integral-Funktion schon nicht nutzen willst, um das Integral zu berechnen, dann nutze sie doch wenigstens, um das Ergebnis zu überprüfen:
Als Ergebnis bekommt man da 1.4036e+216!
Ich habe eine meines Erachtens korrekte Implementierung angehängt.
Grüße,
Harald
Beschreibung: |
|
Download |
Dateiname: |
integriereF.mdl |
Dateigröße: |
31.84 KB |
Heruntergeladen: |
594 mal |
|
|
|
guguli |
Themenstarter
Forum-Century
|
|
Beiträge: 166
|
|
|
|
Anmeldedatum: 04.04.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 14.09.2013, 13:49
Titel:
|
|
Danke, das ist genau das was ich wollte.
Das funktioniert sehr gut, aber jetzt bekomme ich an einer anderen Stelle wenn ich integriere ein NaN zurück? Dasproblem ist ich kann das nicht schicken weil das sehr gruß und komplex ist. Aber kannste mir vllt sagen wann descretetime integrator einen NaN zurück gibt???? hab das Signal befro ich integriere auch gechekt, ist alles wunderbar, aber nach dem integral, kriege ich nen Nan
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 14.09.2013, 14:39
Titel:
|
|
Hallo,
vermutlich hätte ich das Modell nicht anhängen sollen, denn ich würde das selbst nie so machen. Vor allem die Diskretisierung ist für mich fragwürdig, da da völliger Unsinn herauskommen kann.
Warum NaN herauskommt, kann ich ohne das Modell an sich nicht sagen.
Grüße,
Harald
|
|
|
guguli |
Themenstarter
Forum-Century
|
|
Beiträge: 166
|
|
|
|
Anmeldedatum: 04.04.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 14.09.2013, 15:38
Titel:
|
|
Hi,
Ja aber das problem ist dass ich das Diskretisierung muss, da das ganze noch ins dSPACE kompelierbar sein muss. Und wieso kann da was Falsches raus kommen?
Also ich versuch die formel zu erklären.
sein f(x) die erste Formel, davon ich das Integral mache, F(X)
und g(x) = F(x) * .... davon mache ich ach ein Integral G(x)
und genau da ist mein Fehler, ich glaub er mag das nicht wenn ich zwei Integrale gleich zeitig mache, oder was mienste???
THX
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 14.09.2013, 16:36
Titel:
|
|
|
|
|
Hallo,
Zitat: |
Ja aber das problem ist dass ich das Diskretisierung muss, da das ganze noch ins dSPACE kompelierbar sein muss. |
Es wäre schön gewesen, das eher zu erfahren
Ich kenne mich nicht mit dSPACE aus. Wenn es da die gleichen Anforderungen wie bei allgemeiner Codegenerierung gibt, wäre es meines Erachtens sinnvoller, einen (kontinuierlichen) Integrator zu verwenden und dann einen Fixed-Step Löser zu verwenden. Als Referenz würde ich jedoch immer einen Variable-Step - Löser verwenden.
Heißt: zunächst mit Variable-Step arbeiten und dann verifizieren, dass bei Fixed-Step etwas vergleichbares herauskommt.
Zitat: |
Und wieso kann da was Falsches raus kommen? |
Weil Diskretisierungen immer Annäherungen sind. Wenn man Pech hat, sehr schlechte.
Zitat: |
und genau da ist mein Fehler, ich glaub er mag das nicht wenn ich zwei Integrale gleich zeitig mache |
Ich bezweifle, dass es daran liegt. Die Signale werden nacheinander berechnet. Ob eines nun Ausgang eines Integrators ist oder irgendwie anders zustandekommt, ist dabei gleichgültig.
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.
|
|