数字锁相放大器(DLIA)基本原理与Matlab仿真

本文介绍数字锁相放大器(DLIA)基本原理与Matlab仿真。

1.基本原理

数字锁相放大器(DLIA)原理框图如下图。

其核心部分为FPGA/DSP内部的相关运算由正弦参考序列,D/A转换器,低通滤波器构成的DDS,DDS相关内容可以参考我以前的博文,这里对信号相关运算的原理作简要介绍。

设输入信号为携带噪声的信号x(t)=A_{I}\cdot sin(2\pi ft+\theta )+n(t),输入信号频率为f,采样频率为f_{s},令f_{s}=Nf(N\geq 3),采样间隔\tau =\frac{1}{Nf},对信号采样q个周期,总采样点数为M=qNn(t)为噪声信号。参考信号分别为正弦序列和余弦序列(采样点数和输入信号一致),由于输入信号与参考信号之间有相关性,与噪声之间几乎无关,故在下面的相关运算过程中,噪声项可忽略。对输入信号进行采样可得离散信号序列:

x(k)=A_{I}\cdot sin(2\pi fk\tau +\theta )=A_{I}\cdot sin(\frac{2k\pi}{N}+\theta) \, \, \, \, k=0,1,2... M-1

参考信号可以由FPGA/DSP内部生成(采用表格法),这里分别生成正弦参考序列(r_{s}(k))和余弦参考序列(r_{c}(k)):

r_{s}(k)=A_{R}\cdot sin(\tfrac{2k\pi}{N})\, \, \, \, k=0,1,2... M-1

r_{c}(k)=A_{R}\cdot cos(\tfrac{2k\pi}{N})\, \, \, \, k=0,1,2... M-1

这里注意输入信号的频率和参考信号的频率要相同。

x(k)r_{s}(k)的互相关R_{xr,s}x(k)r_{c}(k)的互相关R_{xr,c},即同相输出和正交输出的互相关信号为:

R_{xr,s}=\frac{1}{M-i}\sum_{k=0}^{M-i-1}x(k)\cdot r_{s}(k+i)=\frac{A_{I}A_{R}}{2}cos(2\pi fi+\theta)\, \, \, \, i=0,1,2...M-1

R_{xr,c}=\frac{1}{M-i}\sum_{k=0}^{M-i-1}x(k)\cdot r_{c}(k+i)=\frac{A_{I}A_{R}}{2}sin(2\pi fi+\theta)\, \, \, \, i=0,1,2...M-1

其中,R_{xr,s}R_{xr,c}采用的是无偏估计的相关运算。

从而可求得:

A_{I}(i)=\frac{2{\sqrt{R_{xr,s}^{2}(i)+R_{xr,c}^{2}(i)}}}{A_{R}}\, \, \, \, i=0,1,2...M-1

\theta (0)=arctan(\frac{R_{xr,c}(0)}{R_{xr,s}(0)})

2.Matlab仿真

这里,我们以输入信号fm=1000Hz,信噪比为-10dB(即噪声比信号强10倍),fs=100000Hz,为例,对上述原理进行仿真,Matlab代码如下:

fm=1000;
fs=100000;
N=fs/fm;
k=0:1:1000;
theta=pi/8;
x=sin(2*k*pi/N + theta);%原始信号
xn=awgn(x,-10,0);%对信号加噪
subplot(9,1,1);
plot(k,x);
title('x');
subplot(9,1,2);
plot(k,xn);
title('xn');
rs=sin(2*k*pi/N);%正弦信号
subplot(9,1,3);
plot(k,rs);
title('rs');
rc=cos(2*k*pi/N);%余弦信号
subplot(9,1,4);
plot(k,rc);
title('rc');rxs=xcorr(xn,rs,'unbiased',500);%与正弦信号作互相关
subplot(9,1,5);
plot(k,rxs);
title('rxs');
rxc=xcorr(xn,rc,'unbiased',500);%与余弦信号作互相关
subplot(9,1,6);
plot(k,rxc);
title('rxc');n = 10;
Wn = 0.3;
[b, a] = butter(n, Wn);rxs_filtered = filter(b, a, rxs);%对相关信号结果滤波
subplot(9,1,7);
plot(k,rxs_filtered);
title('rxs filtered');
rxc_filtered = filter(b, a, rxc);%对相关信号结果滤波
subplot(9,1,8);
plot(k,rxc_filtered);
title('rxc filtered');amp=2*sqrt(rxs_filtered.^2+rxc_filtered.^2);%计算幅值
subplot(9,1,9);
plot(k,amp);
title('amp');
p=atan(rxc_filtered(1)/rxs_filtered(1));%计算相位

