📄 demodulation.m
字号:
function dm=demodulation(data_trend,tau,piconet_num,datarate)
%actruall delay tau and fren fc should be determined by the demodulator.
sample_per_pulse=3;
fc=[3939 3978 4017 4056 3900 4094 7878 7956 8034 8112 7800 8190]*1e6;
segma=0.09*10^-9;
chiprate=length(data_trend)/(3*sample_per_pulse);
[carrier,carrier_min,carrier_max,fs]=gaussian_trend(segma,fc(piconet_num),chiprate);
power=max(max(carrier))^2;
temp_de=carrier.*data_trend;
figure(4)
subplot(4,1,1)
plot(carrier_min:1/fs:1000/fs,data_trend(1:1002));
title('received data pulse') ;
subplot(4,1,2)
plot(carrier_min:1/fs:1000/fs,carrier(1:1002));
title('pulse carrier');
subplot(4,1,3)
stem(carrier_min:1/fs:1000/fs,temp_de(1:1002));
title('correlation demodulate data pulse');
carrier_to_sample_position=floor(sample_per_pulse/2)+1;
%% ACTRUALLY HERE I USED THE ANYLOGUE METHOD MEAN TO DISPLAY THE
%% GRAPHS,HOWEVER FROM SAMPLING, IT BEGAIN TO USE DISCRETE METHOD, AS A
%% RESULT I HEREBY COMMENTED THE METHOD BELOW AND USE NEW EASIY METHOD;
%% sample and hold
% sampled=zeros(1,length(data_trend));
% holded=zeros(1,length(sampled)+carrier_to_sample_position-1)
% for i=1:chiprate
% sample_position=(i-1)*sample_per_pulse+carrier_to_sample_position;
% sampled(sample_position)=temp_de(sample_position);
% holded(sample_position:sample_position+sample_per_pulse-1)=sampled(sample_position);
% end
% subplot(3,1,1)
% stem(carrier_min:1/fs:carrier_max,sampled,'.');
% subplot(3,1,2)
% plot(carrier_min:1/fs:carrier_max+(carrier_to_sample_position-1)/fs,holded);
%% after holded the data trend will dalay for
%% (carrier_to_sample_position-1),here it is 4
% subplot(3,1,3)
% plot(carrier_min:1/fs:carrier_max,d)
% pn=p_shaping(codeset(1,24),10);
% figure;
% subplot(3,1,1)
% plot(carrier_min:1/fs:carrier_max,pn);
% subplot(3,1,2)
% plot(carrier_min:1/fs:carrier_max+(carrier_to_sample_position-1)/fs,holded);
% de_spreaded=holded(carrier_to_sample_position:length(holded)).*pn;
% subplot(3,1,3)
% plot(carrier_min:1/fs:carrier_max,de_spreaded);
%% here is the discrete method;
% pn=codeset(piconet_num,12);
% for i=1:chiprate
% sample_position=(i-1)*sample_per_pulse+carrier_to_sample_position;
% sampled(i)=temp_de(sample_position);
% end
% dm=sampled/abs(max(sampled));
% %% here is unspread processing, actrually it should be implemented in
% %% another function, I coded it here for convinience.
% unspread=sum(dm.*pn);
% if unspread>=11
% unspread=1;
% else
% unspread=0;
% end
decision=zeros(1,length(temp_de)/3/sample_per_pulse);
for i=1:length(temp_de)/3/sample_per_pulse
for j=1:sample_per_pulse
decision(i)=decision(i)+(temp_de((i-1)*3*sample_per_pulse+carrier_to_sample_position+(j-1)*sample_per_pulse))/power;
end
end
dm=zeros(1,length(decision));
for i=1:length(temp_de)/3/sample_per_pulse
if decision(i)>=1
dm(i)=1;
else
if decision(i)<=-1
dm(i)=-1;
else
dm(i)=0;
end
end
end
subplot(4,1,4)
stem(1:120,dm(1:120));
title('demodulated discrete data')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -