Cognitive radio/Energy detection

  • Follow


Hi all,

i´m actually trying to compute a novel energy detection algorithm based on the algorithm of the paper "An enhanced energy detection algorithm in cognitive radio" from Mr.Hao and Mr.Zu.

Here is my matlab code:
clear all;clc;close all;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% DVB-T Signal 
load resampled_594.mat
rx_sig= iq_resp ;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% intiating noise variables
noise_power = 1;
snr=-35:5:-25; % in dB
%n_test(1:length(snr)) = 1e3;
n_test =[100 200];% 300 400 500 600 700 800 900 1000 2000 3000 4000 10000];
sensing_len=457000;% 50ms "channel BW = 9.14 MHz"
pf=0.01;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Taking sample of the captured signal
sig=sample_real(rx_sig,sensing_len);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Apply Rayleigh Fading Channel 
sig_channel = fading(sig,'Rayleigh');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% normalize signal power to 1 without Rayleigh Fading Channel
power_sig_before= POWER(sig);
scaled_sig1_before=sig./sqrt(power_sig_before);
power_scaledsig1_before=POWER(scaled_sig1_before);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% normalize signal power to 1 with Rayleigh Fading Channel
power_sig_after= POWER(sig_channel);
scaled_sig1_after=sig_channel./sqrt(power_sig_after);
power_scaledsig1_after=POWER(scaled_sig1_after);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Generated Normal Random Guassian Signal
v_scaled_before=(randn(1, sensing_len)+randn(1, sensing_len)*(1j))*sqrt(1/2);
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Apply Rayeigh Fading
v_channel = fading(v_scaled_before,'Rayleigh');
v_channel_pwr=POWER(v_channel);
v_scaled_after=v_channel/ sqrt(v_channel_pwr);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for jj=1:length(snr)
    for ii=1:n_test(jj)
         %%%% Generating NOISE
         noise=(randn(1, sensing_len)+randn(1, sensing_len)*(1j))*sqrt(noise_power/2);
         %%%% Test Statisitic for noise
         noise_pwr(ii) = noise(1,:)*noise(1,:)' / sensing_len;
         %%%% Scaling without and with Rayleigh Faidng According to diff. SNRs
         p_targeted= noise_power.* (10.^(snr(jj)/10));
         scaled_sig_before(1,:)= scaled_sig1_before .* sqrt(p_targeted);
         scaled_sig_after(1,:)= scaled_sig1_after .* sqrt(p_targeted);
         scaled_v_before(1,:)= v_scaled_before .* sqrt(p_targeted);
         scaled_v_after(1,:)= v_scaled_after .* sqrt(p_targeted);
         %%%% Adding Signal to noise
         signal_noise_before(1,:)= scaled_sig_before(1,:)+noise(1,:);
         signal_noise_after(1,:)= scaled_sig_after(1,:)+noise(1,:);
         v_noise_before(1,:)= scaled_v_before+noise(1,:);
         v_noise_after(1,:)= scaled_v_after+noise(1,:);
         %%%% Test Statistic 
         power_before(ii+((jj-1)*n_test(jj)))=signal_noise_before(1,:)*signal_noise_before(1,:)'/length(signal_noise_before(1,:));
         power_v_before(ii+((jj-1)*n_test(jj)))=v_noise_before(1,:)*v_noise_before(1,:)'/length(v_noise_before(1,:));
         %%%% Test Statistic with Fading
         power_after(ii+((jj-1)*n_test(jj)))=signal_noise_after(1,:)*signal_noise_after(1,:)'/length(signal_noise_after(1,:));
         power_v_after(ii+((jj-1)*n_test(jj)))=v_noise_after(1,:)*v_noise_after(1,:)'/length(v_noise_after(1,:));
    end
end
%%%%%% sim. thr
noise_pwr = sort(noise_pwr, 'descend');
display('For PFA=0.01')
thr_accurat = noise_pwr(n_test(end)*pf)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Generating threshold using theoritical closed form
% display('For PFA=0.01')
% thr_accurat = chi2inv(1-pf,2*sensing_len)/(((2*sensing_len)/100)*100 ) 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Generating misdetection Prob.
c=0;
for jj=1:length(snr)
    cmd_accurat=0;
    cmd_accurat_after=0;
    cmd_v_accurat=0;
    cmd_v_accurat_after=0;
    for ii=1:n_test(jj)
        if power_before(ii+(c*n_test(jj)))<thr_accurat
               cmd_accurat=cmd_accurat+1;
        end
        if power_after(ii+(c*n_test(jj)))<thr_accurat
               cmd_accurat_after=cmd_accurat_after+1;
        end  
        if power_v_before(ii+(c*n_test(jj)))<thr_accurat
               cmd_v_accurat=cmd_v_accurat+1;
        end
        if power_v_after(ii+(c*n_test(jj)))<thr_accurat
               cmd_v_accurat_after=cmd_v_accurat_after+1;
        end  
    end

    pmd_accurat(1,jj)=cmd_accurat/n_test(jj);
    pmd_accurat_after(1,jj)=cmd_accurat_after/n_test(jj);
    pmd_v_accurat(1,jj)=cmd_v_accurat/n_test(jj);
    pmd_v_accurat_after(1,jj)=cmd_v_accurat_after/n_test(jj);
    c=c+1;
