|
Autor |
Kreuzkorrelationsfunktion unterschiedliche Ergebnisse bei Veränderung der Grenzen |
|
che
Aktiv  Dabei seit: 06.02.2006 Mitteilungen: 576
Wohnort: BaWü
 | Themenstart: 2021-09-11
|
Hallo,
Ich würde gerne die Matlab Funktion xcorr benutzen, um den Abstand von zwei Funktionen herauszufinden. Leider bin ich mir nicht ganz sicher, wie ich die Ergebnisse der xcorr-Funktion interpretieren kann.
Als Beispiel habe ich zwei Exponentialfunktionen:
f_a(x)=exp(-0.5*(x-10)^2)
f_b(x)= exp(-0.5*(x-30)^2)
Als Grenzen wurden folgende Werte gewählt:
grenze_a_anfang = 4;
grenze_a_ende = 44;
grenze_b_anfang = 5;
grenze_b_ende = 45;
xcorr-Funktion:
\sourceon Matlab-xcorr-Funktion
kreuz_korrelation = xcorr(double(ax(grenze_a_anfang:grenze_a_ende)), double(bx(grenze_b_anfang:grenze_b_ende)));
\sourceoff
Um den Abstand/Verschiebung zwischen den zwei Funktionen zu finden benutze ich:
\sourceon Matlab-finde Verschiebung
find(max(kreuz_korrelation)==kreuz_korrelation)
\sourceoff
Ich bin mir nicht sicher, warum das Maximum der xcorr-Funktion bei 22 ist. Wenn ich nun die Eingangsfunktionen f_a das Maximum auf 30 setze und f_b auf 10, bekomme ich als Ergebnis 62. Die verschiebung sollte immer zwischen den zwei Funktionen sollte immer 20 sein (entweder positiv/negativ).
Kann mir jemand erklären wie diese Werte zustande kommen (ich würde gerne den Hintergrund verstehen (möglich wäre es auch die lags Ausgabe der xcorr-Funktion zu benutzen - das ich vermeiden will).
Danke
\sourceon Matlab-1.Skript
clear all;
close all;
clc;
a = @(x) exp(-0.5*(x-10)^2);
b = @(x) exp(-0.5*(x-30)^2);
ax = subs(a, 1:100);
bx = subs(b, 1:100);
grenze_a_anfang = 4;
grenze_a_ende = 44;
grenze_b_anfang = 5;
grenze_b_ende = 45;
kreuz_korrelation = xcorr(double(ax(grenze_a_anfang:grenze_a_ende)), double(bx(grenze_b_anfang:grenze_b_ende)));
find(max(kreuz_korrelation)==kreuz_korrelation)
\sourceoff
\sourceon Matlab-2.Skript
clear all;
close all;
clc;
a = @(x) exp(-0.5*(x-30)^2);
b = @(x) exp(-0.5*(x-10)^2);
ax = subs(a, 1:100);
bx = subs(b, 1:100);
grenze_a_anfang = 4;
grenze_a_ende = 44;
grenze_b_anfang = 5;
grenze_b_ende = 45;
kreuz_korrelation = xcorr(double(ax(grenze_a_anfang:grenze_a_ende)), double(bx(grenze_b_anfang:grenze_b_ende)));
find(max(kreuz_korrelation)==kreuz_korrelation)
\sourceoff
|
Profil
|
|
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2023 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen. Lesen Sie die
Nutzungsbedingungen,
die Distanzierung,
die Datenschutzerklärung und das Impressum.
[Seitenanfang]
|