|
|
Dringende Frage zur Integration von einem Signal |
|
Lysop |

Forum-Anfänger
|
 |
Beiträge: 30
|
 |
|
 |
Anmeldedatum: 12.12.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 04.01.2011, 22:12
Titel: Dringende Frage zur Integration von einem Signal
|
 |
Hallo Leute...
folgendes Problem:
Ich habe ein Signal in Abhängigkeit von der Zeit.
Dieses Signal muss noch bearbeitet werden, nach folgender Formel:
folgendes habe ich in Matlab:
-Einen Vektor KB_t (in der Formel KB )mit den Ausgangswerten
-einen Zeitvektor t
-
und dann den aufruf
Ich möchte das ganze halt vektoriell lösen, weil mit einer forschleife bei über 4 millionen werten...besser nicht
Der Fehler der jetzt immer kommt ist
Error using ==> mtimes
Inner Matrix dimensions must agree.
Das Problem sind ja anscheinend die Grenzen des Integrals...wie kann ich das richtig hinbiegen?
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 04.01.2011, 22:25
Titel:
|
 |
Hallo,
dafür müsste KB eine von xi abhängige Funktion, es ist aber wohl ein Datenvektor. Dafür würde ich dann stattdessen CUMTRAPZ verwenden.
Grüße,
Harald
|
|
|
Lysop |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 30
|
 |
|
 |
Anmeldedatum: 12.12.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 05.01.2011, 14:30
Titel:
|
 |
Hallo, erstmal danke für die Antwort...
Aber ich habe mir jetzt mal cumtrapz angeguckt und wirklich weiter hilft es mir auch nicht.
Das problem, was sich mir stellt, ist, wie kann ich das ganze ohne forschleife für das t bewältigen?
Wenn er das vektoriell durcharbeitet, wie kann ich dann ein t an die integral-funktion durchgeben?
Ich hoffe, du weißt, was ich meine!
So langsam aber sicher verlier ich den durchblick!
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 05.01.2011, 15:58
Titel:
|
 |
Hallo Lysop,
Zitat: |
Das problem, was sich mir stellt, ist, wie kann ich das ganze ohne forschleife für das t bewältigen? |
Wenn Du es mit einer FOR-Schleife lösen kannst, poste dochmal den gesamten (relevanten) Code hier. Dann ist es viel einfacher, die nötigen Änderungen einzufügen.
In Deinem ersten Posting schriebst Du:
Zitat: |
Der Fehler der jetzt immer kommt ist
Error using ==> mtimes
Inner Matrix dimensions must agree. |
In welcher Zeile erscheint denn der Fehler? Hast Du versucht, diese Zeile zu verbessern? Wie?
Gruß, Jan
|
|
|
Lysop |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 30
|
 |
|
 |
Anmeldedatum: 12.12.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 05.01.2011, 16:44
Titel:
|
 |
Hab das mit einer for-schleife gestern nur teilweise hinbekommen, aber da hatte ich auch das Integral noch nicht dabei. quadl meckert irgendwie immer rum, egal wobei.
Das Problem an der ganzen Sache ist, dass ich aus Datenvektoren auslese.
In der Formel oben kommen zwar t und xsi vor, aber sie müssen unterschiedlich genutzt werden.
Bei dem Integral von xsi = 0 bis t sind es z.b. eigentlich ganzzahlige Werte von 1 - 4 millionen(laufvariablen), da ich 4 millionen messwerte habe.
Bei der Exp-Funktion sind es allerdings wirkliche Zeitwerte, die ich aus einem Zeitvektor auslesen muss.
Besser wäre die Formel wie ich sie im Anhang habe:
Ich habe nämich einmal den Datenvektor KB und einmal den Zeitvektor t
und die gehe ich halt mit der Laufvariablen i = 1: 4 Millionen durch
Ich versuche das ganze jetzt mal mit nested functions...
Beschreibung: |
|
 Download |
Dateiname: |
Formel.JPG |
Dateigröße: |
14.17 KB |
Heruntergeladen: |
425 mal |
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 05.01.2011, 17:47
Titel:
|
 |
Hallo Lysop,
Zitat: |
Hab das mit einer for-schleife gestern nur teilweise hinbekommen, aber da hatte ich auch das Integral noch nicht dabei. quadl meckert irgendwie immer rum, egal wobei. |
Wenn Du den Source Code postest und die dazugehörige Fehlermeldung, könnten wir Dir wahrscheinlich viel leichter helfen.
Zitat: |
Das Problem an der ganzen Sache ist, dass ich aus Datenvektoren auslese. |
Darunter z.B. kann ich mir nämlich nichts konkretes vorstellen.
Zitat: |
In der Formel oben kommen zwar t und xsi vor, aber sie müssen unterschiedlich genutzt werden. |
Darunter auch nicht.
Zitat: |
Bei dem Integral von xsi = 0 bis t sind es z.b. eigentlich ganzzahlige Werte von 1 - 4 millionen(laufvariablen), da ich 4 millionen messwerte habe. |
Hier wird nicht klar, was "es" ist.
Wenn Du dagegen Dein Programm zeigst, wird vermutlich auf Anhieb klar, was Du eigentlich berechnest.
Gruß, Jan
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 05.01.2011, 18:04
Titel:
|
 |
Hallo,
ich meine, das Problem verstanden und auch korrekt umgesetzt zu haben. Ich meine zudem, dass du mit quadl Schwierigkeiten hast, weil es für dein Problem nicht geeignet ist.
Ich habe das mal für ein Beispielproblem umgesetzt, und wenn ich mich nicht irre, ist das die Lösung deines Problems:
Hinweis: exp(-t/tau) hängt nicht von der Integrationsvariable ab und wurde daher vorgezogen; das vereinfacht das ganze.
Dies wäre die Lösung des gesamten Problems. Selbst wenn es nicht korrekt ist, sollte nur die eine oder andere kleine Modifikation notwendig sein.
Grüße,
Harald
|
|
|
Lysop |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 30
|
 |
|
 |
Anmeldedatum: 12.12.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 05.01.2011, 18:20
Titel:
|
 |
|
 |
|
Ok, das ist alles etwas wirsch.
Ich versuch das ganze jetzt nochmal von ganz vorne:
Ich habe einen Vektor KB (4000000*1 double) da sind meine Messwerte drin
Ich habe einen Zeitvektor t (1*4000000 double) da sind meine Zeitschritte drin (0-3600 sekunden => schrittweite also 1/1200 sekunde)
Ich muss einen neuen Vektor erzeugen- KBF- ,der dementsprechend auch (4000000*1 double) haben muss.
Dieser Vektor wird nach der Formel, die im ersten Beitrag und im vorletzten Beitrag nochmal modifiziert steht!
hätte ich eine forschleife würde das ganze erstmal so aussehen
Jetzt muss ich aber bevor ich KBF erzeugen will vorher noch einen Vektor "Integral" erzeugen.
Integral wäre also auch wieder ein< 4000000*1 double> Vektor und dementsprechend:
jetzt bräuchte ich also eine Funktion "Fkt* mit den Inputs: x, der Zählvariablen i , dem Zeitvektor t und dem Datenvektor KB
In dieser Funktion sollte stehen:
möchte ich jetzt erstmal testen, ob er Integral erstellt, teste ich es mit der for-schleife mit i
und erhalte folgende Fehlermeldung:
??? Attempted to access y(13); index out of bounds because numel(y)=1.
Error in ==> quadl at 78
if ~isfinite(y(13))
Was sagt mir das?[/code]
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 05.01.2011, 18:30
Titel:
|
 |
Hallo,
hast du meinen Beitrag davor gelesen? Wenn nicht, bitte nachholen.
In deinem Fall wirst du t oder KB transponieren müssen, damit sie die gleichen Dimensionen haben.
Im übrigen integrierst du in deinem Code von 1 ab, in der Formel steht von 0 ab.
Grüße,
Harald
|
|
|
Lysop |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 30
|
 |
|
 |
Anmeldedatum: 12.12.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 05.01.2011, 20:24
Titel:
|
 |
Hallo Harald, ich werd das morgen früh mal ausprobieren...
hab jetzt nur schnell drüber geguckt...dein xsi geht in 0.01 schritten von 0 bis 1...was hat es damit auf sich?
Ich weiß, dass ich von 1 an integriere...aber das problem ist, dass es nicht von 0 an geht.
ich lese ja aus einem Vektor aus mit dem Wert und ein "nulltes Element" existiert ja nicht!
mein erster wert in den vektoren entspricht also dementsprechend dem wert bei t = 0
|
|
|
Lysop |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 30
|
 |
|
 |
Anmeldedatum: 12.12.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 05.01.2011, 20:52
Titel:
|
 |
ok, habs jetzt nochmal schnell ausprobiert...
Ich hoffe, ich habe es richtig gecheckt...xi ist meine Zeitvariable...also bei mir 0:1/1200:3600
wenn ich KB' noch transformiere bekomme ich zum ersten mal einen graphen, der sogar recht passabel aussieht.
Ob die Werte jetzt so stimmen, muss ichmal nachprüfen.
Aber vielen vielen vielen vielen Dank schon mal für die Hilfe. Bin da echt dran verzweifelt!
Auf die Idee, die Exp-Funktion mit t einfach aus der Integration rauszuziehen wäre ich auch nie gekommen.
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 05.01.2011, 21:23
Titel:
|
 |
Hallo,
ich habe 0:0.01:1 als Testvektor genommen; dafür (und für KB) musst du natürlich deine eigenen Werte verwenden.
xi und t sind beides das Gleiche - ich hatte das xi genannt, weil bei dir die Integrationsvariable so heißt... dieser griechische Buchstabe.
Auf die Idee, das exp mit t herauszuziehen kam ich auch erst, als es mich unter dem Integral "gestört" hat.
Grüße,
Harald
P.S.: Nochmal eine Erklärung zum Unterschied zwischen quadl (sowie allen quad-Funktionen) und (cum)trapz: erstere sind für den Fall gedacht, dass Funktionen gegeben sind, die an beliebigen Stellen ausgewertet werden können. Letztere sind für den Fall diskreter Daten gedacht, wie du sie vorliegen hast.
|
|
|
Lysop |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 30
|
 |
|
 |
Anmeldedatum: 12.12.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 06.01.2011, 02:04
Titel:
|
 |
ja perfekt, vielen dank!
die werte die dabei rauskommen sind zwar um einiges kleiner als ich gedacht hätte, aber die verläufe sehen insgesamt sehr gut aus...
Jetzt kann ich endlich weiter auswerten. Hab da nämlich 3 * 24h Messungen mit jeweils 4millionen werten pro Stunde....das ist nen ordentlicher datenwulst
|
|
|
|
|
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 - 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.
|
|