end
display('For PFA=0.01')
pmd_accurat
pmd_accurat_after
pmd_v_accurat
pmd_v_accurat_after
figure(1)
semilogy(snr,pmd_accurat,':rs')
hold on 
semilogy(snr,pmd_accurat_after,'--b*')
semilogy(snr,pmd_v_accurat,'-gh')
semilogy(snr,pmd_v_accurat_after,'-mp')
title('SNR vs. Misdetection Probability')
xlabel('SNR')
ylabel('Misdetection Probability')
h=legend('Captured DVB-T "8k"mode','Captured DVB-T "8k"mode, Rayleigh','Random Guassian','Random Guassian, Rayleigh',2); 
set(h,'Interpreter','none')
grid on
save Energy_det_with_without_fading_real.mat snr thr_accurat pmd_accurat pmd_accurat_after pmd_v_accurat pmd_v_accurat_after

How should i change it?
I´ve an idea about the series to parallel changement but my problem is how to find the T(duration time)and the W(bandwidth of the signal)because i need them to compute the threshold value!!!
If you´va any other idea about an enhanced energy detection algorithm let me know please,don´t hesitate if you´ve also questions about cognitive radio and energy detection.
Thank you very much
0
Reply Samer 12/9/2010 11:49:05 AM

you have not given functions and the .mat files which are required to run this file.


