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

📄 demodulation.m

📁 802.15 dsss 物理协议层方针代码
💻 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 + -