2014-10-28 284 views
1

我很難理解生成SNR(db)與MSE的關係曲線。不同的信噪比(SNR)是通過改變噪聲功率來創建的。 MSE的公式平均爲T獨立運行。對於每個SNR,我生成NEval = 10 time series。當SNR在範圍= [0:5:50]時,如何正確繪製SNR與MSE的關係圖?下面是僞代碼。MATLAB::均方誤差與SNR圖

N = 100; %Number_data_points 
NEval = 10; %Number_of_different_Signals 
Snr = [0:5:50]; 
T = 1000; %Number of independent runs 

MSE = [1]; 
for I = 1:T 
for snr = 1: length(Snr) 
    for expt = 1:NEval 
    %generate signal 
     w0=0.001; phi=rand(1); 
    signal = sin(2*pi*[1:N]*w0+phi); 
    % add zero mean Gaussian noise 
    noisy_signal = awgn(signal,Snr(snr),'measured'); 
    % Call Estimation algorithm 
    %Calculate error 
    end 
    end 
end 

plot(Snr,MSE); %Where and how do I calculate this MSE 
+0

我猜這是因爲有多少SNR可以提高實際的限制。通常,過高的過濾器是不必要的。因此,當信號質量改善得足夠慢時(每極),通常會停下來。通常情況下,您還會引入一個懲罰函數,其中每個濾波器的次數都會增加。這增加了MSE。 – patrik 2014-10-29 16:34:31

回答

0

如這裏解釋的(http://www.mathworks.nl/help/vision/ref/psnr.html)或其他類似資源,MSE是簡單地平均原始的和損壞的信號之間的平方誤差。在你的符號,

w0=0.001; 
signal = sin(2*pi*[1:N]*w0); 
MSE = zeros(T*Neval,length(Snr)); 
for snr = 1:length(Snr) 
    for I = 1:T*Neval  %%note, T and Neval play the same role in your pseudo code 
     noisy_signal = awgn(sin(2*pi*[1:N]*w0+rand(1)),Snr(snr),'measured'); 
     MSE(I,snr) = mean((noisy_signal - signal).^2); 
    end 
end 
semilogy(Snr, mean(MSE)) %%to express MSE in the log (dB-like) units 

對於不同長度的信號的情況下:

w0=0.001; 
Npoints = [250,500,1000];  
MSE = zeros(T,length(Npoints),length(Snr)); 
for snr = 1:length(Snr) 
    for ip = 1:length(Npoints) 
    signal = sin(2*pi*[1:Npoints(ip)]*w0); 
    for I = 1:T 
     noisy_signal = awgn(sin(2*pi*[1:Npoints(ip)]*w0+rand(1)),Snr(snr),'measured'); 
     MSE(I,ip,snr) = mean((noisy_signal - signal).^2); 
    end 
    end 
end 
semilogy(Snr, squeeze(mean(mean(MSE,1),2))) 
+0

謝謝你的回覆。在我提供的MSE公式中,T與正在評估的信號數量不同;對於每個信號的估計值被發現。分母中的2代表數字,表示估計的數量。當你乘以T * Neval時,我認爲目的是消除一個額外的循環。但是,這是否不意味着MSE公式現在包含T *個信號?請澄清,如果我的理解是錯誤的:不應該T =獨立運行的數量不同於爲每個SNR生成的信號數量? – SKM 2014-10-29 07:02:01

+0

如果我理解正確,你的信號有兩個噪聲分量:隨機相移phi和awgn。這些噪聲是不相關的,因此沒有必要跟蹤每個相移phi的MSE。 – Kostya 2014-10-29 09:30:38

+0

我剛糾正了我的代碼中的一個錯字,我假設該信號不應該包含隨機相移。 – Kostya 2014-10-29 09:34:51