其中,最核心的部分为相关运算(这里采用的是“unbiased”即无偏估计),相关运算计算可参考我以前的博文,这里不做过多叙述。仿真结果如下图。

从仿真结果可以看出,输出幅值,相位和原输入信号幅值,相位非常接近。

总结,本文介绍了数字锁相放大器(DLIA)基本原理与Matlab仿真。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/695687.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue+springboot实现excel批量数据的导入导出

①后端配置端口:修改UserController UserController: package com.example.springboot.controller;import cn.hutool.core.util.StrUtil; import cn.hutool.poi.excel.ExcelReader; import cn.hutool.poi.excel.ExcelUtil; import cn.hutool.poi.excel.…

咸鱼之王游戏攻略:平民怎么起号?

在《咸鱼之王》这款游戏中,即使是平民玩家,也有着许多可以优化的操作,以最大程度地提高收益。本攻略将针对平民玩家的日常操作进行详细解读,包括黑市购买、资源管理等方面的建议,希望对广大玩家有所帮助。 一、黑市购买…

王者营地ip地址怎么隐藏

在数字化快速发展的今天,网络安全和隐私保护成为了每个人都需要面对的重要问题。作为一款备受欢迎的游戏社区应用,王者营地为用户提供了丰富的游戏信息和交流平台。然而,与此同时,用户的IP地址也可能在不经意间被泄露,…

JavaEE技术之SpringCloud(Nacos注册中心、Nacos配置中心、Sentinel实现熔断与限流)

文章目录 SpringCloud Alibaba1、简介1.1 背景1.2 Nacos主要功能1.3 Nacos和SpringBoot、SpringCloud版本选择 2、Nacos注册中心2.1 案例准备2.2 Nacos注册中心下载启动2.2.1 下载2.2.2 解压启动2.2.3 nacos-server访问测试 2.3 nacos注册中心客户端整合2.3.1 订单服务整合naco…

最短路径[floyd算法]-----视频讲解+代码实现

求最短路径,一般有三种方法: 单源最短路径--Dijkstra算法 此算法只能求不带负权值的有向无环图 单源最短路径--Bellman-Ford算法(少考) 此算法优点在于:可以求带权值的有向无环图 但只是缺点明显,时间复杂度…

视频素材哪里找?7个无版权视频素材网站

这篇文章为那些正在学习视频剪辑的新手提供了一份宝贵的资源清单,介绍了7个可以找到高质量且免费可商用的视频素材网站。每个网站都有其独特的资源库,可以帮助用户找到适合各种项目的视频素材,从生活vlog到专业旅行记录,都可以在这…

Gitee添加仓库成员

1.进入你的项目 2.点击管理 3.左侧有个仓库管理 4.要加哪个加哪个,有三个方式~ 可以直接添加之前仓库合作过的开发者

IO系列(一) -一文带你读懂 java 中的IO流!

一、摘要 说到 IO,相信大家都不陌生,英文全称:Input/Output,即输入/输出,通常指数据在内部存储器和外部存储器或其他周边设备之间的输入和输出。 比如我们常用的SD卡、U盘、移动硬盘等等存储文件的硬件设备&#xff…

Cosmo Bunny Girl

可爱的宇宙兔女郎的3D模型。用额外的骨骼装配到Humanoid上,Apple混合了形状。完全模块化,包括不带衣服的身体。 技术细节 内置,包括URP和HDRP PDF。还包括关于如何启用URP和HDRP的说明。 LOD 0:面:40076,tris 76694,verts 44783 装配了Humanoid。添加到Humanoid中的其他…

前端部署真的不简单

现在大部分的中小型公司部署前端代码都是比较简单的,主要步骤如下: 首先,通过脚手架提供的命令npm run build打包前端代码,生成dist文件夹; 最后,将dist文件夹丢给后台开发人员放在他们的工程里面,随后台…

APNGToGifConverter for Mac:一键转换APNG为GIF的神奇小工具!

APNGToGifConverter for Mac 💻 是一款为Mac用户量身定制的、简单易用的图片格式转换工具。它能够将APNG(动画PNG)文件快速转换为GIF(图形交换格式)文件,让你的图片动画轻松在各种平台和设备上播放。 &…

Spring Boot整合ElasticSearch实战 - 第511篇

历史文章(文章累计500) 《国内最全的Spring Boot系列之一》 《国内最全的Spring Boot系列之二》 《国内最全的Spring Boot系列之三》 《国内最全的Spring Boot系列之四》 《国内最全的Spring Boot系列之五》 《国内最全的Spring Boot系列之六》 《…