📄 single_linear_interpolation_correlation.m
字号:
%对相关函数进行插值:1.线性插值,
% 目的:验证前插值好还是后插值好,或者验证:在什么条件下后插值好
% linear interpolation
clc;clear all;
L=500; % length of signal
LL=L+50;
Fs=1e6; % the sample frequency in Hz
M=1000; % numbers of interpolation
D=44.923e-6; % set the TDOA in microsecond
%========filter by a low-pass filter=======
% [b,a]=butter(10,0.3);
% r=randn(1,LL);
% os=filter(b,a,r);
% clear r;
% clear b a;
data=load('d:\MATLAB6p1\work\wireless_location\y25K_fm');
os=data.y25K_fm;
% data=load('c:\MATLAB6p5\work\wireless_location\data_2_3');
% os=data.No1_0;
clear data;
mos=os-mean(os);
mos=mos/max(abs(mos));
mos=mos/sqrt(var(mos));
s=mos(1:LL);
multpath_d=15;
s1=0.2*[s(multpath_d+1:LL) zeros(1,multpath_d)]; % the first multipath
s=s+s1;
%========interpolation==========
interp_s=interp(s,M);
t1=(1/Fs)*(1/M);
delay=round(D/t1);
%============================
count=0;
for loop=1:5;
count=count+1
snr=0.2;
%======two receive signals========
x1=s+snr*randn(1,LL);
tempt=interp_s(delay+1:length(interp_s));
tx2=tempt(1:M:length(tempt));
x2=tx2+snr*randn(1,length(tx2));
clear tx2c
x1=x1(1:L);
x2=x2(1:L);
N=200;
time1=clock;
x12=xcorr(x1,x2);
px12=interp(x12,N);
[pm,pi]=max(px12);
est1(count)=(pi-(L-1)*N-1)*(1/Fs)*(1/N);
time2=clock;
elapse_time1(count)=time2(6)-time1(6);
clear time1;
clear time2;
end
D
[mean(est1)*1e6 (D-mean(est1))*1e9 std(est1)*1e9]
mean(elapse_time1)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -