一、自由空间路径损耗,引起的信号变化理论公式表达
由信号传播表现为信号延时,并且信号损耗,信号能量变小。
二、信号传输示例
思路:
分两步求信号的变化,一是此时信号的幅度,二是信号的相位。
幅度由路径损耗公式得到,相位由距离除以波长得到。具体计算为:
(1)由公式
求出路径损耗,原来幅度乘以损耗,即为现在幅度;
(2)由传播路程R,求出传播到目标时的相位,即为 2pi(距离/波长);同时,如果运动,还应考虑多普勒频移造成的相位变化。
补充:求当时延不满足采样时间的整数倍时,对其信号进行变采样处理。具体方法为:对由上述两个步骤得到的信号进行按比例分解。
(1)由传播路程R,求出传播时延 t,为t=R/c,c为光速;
(2)由采样率fs,得到采样点数为 n=t*fs; 此时n 不为整数,分为整数部分和小数部分。此时把上述信号分为两部分,比例为 小数部分:(1-小数部分);然后再完成整数部分的时延,即把此时的信号后延整数部分采样点。
此时,便完成了信号级的自由空间传播处理。
关键代码:
% pIdx 为路径 Id
% x 为待传播信号,propdistance 为传播路径长度;
% lambda 为波长,plossfactor 为路径损耗;
% rspeed 为运动速度,propdelay 为传播时延,Fs为采样频率。
y(:,colidx) = exp(-1i*2*pi*k*propdistance(pIdx)/lambda)/plossfactor(pIdx)*...
bsxfun(@times,x(:,colidx),...
exp(1i*2*pi*k*rspeed(pIdx)/lambda*(propdelay(pIdx)+(0:size(x,1)-1)'/Fs)));
% dsp.VariableFractionalDelay
function [xbuf_in,ndelay] = computeDelayedSignal(obj,x,delay)
% For between sample delays, compute nDelay and frac
% delay the signal
intd = fix(delay);
fracd = delay-intd; % in samples
% flush state, at most 1 sample
ndelay = intd;
xbuf_in = step(obj.cFractionalDelayFilter,x,fracd);
end