前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【数字信号处理】相关函数应用 ( 使用 matlab 计算相关函数 )

【数字信号处理】相关函数应用 ( 使用 matlab 计算相关函数 )

作者头像
韩曙亮
发布2023-03-30 12:00:42
2.4K0
发布2023-03-30 12:00:42
举报
文章被收录于专栏:韩曙亮的移动开发专栏

文章目录

一、相关函数应用场景


求下面信号的 " 自相关函数 " :

x(n) = \sin(2\pi fn) + N(n)

其中

N(n)

为 高斯白噪声 ;

高斯白噪声 符合 正态分布 特性 , 其 均值为

0

, 方差为

1

, 其功率谱密度是白的 , 在所有的频率上 , 其功率都相同 ;

在上一篇博客 【数字信号处理】相关函数应用 ( 相关函数应用场景 | 噪声中检测信号原理 ) 中 , 使用了公式推导的方法求相关函数 , 本篇博客使用 matlab 求相关函数 ;

下面开始使用 matlab 计算

x(n) = \sin(2\pi fn) + N(n)

的相关函数 ;

1、生成高斯白噪声

生成 高斯白噪声 序列 , 均值 0 , 方差 1 ;

代码语言:javascript
复制
randn(1,200); 

上述代码 生成的 高斯白噪声 序列 是一个 有 200 个元素的行向量 ,

如果是 randn(2, 200) 代码 , 则生成的是一个

2 \times 200

的矩阵 ;

2、信噪比 SNR

SNR 是信噪比 ,

P_s

是信号功率 ,

P_N

是噪声功率 , 其关系是 :

SNR = 10 \log_{10}\cfrac{P_s}{P_N}

在 matlab 中 , 设置信噪比为

7

;

代码语言:javascript
复制
% 设置 信噪比 
SNR = 7;

3、根据信噪比 SNR 求信号幅度

信号

A \sin \omega n

, 其功率是

P_s = \cfrac{A^2}{2}

, 噪声功率 是

P_N=1

, 将其带入到信噪比公式中 :

SNR = 10 \log_{10}\cfrac{P_s}{P_N} = 10 \log_{10}\cfrac{\cfrac{A^2}{2}}{1} = 10 \log_{10}\cfrac{A^2}{2}

根据信噪比 计算 幅度

A

:

\cfrac{SNR}{10} = log_{10}\cfrac{A^2}{2}
\cfrac{A^2}{2} = 10^{\cfrac{SNR}{10}}
A^2 = 2 \times 10^{\cfrac{SNR}{10}}
A = \sqrt{2 \times 10^{\cfrac{SNR}{10}}}

写成 matlab 代码为 :

代码语言:javascript
复制
% 根据 信噪比 计算信号幅度
SignalAmplitude = sqrt( 2 * 10^(SNR/10) );

4、产生单载波信号及最终信号

根据

A \sin \omega n

公式 , 产生 200 个信号 , 其中

A

之前已经求出 ;

代码语言:javascript
复制
% 根据 Asinωn 产生 200 个信号 
x1 = A * sin( pi * 0.165 * (0:199) ); 

然后将 信号 与 高斯白噪声叠加 :

代码语言:javascript
复制
% 信号 + 高斯白噪声
x = x1 + xn; 

5、求自相关函数及功率

求自相关函数 , 使用 xcorr 函数 ;

代码语言:javascript
复制
% 求 x 的 自相关函数 , 长度为2N-1
y = xcorr(x, x); 

求信号功率 :

代码语言:javascript
复制
% 功率 : 自相关函数 幅度 求平均
% 自相关函数 就是 200 个功率之和
y = y / 200; 

6、matlab 完整代码

matlab 完整代码 :

代码语言:javascript
复制
% 清除之前的变量或内存
clear; 

% 生成 高斯白噪声 序列 , 均值 0 , 方差 1
% 生成的 高斯白噪声 序列 是一个 有 200 个元素的行向量
xn = randn(1,200); 

% 设置 信噪比 
SNR = 7;

% 根据 信噪比 计算信号幅度
A = sqrt( 2 * 10^(SNR/10) );

% 根据 Asinωn 产生 200 个信号 
x1 = A * sin( pi * 0.165 * (0:199) ); 

% 信号 + 高斯白噪声
x = x1 + xn; 

% 求 x 的 自相关函数 , 长度为2N-1
y = xcorr(x, x); 

% 功率 : 自相关函数 幅度 求平均
% 自相关函数 就是 200 个功率之和
y = y / 200; 

%建立幕布
figure;
%绘制 "输出序列" 图像 , 点用上三角表示
plot(y);

% 打开网格
grid on;

执行结果 :

在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-03-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、相关函数应用场景
    • 1、生成高斯白噪声
      • 2、信噪比 SNR
        • 3、根据信噪比 SNR 求信号幅度
          • 4、产生单载波信号及最终信号
            • 5、求自相关函数及功率
              • 6、matlab 完整代码
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档