"Samer " <samerclub@yahoo.fr> wrote in message <idqfnh$h39$1@fred.mathworks.com>...
> Hi all,
> 
> i´m actually trying to compute a novel energy detection algorithm based on the algorithm of the paper "An enhanced energy detection algorithm in cognitive radio" from Mr.Hao and Mr.Zu.
> 
> Here is my matlab code:
> clear all;clc;close all;
> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% DVB-T Signal 
> load resampled_594.mat
> rx_sig= iq_resp ;
> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% intiating noise variables
> noise_power = 1;
> snr=-35:5:-25; % in dB
> %n_test(1:length(snr)) = 1e3;
> n_test =[100 200];% 300 400 500 600 700 800 900 1000 2000 3000 4000 10000];
> sensing_len=457000;% 50ms "channel BW = 9.14 MHz"
> pf=0.01;
> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Taking sample of the captured signal
> sig=sample_real(rx_sig,sensing_len);
> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Apply Rayleigh Fading Channel 
> sig_channel = fading(sig,'Rayleigh');
> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% normalize signal power to 1 without Rayleigh Fading Channel
> power_sig_before= POWER(sig);
> scaled_sig1_before=sig./sqrt(power_sig_before);
> power_scaledsig1_before=POWER(scaled_sig1_before);
> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% normalize signal power to 1 with Rayleigh Fading Channel
> power_sig_after= POWER(sig_channel);
> scaled_sig1_after=sig_channel./sqrt(power_sig_after);
> power_scaledsig1_after=POWER(scaled_sig1_after);
> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Generated Normal Random Guassian Signal
> v_scaled_before=(randn(1, sensing_len)+randn(1, sensing_len)*(1j))*sqrt(1/2);
> % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Apply Rayeigh Fading
> v_channel = fading(v_scaled_before,'Rayleigh');
> v_channel_pwr=POWER(v_channel);
> v_scaled_after=v_channel/ sqrt(v_channel_pwr);
> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
> for jj=1:length(snr)
>     for ii=1:n_test(jj)
>          %%%% Generating NOISE
>          noise=(randn(1, sensing_len)+randn(1, sensing_len)*(1j))*sqrt(noise_power/2);
>          %%%% Test Statisitic for noise
>          noise_pwr(ii) = noise(1,:)*noise(1,:)' / sensing_len;
>          %%%% Scaling without and with Rayleigh Faidng According to diff. SNRs
>          p_targeted= noise_power.* (10.^(snr(jj)/10));
>          scaled_sig_before(1,:)= scaled_sig1_before .* sqrt(p_targeted);
>          scaled_sig_after(1,:)= scaled_sig1_after .* sqrt(p_targeted);
>          scaled_v_before(1,:)= v_scaled_before .* sqrt(p_targeted);
>          scaled_v_after(1,:)= v_scaled_after .* sqrt(p_targeted);
>          %%%% Adding Signal to noise
>          signal_noise_before(1,:)= scaled_sig_before(1,:)+noise(1,:);
>          signal_noise_after(1,:)= scaled_sig_after(1,:)+noise(1,:);
>          v_noise_before(1,:)= scaled_v_before+noise(1,:);
>          v_noise_after(1,:)= scaled_v_after+noise(1,:);
>          %%%% Test Statistic 
>          power_before(ii+((jj-1)*n_test(jj)))=signal_noise_before(1,:)*signal_noise_before(1,:)'/length(signal_noise_before(1,:));
>          power_v_before(ii+((jj-1)*n_test(jj)))=v_noise_before(1,:)*v_noise_before(1,:)'/length(v_noise_before(1,:));
>          %%%% Test Statistic with Fading
>          power_after(ii+((jj-1)*n_test(jj)))=signal_noise_after(1,:)*signal_noise_after(1,:)'/length(signal_noise_after(1,:));
>          power_v_after(ii+((jj-1)*n_test(jj)))=v_noise_after(1,:)*v_noise_after(1,:)'/length(v_noise_after(1,:));
>     end
> end
> %%%%%% sim. thr
> noise_pwr = sort(noise_pwr, 'descend');
> display('For PFA=0.01')
> thr_accurat = noise_pwr(n_test(end)*pf)
> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Generating threshold using theoritical closed form
> % display('For PFA=0.01')
> % thr_accurat = chi2inv(1-pf,2*sensing_len)/(((2*sensing_len)/100)*100 ) 
> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Generating misdetection Prob.
> c=0;
> for jj=1:length(snr)
>     cmd_accurat=0;
>     cmd_accurat_after=0;
>     cmd_v_accurat=0;
>     cmd_v_accurat_after=0;
>     for ii=1:n_test(jj)
>         if power_before(ii+(c*n_test(jj)))<thr_accurat
>                cmd_accurat=cmd_accurat+1;
>         end
>         if power_after(ii+(c*n_test(jj)))<thr_accurat
>                cmd_accurat_after=cmd_accurat_after+1;
>         end  
>         if power_v_before(ii+(c*n_test(jj)))<thr_accurat
>                cmd_v_accurat=cmd_v_accurat+1;
>         end
>         if power_v_after(ii+(c*n_test(jj)))<thr_accurat
>                cmd_v_accurat_after=cmd_v_accurat_after+1;
>         end  
>     end
> 
>     pmd_accurat(1,jj)=cmd_accurat/n_test(jj);
>     pmd_accurat_after(1,jj)=cmd_accurat_after/n_test(jj);
>     pmd_v_accurat(1,jj)=cmd_v_accurat/n_test(jj);
>     pmd_v_accurat_after(1,jj)=cmd_v_accurat_after/n_test(jj);
>     c=c+1;
> end
> display('For PFA=0.01')
> pmd_accurat
> pmd_accurat_after
> pmd_v_accurat
> pmd_v_accurat_after
> figure(1)
> semilogy(snr,pmd_accurat,':rs')
> hold on 
> semilogy(snr,pmd_accurat_after,'--b*')
> semilogy(snr,pmd_v_accurat,'-gh')
> semilogy(snr,pmd_v_accurat_after,'-mp')
> title('SNR vs. Misdetection Probability')
> xlabel('SNR')
> ylabel('Misdetection Probability')
> h=legend('Captured DVB-T "8k"mode','Captured DVB-T "8k"mode, Rayleigh','Random Guassian','Random Guassian, Rayleigh',2); 
> set(h,'Interpreter','none')
> grid on
> save Energy_det_with_without_fading_real.mat snr thr_accurat pmd_accurat pmd_accurat_after pmd_v_accurat pmd_v_accurat_after
> 
> How should i change it?
> I´ve an idea about the series to parallel changement but my problem is how to find the T(duration time)and the W(bandwidth of the signal)because i need them to compute the threshold value!!!
> If you´va any other idea about an enhanced energy detection algorithm let me know please,don´t hesitate if you´ve also questions about cognitive radio and energy detection.
> Thank you very much
0
Reply shwetansh13 (1) 10/5/2012 9:59:11 AM


1 Replies
997 Views

(page loaded in 0.073 seconds)

Similiar Articles:













7/25/2012 2:24:55 AM


Reply: