shiyinjita的个人空间 https://blog.eetop.cn/239461 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

SNR的求法

已有 2245 次阅读| 2015-7-24 00:32 |个人分类:matlab

clc ;
close all ;
clear all ;

t  = 0 : 0.001 : 0.999 ;
fs = 150 ;

y = cos (2* pi * t * fs) ;
figure(1) ;
subplot(2,1,1) ;
plot(t ,y) ;
axis([0,1 -1.2 , 1.2 ]) ;
y_awgn = awgn(y , 20) ;
subplot(2,1,2) ;
plot(t ,y_awgn) ;
axis([0,1 -1.2 , 1.2 ]) ;
power_y = 0 ;
power_noise  = 0 ;
y2 = zeros(1 , length(y)) ;
y3 = zeros(1 , length(y_awgn)) ;

 for i  = 1 : length(y) %累加求功率
     y2(i)  = y(i) ^2 ;
     y3(i)  = (y_awgn(i) - y(i)) ^2 ;
     power_y = y2(i) + power_y ;
     power_noise=    power_noise + y3(i) ;
 end

 snr = 10 * log10(power_y / power_noise) ;
 
 y_fft  = fft(y , 1000) ; %算出FFT ,是 实部 + 虚部
 y_fftshift = fftshift(y_fft) ;
f_c  = 0 : 1 : 999 ;
f_c1 = -500 : 1 : 499 ;
figure(2) ;
subplot(2,1,1) ;
plot(f_c , y_fft) ;
subplot(2,1,2) ;
plot(f_c1 , y_fftshift) ;% 移到中心点
y_awgn_fft = fft(y_awgn , 1000) ;
y_awgn_fftshift  = fftshift(y_awgn_fft) ;
figure(3) ;
subplot(2,1,1) ;
plot(f_c , y_awgn_fft ) ;
subplot(2,1,2) ;
plot(f_c1 , y_awgn_fftshift) ;  
y_fft_value =  y_fft .* conj(y_fft) ; %求功率,调用matlab函数 ,还有一种方法是平方,在下面有
y_awgn_noise_fft_value =(  y_awgn_fft - y_fft ) .* conj(  y_awgn_fft - y_fft );
y_add_fft_value =    0   ;
y_add_noise_value1 = 0 ;
for ii  = 1 : 1000
   y_add_fft_value = y_add_fft_value + y_fft_value(ii) ;
   y_add_noise_value1 = y_awgn_noise_fft_value(ii) + y_add_noise_value1 ;
end 

snr_fft = 10 * log10(y_add_fft_value / y_add_noise_value1 ) ;

real_y_fft  = real(y_fft) ;%实部
imag_y_fft  = imag(y_fft) ;%虚部

real_y_awgn_fft = real(y_awgn_fft) ;
imag_y_awgn_fft = imag(y_awgn_fft) ;

y_noise_fft_pingfang = 0 ;
y_fft_pingfang = 0 ;
y_awgn_fft_pingfang = 0 ;

for iii  = 1 : 1000 
    y_fft_pingfang  = real_y_fft(iii) ^2 + imag_y_fft(iii) ^2 + y_fft_pingfang ;
    y_awgn_fft_pingfang = real_y_awgn_fft(iii) ^2 + imag_y_awgn_fft(iii) ^2 + y_awgn_fft_pingfang  ;
    y_noise_fft_pingfang = (real_y_awgn_fft(iii) - real_y_fft(iii)) ^2 + (imag_y_awgn_fft(iii) - imag_y_fft(iii)) ^ 2  + y_noise_fft_pingfang ;
    
end
snr_pingfang_fft = 10 * log10(y_fft_pingfang /y_noise_fft_pingfang ) ;

点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 1

    粉丝
  • 2

    好友
  • 1

    获赞
  • 29

    评论
  • 2823

    访问数

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-5 10:25 , Processed in 0.013265 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部