2012-09-18 6 views
1

J'ai essayé de trouver la corrélation croisée entre une réponse de signal décalée dans le temps et une autre réponse de signal prise comme référence, mais j'ai du mal à faire refléter mon décalage temporel avec la fonction xcorr. le code matlab est collé ci-dessous, j'apprécierai si quelqu'un peut faire une suggestion sur la façon d'implémenter la fonction xcorr de telle sorte que je puisse déterminer le décalage temporel auquel les deux réponses de signal corrèlent. mercicorrélation croisée

clear all; 
clc; 
FS = 100e6; 



figure(1) 
AMP8 = importdata('av250nu.txt'); 
time8 = [1:length(AMP8)]/FS; 
c=find(time8==0.14e-4); 
plot(time8(1:c)',AMP8(1:c)); 
ylabel('Amplitude(V)') 
xlabel('Time of flight(s)') 

figure(2) 
AMP = importdata('3kknu.txt'); 
time = [1:length(AMP)]/FS; 
c=find(time==0.14e-4); 
plot(time(1:c)',AMP(1:c)); 
title('reference') 
ylabel('Amplitude(V)') 
xlabel('Time of flight(s)') 

figure(3) 
AMP1 = zeros(2000,1); 
time1 = zeros(2000,1); 
time11 = zeros(2000,1); 
AMP1(1:320)= AMP(1:320); 
time1(1:320) = time(1:320); 
plot(time1,AMP1); 
ylabel('Amplitude(V)') 
xlabel('Time of flight(s)') 

figure(4) 
AMP2 = zeros(2000,1); 
time2 = zeros(2000,1); 
time21 = zeros(2000,1); 
AMP2(321:640) = AMP(321:640); 
time2(321:640) = time(321:640); 
time21(321:640) = time2(321:640); 
plot(time21,AMP2); 
ylabel('Amplitude(V)') 
xlabel('Time of flight(s)') 

figure(5) 
AMP3 = zeros(2000,1); 
time3 = zeros(2000,1); 
time31 = zeros(2000,1); 
AMP3(641:960) = AMP(641:960); 
time3(641:960) = time(641:960); 
time31(641:960) = time3(641:960); 
plot(time31,AMP3); 
ylabel('Amplitude(V)') 
xlabel('Time of flight(s)') 

figure(6) 
AMP4 = zeros(2000,1); 
time4 = zeros(2000,1); 
time41 = zeros(2000,1); 
AMP4(961:1280) = AMP(961:1280); 
time4(961:1280) = time(961:1280); 
time41(961:2000) = time4(961:2000); 
plot(time41,AMP4); 
ylabel('Amplitude(V)') 
xlabel('Time of flight(s)') 

figure(75) 
time5=zeros(2000,1); 
p = zeros(2000,1); 
time5(1:320)= time1(1:320); 
time5(321:640)=time21(321:640); 
time5(641:960)=time31(641:960); 
time5(961:2000)=time41(961:2000); 

plot(time5,AMP); 

p(1:2000) = time5; 
p(1:16384) = AMP; 
plot(p); 
grid on; 



figure(95) 
[Z,lags] = XCORR(p(1:16384,1),AMP8,'biased'); 
plot(lags,Z); 
+0

thats a beaucoup de code pour une simple question – slayton

Répondre

1

Essayez de trouver la valeur maximale de la corrélation, c'est le décalage souhaité.

[zmax, i] = max(Z); 
t = lags[i]; 
+0

merci, la question d'avoir le suis code est que le doesnt décalage horaire reflète dans la réponse corrélée croisée. chaque bit du code sort bien sauf la fonction xcorr. Quelqu'un peut-il aider avec une suggestion sur la façon d'écrire la fonction de corrélation croisée pour les deux signaux. Je vous remercie –