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)
|