Ich habe folgendes Problem: 2 Sensor-Signale wurden aufgenommen, und da ich eine Kreuzkorrelation zwischen die beiden Signale durchführen möchte, sollen sie zumindest die gleiche Amplitude haben, sonst kriege ich nun immer als Korrelationswerte lauter Nullen..
Ich habe schon eine Normierung gemacht, aber irgendwie funktioniert nicht so wirklich...
Hat jemand eine Idee wie ich die Signale z.bl ohne Normierung auf die gleiche Höhe kriegen kann ? Kennt sich jemand aus ?
Ich lade das Bild hoch und das Programmcode + die Signale
Code:
%das ist mein Program
signal1 = load....
signal2 = load....
Danke für die Antwort !
Nun zu dem Kreuzkorrelations-Thema : ich möchte eine Geschwindigkeitsmessung mittels Kreuzkorrelation durchführen. Am Anfang habe ich nun die aufgenommene Signale benutzt, ohne die zu normieren aber dann hatte ich keine richtige Werte gekriegt.. Es war schon deutlich zu sehen, dass das zweite Signal gegenüber dаs erste verschoben ist, aber trotzdem kam den Wert 0 für die Kreuzkorrelation raus. Dann habe ich normiert und alles sah schon besser aus. Ich hab die Signale an Frames verteilt und somit für jedes Frame die KK ausgerechnet, aber da musste ich auch jedes mal normieren... Trotzdem sieht das Ganze nicht so gut aus...
Hat jemand eine Idee wie könnte ich dann die KK ausrechnen ohne zu normieren ? Ich bin nun stehengeblieben an der Stelle...
%segmenting a signal into frames
l=0.1; %the frame lengthis...sec
r=l*0.15; %overlap (...% from the frame_len) od .015 ls=ceil(l*Fs);
rs=ceil(r*Fs);
fr_shift=ls-rs; %frame shift
Nram=floor((N-ls)/fr_shift)-1; %number of frames
%cuting the signals into frames that are then stored in the matrix columns
%sigtam1, sigram2
sigram1=zeros(ls,Nram); %allocation for the frames - will be in columns
sigram2=zeros(ls,Nram);
odtud=1; %filling
potud=ls;
new_frames = zeros(Nram,1);
for ii=1:Nram
%frame1 = s1(odtud:potud);
frame1 = MFS1(odtud:potud);
frame1 = frame1-mean(frame1);
sigram1(:,ii)=frame1;
%frame2 = s2(odtud:potud);
frame2 = MFS2(odtud:potud);
frame2 = frame2-mean(frame2);
sigram2(:,ii)=frame2;
odtud=odtud+fr_shift;
potud=potud+fr_shift;
max_val1=max(frame1);
max_val2=max(frame2);
[C21, lag1] = xcorr(frame1,frame2,'coeff');
[~, Index] = max(C21);
ifmax(C21) > thresh
time_delay=abs(lag1(Index));
time_lag=time_delay./Fs;
new_frames(ii)=a./time_lag; %in km/h .*3.6 end end
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.