WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Kreuzkorrelation in Simulink

 

Gecko123

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.01.2016, 10:24     Titel: Kreuzkorrelation in Simulink
  Antworten mit Zitat      
Hallo zusammen,
ich würde gerne die Verschiebung eines Signals A zum Signal B bestimmen und dieses dann mittels der berechneten Verschiebung auf B verschieben.

Ich habe ein paar Fragen bzgl. der Verwendung der Kreuzkorrelation in Simulink. Mit dieser kann man ja die Verschiebung zweier Signale bestimmen. Habe jetzt viel daran herumgebastelt und komme einfach nicht weiter.
Habe in Simulink einmal den xcorr-Block verwendet. Ich kann zwar die Verschiebung berechnen jedoch nicht in welche Richtung die Signale A und B zueinander verschoben sind. Also das Ergebnis der Verschiebung ist zB. 2s. Nun weiß ich jedoch nicht, ob Signal A 2s vor oder nach Signal B liegt . Weiß jemand wie man das lösen kann?
Ich habe es weiterhin mit einem Matlab Code in einem Matlab-function-Block versucht. In Matlab funktioniert das super. Bekomme hier auch negative Werte für die Verschiebung, sodass ich deren Richtung weiß.
In Simulink funktioniert der Code irgendwie nicht:

Code:
[acor,lag] = xcorr(A,B);
[~,I] = max(abs(acor));
Verschiebung = lag(I);


Bekomme dann immer mehrere Fehlermeldungen:
- Input maxlag must be a constant.
- Undefined function or variable 'lag'. The first assignment to a local variable determines its class.

Ich hoffe ich konnte das Problem verständlich erklären. Bin für jeden Tipp sehr dankbar.


Gecko123

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.01.2016, 10:17     Titel:
  Antworten mit Zitat      
Hat denn niemand eine Idee?
Habe jetzt mal den Align-Signals -Block verwendet. Dieser ist jedoch nicht so toll. Es muss hier immer eine correlation window length eingegeben werden. Falls dieser Wert irgendwie nicht passt, wirft der Block immer eine Null für die Verschiebung raus. Das ist leider häufig der Fall.
Es muss doch möglich sein die Verschiebung zweier Signale zueinander zu bestimmen?!?
Würde mich über jeden Tipp freuen.
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 08.01.2016, 14:09     Titel: Re: Kreuzkorrelation in Simulink
  Antworten mit Zitat      
Hallo Gecko123,
Zitat:
Bekomme dann immer mehrere Fehlermeldungen:
- Input maxlag must be a constant.
- Undefined function or variable 'lag'. The first assignment to a local variable determines its class.

Es ist verwirrend, dass Du 2 Fehlermeldungen bekommst, denn Matlab stoppt ja bereits nach der ersten.
Bitte poste die vollständigen Meldungen, nicht nur den Teil, der Dir wichtig erscheint. Dann kann man nämlich auch sehen, welche Zeile welchen Fehler erzeugt.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Gecko123

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.01.2016, 15:38     Titel:
  Antworten mit Zitat      
So, habe es hinbekommen. Ich habe den Code oben verwendet und vor den Block noch einen Buffer-Block gesetzt. Dann funktioniert es wunderbar.
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.