Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

Thread Subject:
Cognitive radio/Energy detection

Subject: Cognitive radio/Energy detection

From: Samer

Date: 9 Dec, 2010 11:49:05

Message: 1 of 2

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

Subject: Cognitive radio/Energy detection

From: shweta shah

Date: 5 Oct, 2012 09:59:11

Message: 2 of 2

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

Tags for this Thread

No tags are associated with this thread.

What are tags?

A tag is like a keyword or category label associated with each thread. Tags make it easier for you to find threads of interest.

Anyone can tag a thread. Tags are public and visible to everyone.

Contact us