⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 multenvboc.m

📁 《 software Defined GPS and Galilleo Receiver》源码
💻 M
字号:
function multEnvBOC()
%--------------------------------------------------------------------------
% Copyright (C) Darius Plausinaitis and Kai Borre
% Written by Darius Plausinaitis and Kai Borre
%--------------------------------------------------------------------------

% CVS record:
% $Id: multEnvBOC.m,v 1.1.2.2 2006/08/18 12:05:02 dpl Exp $

maxDelay = 500; %[m]
maxOffset = 80;  %[m]

lcode = 299.792458; %code length in meters

alpha = 0.5;

d = 1;        %chip spacing

h(1) = ezplot(@(delay, offset)multipathBOC(offset/lcode, delay/lcode, -alpha, d), [0, maxDelay, -maxOffset, maxOffset]);

hold on

h(2) = ezplot(@(delay, offset)multipathBOC(offset/lcode, delay/lcode,  alpha, d), [0, maxDelay, -maxOffset, maxOffset]);

d = 0.5;        %chip spacing

h(3) = ezplot(@(delay, offset)multipathBOC(offset/lcode, delay/lcode, -alpha, d), [0, maxDelay, -maxOffset, maxOffset]);
h(4) = ezplot(@(delay, offset)multipathBOC(offset/lcode, delay/lcode,  alpha, d), [0, maxDelay, -maxOffset, maxOffset]);

d = 0.1;        %chip spacing

h(5) = ezplot(@(delay, offset)multipathBOC(offset/lcode, delay/lcode, -alpha, d), [0, maxDelay, -maxOffset, maxOffset]);
h(6) = ezplot(@(delay, offset)multipathBOC(offset/lcode, delay/lcode,  alpha, d), [0, maxDelay, -maxOffset, maxOffset]);


h(7) = ezplot(@(delay, offset)multipathRec(offset/lcode, delay/lcode, -alpha, d), [0, maxDelay, -maxOffset, maxOffset]);
% hold on
h(8) = ezplot(@(delay, offset)multipathRec(offset/lcode, delay/lcode,  alpha, d), [0, maxDelay, -maxOffset, maxOffset]);

hold off

set(h(1:2), 'LineStyle', '-')
set(h(3:4), 'LineStyle', '--')
set(h(5:6), 'LineStyle', '-.')
set(h(7:8), 'LineStyle', ':')
set(h, 'LineWidth', 1)

xlabel('Multipath delay \delta [m]')
ylabel('Ranging error \tau [m]')
title('')
box off
legend(h([1,3,5, 7]),'{\itd} = 1','{\itd} = 0.5', '{\itd} = 0.1', '{\itd} = 0.1 (C/A)')
legend boxoff

function correlation = multipathRec(offset, delay, alpha, d)

d = d/2;

earlyCorrelator = (Tri(offset - d) + alpha * Tri(offset - d - delay));
lateCorrelator  = (Tri(offset + d) + alpha * Tri(offset + d - delay));

correlation = earlyCorrelator - lateCorrelator;

function correlation = multipathBOC(offset, delay, alpha, d)

n=2;

d = d/2;

earlyCorrelator = (acf_boc(offset - d, n, 1) + alpha * acf_boc(offset - d - delay, n, 1));
lateCorrelator  = (acf_boc(offset + d, n, 1) + alpha * acf_boc(offset + d - delay, n, 1));

correlation = earlyCorrelator - lateCorrelator;

function result = acf_boc(x, n, sin_type)

result = 0;

sum = 0;
sign = -1;
r = -1;

x = x * n * 2.0;

if (sin_type) r = 1.0; end;
if (mod(n, 2)) sign = 1; end

for k=1:n-1
    sum = sum + sign * (2.0*k*Tri(x-2.0*(n-k)) + r * Tri(x-2.0*(n-k)-1.0) + 2.0 * k * Tri(x+2.0*(n-k)) + r*Tri(x+2.0*(n-k)+1.0));
    sign= -sign;
end

sum = sum + sign * (2.0*n*Tri(x) + r * Tri(x-1.0) + r * Tri(x +1.0));

result = sum/(2*n);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -