Verfasst am: 15.12.2014, 15:21
Titel: Bei Faltung richtige x-Achse wählen
Hallo goMatlab Community,
seit längerem schlage ich mich schon mit einem Problem herum, dass bei der Nutzung des Befehls 'conv' in Matlab 2013b auftritt. Hierbei geht es um folgende Fragestellung. Die Wahrscheinlichkeitsverteilung 'u', dass ein bestimmtes Ereignis einmal mit der Energie 'E' auftritt ist
Dabei ist 'T' die Temperatur. Allerdings bin ich nicht an dieser Wahscheinlichkeit, sondern an der Wahrscheinlichkeit vieler hintereinander ablaufender Prozesse interessiert. Zu Prozess 1 gehört 'u1' mit der Temperatur 'T1', zu Prozess 2 'u2' mit der Wahrscheinlichkeit 'T2', usw. Alles findet auf der selben 'E' Skale statt. Die Wahrscheinlichkeit der Folgeprozesse ist durch die Faltung der entsprechenden Einzelprozesse gegeben. Soweit so gut. Dafür habe ich folgenden kleinen code geschrieben
Code:
E=0:0.01:10; % set energy scale
T=[520480441402364325287249211175138]; % set temperatures
for i=1:size(T,2)
u(i,:)=1./(a*T(i)).*exp(-E./(a*T(i))); % calculate all possible distribution functions end
w(1,:)=conv(u(1,:),u(2,:),'full'); % First combined probability with 'full'
q(1,:)=conv(u(1,:),u(2,:),'same'); % First combined probability with 'same'
der Einfachheit halber sollen nur zwei aufeinander folgende Ereignisse betreachtet werden. Wähle ich nun 'a=1' ist soweit alles klar. 'w' und 'q' unterscheiden sich nur durch eine Streckung der 'E'-Achse, wie es ja auch bei der Funktionsbeschreibung erklärt wird. Wähle ich allerdings für 'a' physikalisch relevante Werte von 'a=2.15e-4' unterscheiden sich die 'same' und 'full' Ergebnisse der Faltung dramatisch voneinander. 'Full' ergbit das richtige Ergebnis einer Poisson ähnlichen Verteiling, wohingegen 'same' in der Magnitude sehr viel kleiner ist und eine einfache Exp(-E) Funktion ist. Wie ist dies zu erklären? Wie muss also die x-Achse gewählt werden bzw. wie ist der Maximalwert der Funktion zu verstehen? Hat jemand einen Vorschlag wie das Problem zu lösen ist?
Pragmatisch (und hoffentlich verständlich) ausgedrückt: 'full' gibt die gesamte Faltung zurück, 'same' nur den x-Bereich in dem die gefalteten Funktionen liegen.
Betrachte als Beispiel mal den Plot des folgenden, angepassten Codes:
Code:
a = 0.5e-2;
E=0:0.01:10; % set energy scale
T=[520480441402364325287249211175138]; % set temperatures
u = zeros(length(T), length(E)); % pre-allocate for i=1:size(T,2)
u(i,:)=1./(a*T(i)).*exp(-E./(a*T(i))); % calculate all possible distribution functions end
u1 = u(1,:);
u2 = u(2,:);
w(1,:)=conv(u1,u2,'full'); % First combined probability with 'full'
q(1,:)=conv(u1,u2,'same'); % First combined probability with 'same'
F = -5:0.01:15;
plot(F, w, 'black');
hold on;
plot(E, q, 'green');
plot(E, u1, 'red');
plot(E, u2, 'blue');
legend('w (full)', 'q (same)', 'u1', 'u2');
Zum Verständnis der Faltung sind in Wikipedia sehr anschauliche Darstellungen, passenderweise ua. mit Matlab erstellt https://de.wikipedia.org/wiki/Faltung_%28Mathematik%29#Bedeutung
Für a=1 ähnelt dein Bsp. der dortigen Grafik zur Faltung der Rechteckfunktion.
dank dir schon mal für deine verständliche Antwort. Das größte Problem, dass ich aber mit dem Ergebnis habe ist die nun auftretenden negativen x-Werte. Wie hast du denn die x-Achse für 'full' gewählt? So dass Sie mit dem 'same' Ergebnis überlagert?
Dies macht mathematisch sicherlich Sinn, für mein physikalisches Model allerdings überhaupt nicht. Negative Energien (sieht man mal von der relativistischen Quantenmechanik ab) machen nämlichen keinen Sinn.
Auch wenn ich mir dies rein schematisch vorstelle sollte das Maximum bei positiven Werten liegen. Eine Funktion die für alle negativen Werte =0 ist und für die positiven durch
beschrieben wird sollte mit sich selbst gefaltet das maximale Integral im positiven haben. Sprich es sollte eine neue Funktion mit Maximum im positiven erhalten werden. Sicherlich mache ich einen Denkfehler, aber schlussendlich muss eine positive wahrscheinlichste Energie erhelten werden. Alle Anmerkungen wären sicherlich hilfreich, da ich gerade ziemlich auf dem Schlauch stehe
Entschuldige die späte Antwort, musste zum Jahresende viel arbeiten und hatte keine Zeit hier rein zu schauen.
Hast du eine Lösung gefunden?
StarkEffekt hat Folgendes geschrieben:
Das größte Problem, dass ich aber mit dem Ergebnis habe ist die nun auftretenden negativen x-Werte. Wie hast du denn die x-Achse für 'full' gewählt? So dass Sie mit dem 'same' Ergebnis überlagert?
w ist aufgrund der Faltung doppelt so lang wie u1, u2 und E. Daher habe ich F erstellt, das doppelt so lang wie E ist, mit "E in der Mitte von F."
Bei der Interpretation der negativen Werte kann ich dir leider nicht helfen. Ich kenne die Faltung nur im Kontext von LTI-Systemen, also Faltung von (zeitinvarianten) Zeitsignalen, nicht von Energien.
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
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.