0

我已經在Matlab中的AWGN通道中實現了用於頻譜感測的循環平穩檢測器,但是我得到了模糊的結果。因爲它的性能不隨SNR的變化而變化。它對我來說非常奇怪。我不知道我在做什麼錯誤。我附上我的代碼,請看看和評論。在這裏,我發現信號的循環平穩特徵用於檢測。首先,我嘗試對信號進行FFT處理,然後將其頻率由變換的+α和-α轉換爲其共軛。然後我把兩者都乘以所有的總和。這就是所有理論如何解釋循環平穩特徵檢測如果有人能幫助我,我將非常感激。Cyclostationary特徵檢測器:性能不隨SNR的變化而變化

function Pd=Cyclo_AWGN(Pf,snr_avg,n,N,Sim_Times) 

% Pf= Probablity of false alarm 
% n= length of data 
% N= length of fft 
% Sim_Times= Iteration 


ln=0:n-1; 

Over_Num = 0; 

Th_awgn= sqrt(-2*log(Pf)/n);   % threshold 

for kk = 1:Sim_Times 


    phi= randi([-180,180],1,n); 
    phi=phi*2*pi/360; 
    x=sin(0.32*pi*ln+phi); 
    Recv_Signal = x;            % Recived Signal 


    Noise_awgn = randn(1,n)+1i*randn(1,n); 
    AvgPower_Noise_awgn=sum(abs(Recv_Signal).^2)/snr_avg;   %average power of noise 
    std_Noise_awgn = sqrt(AvgPower_Noise_awgn); 
    Noise_awgn = std_Noise_awgn*Noise_awgn; 



    norm_signal_awgn = Recv_Signal/std_Noise_awgn; %Normalized signal sample 
    norm_noise_awgn = Noise_awgn/std_Noise_awgn; %Normalized Noise sample 

    Recv_sig_awgn = norm_signal_awgn + norm_noise_awgn; % Normalized received signal for detection 



    X=zeros(2*N+1); 
    Y=zeros(2*N+1); 

    Ts=1/N; 

    for f=-N:N 

     d=exp(-j*2*pi*f*ln*Ts); 
     xf= Recv_sig_awgn.*d; 
     n_r=n:-1:1; 
     X(f+N+1)=sum(xf(n_r)); 
     Y(f+N+1)=conj(sum(xf(n_r))); 
    end 

    alpha=10; 
    f=5; 
    f1=f+floor(alpha/2)+(floor(-((N-1)/2)):floor((N-1)/2)); 
    f2=f-floor(alpha/2)+(floor(-((N-1)/2)):floor((N-1)/2)); 

    S(kk)=sum(X(f1+N+1).*Y(f2+N+1))/N; 

    S(kk)=abs(S(kk))/n; 

    if S(kk)>Th_awgn 
     Over_Num = Over_Num +1;       %decide 1 or 0, present or absent 
    end 


end 

Pd = Over_Num/Sim_Times;        % Simulated Pd} 

回答

0

您需要一次完成這一步。我看到信號生成中的錯誤以及統計計算。

首先,確保您正在創建循環平穩信號!我在上面的函數中運行了信號生成代碼,並查看了它。它看起來像一個隨機的相位調製。先嚐試生成一個您知道是循環平穩的信號,如BPSK或模擬AM。

其次,你嘗試了一個10的週期頻率。但看起來你是 使用(隱式)採樣率1(至少在信號發生 部分),這很好。但是,阿爾法必須位於區間[-1,1]內。

三,重寫代碼更清晰地分離信號的產生,光譜相關函數估計和檢測統計計算。在嘗試將其放入Pd/Pfa 計算的循環中之前,請確保正確估計了譜相關函數 。

看看「認知無線電技術」第二章 版的第18章。本章末尾有一些練習可能會幫助你修復你的代碼。

祝你好運!

+0

嗨,謝謝你的回覆。我在我的代碼中熟悉你的分析。根據您的支票,我在代碼中進行了更改。但仍然有一件事讓我困惑,如何確定確切的alpha值檢測值或者我們必須運行一個循環的所有可能的阿爾法alpha值,並在最後取平均值。 – Marcus 2015-03-26 13:25:51

2

在許多情況下,您事先知道週期頻率的值,因爲您知道有關您嘗試檢測的信號的某些信息(例如符號率)。

當您不知道任何循環頻率時,您可以執行徹底搜索,但並非所有算法都適合於此任務,因爲計算上的原因。我在我的博客 cyclostationary.wordpress.com上提供了大量有用的信息,以及生成合適測試信號的問題。