信号相角位移量的计算与信号位移计算-附Matlab代码

news2024/9/22 23:24:06

一、初始相角的位移量

在信号处理中正弦信号经常表示为 x ( n ) = A cos ⁡ ( 2 π f 0 n / f s + θ ) x\left( n \right)=A\cos (2\pi {{f}_{0}}n/{{f}_{s}}+\theta ) x(n)=Acos(2πf0n/fs+θ),其中 f s {{f}_{s}} fs是采样频率, f 0 {{f}_{0}} f0是正弦信号的频率,A是信号的幅值,θ是信号的初始相角。而初始相角值也相当于一个时间的位移量。

信号可进一步表示为:

在这里插入图片描述
由上式可知

在这里插入图片描述

然后导出

在这里插入图片描述
d值就是所要求的相角代表的位移样点量。

而要使信号恢复到初始相角为0,则相当于要设置一个函数y(n),满足y(n)=x(n-d),可得到

在这里插入图片描述

二、获取原始信号的振幅与初始相位角

假如有一正弦信号,如下图所示:

Matlab代码如下:

%% 原始信号
fs = 2000;                      % 采样频率
N = 40;                         % 信号长度
n = 0:N-1;                      % 样点序列
f0 = 100;                       % 初始频率
ph1=-pi/3;                      % 初始相角
x=cos(2*pi*f0*n/fs+ph1);        % 余弦信号序列
figure,plot(n,x,'r')
xlabel('样点'); ylabel('幅值'); 

在这里插入图片描述

图1 正弦信号

通过对上述信号进行傅里叶变换,得到频域谱,可通过分析获得信号在频域谱上的位置值,利用该位置,即可计算出上述信号的幅值与初始相位角,对应的Matlab代码如下:

%% 通过FFT计算信号幅值和信号初始相位角
X=fft(x);                      % FFT
figure,plot(n,real(X),'r');title('信号的频域图')
df = fs/N;                      % 计算频率间隔
nk=f0/df+1;                     % 信号在nk谱线上
A=abs(X(nk))*2/N;               % 计算幅值
Theta=angle(X(nk));             % 计算初始相角

在这里插入图片描述

图2 信号频谱

此时,计算出的信号幅值为1和初始相位角为-1.0472,因此,通过傅里叶变换后计算得到的信号幅值和初始相位角与设置值完全一致。

三、相角位移量计算与信号恢复到初始相角为0

对于本例来说,初始相角值ph1为负值,对应的样点值d也为负值,波形又要左移。
此时,根据上述理论公式,计算得到的相角位移量d=-3.33333

对应的Matlab代码如下:

%% 相角位移量计算
d = ph1*fs/f0/(2*pi);           % 计算位移量

根据第一节的理论,使原始信号位移,此时恢复得到的信号如下图所示:

在这里插入图片描述

图3 信号发生位移(此时初相角为0)

计算得到初始相位角为0。

对应的matlab代码如下:

%% 信号恢复到初始相角为0
Ex=exp(-1j*2*pi*n*d/N);         % 计算旋转因子W^(dk) 

Y = X.*Ex;                      % FFT后乘旋转因子
figure,plot(n,real(Y),'r');title('信号的频域图')

y=ifft(Y);                      % FFT逆变换
y1=real(y);                     % 取的实部
figure,plot(n,y1,'r')
xlabel('样点'); ylabel('幅值'); 

Y1=fft(y1);                     % FFT
df = fs/N;                      % 计算频率间隔
nk=f0/df+1;                     % 信号在nk谱线上
A=abs(real(Y1(nk)))*2/N;        % 计算幅值
Theta=angle(Y1(nk));            % 计算初始相角

四、Matlab程序获取与验证

完整代码链接如下:

信号相角位移量的计算与信号位移计算

可开展针对性验证实验,请私信博主。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

volatile关键字的原理和要避免的误区

1>防止指令重排 2>禁用工作内存缓冲区,直接使用主内存。 经典使用场景 场景1 public static Singleton getInstance() { //第一次null检查 if (instance null) { synchronized (Singleton.class) { //1 //第二次null检查 if (instance null) { //2…

flink sql gateway初探

文章目录前言1.启动SQL gateway2.打开session3.执行flink SQL4.查看执行结果5.获取operationHandle的status6.注意事项7.官方链接前言 flink 1.16版本中发布了一个新功能–SQL gateway,本篇文章就来实践测试下该功能。 1.启动SQL gateway ./bin/sql-gateway.sh st…

让企业报表化繁为简,Smartbi实现报表统一管理

报表作为大家日常工作的关键和必不可少的内容,往往需要定期进行维护和更新。处在工作的不同时间、不同岗位、不同职责,要做的报表也各不相同。随着时间的推移,手上的报表也会越来越多,而这还只是从个人的角度出发来理解&#xff0…

[附源码]Python计算机毕业设计Django学生在线考试系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

java计算机毕业设计ssm洗浴管理系统l9omz(附源码、数据库)

java计算机毕业设计ssm洗浴管理系统l9omz(附源码、数据库) 项目运行 环境配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。…

脉冲波形的产生和整形

一个周期性的脉冲信号,我们希望可以提供0和1的电平值 边沿的好坏,跳转时间长,效果就不好,特性就不好,所以描述周期性的脉冲信号的时候,有相应的参数,高低电平我们一般画成等宽的,尽…

深度学习入门篇 | 常用的经典神经网络模型

**神经网络,是模拟生物神经网络进行信息处理的一种数学模型。**它以对大脑的生理研究成果为基础,其目的在于模拟大脑的某些机理与机制,实现一些特定的功能。神经网络是目前最火的研究方向深度学习的基础,本文将神经网络分成三个主…

【Java面试】谈一谈你对ThreadLocal的理解

文章目录ThreadLocal原理大致设计底层理解【Java面试】说说你对ThreadLocal内存泄漏问题的理解hash冲突的解决get/set/remove方法的一些细节在多线程情况下,对于一个共享变量或者资源对象进行读或者写操作时,就必须考虑线程安全问题。而ThreadLocal采用的…

Three.js实例详解___旋转的精灵女孩(附完整代码和资源)(三)

Three.js实例详解___旋转的精灵女孩(附完整代码和资源)(三) 本篇目录: 六、完整构建整个[旋转的精灵女孩]实例 (1)、新建、启动webGL工程空间 (2)、构建项目的目录层次结构 (2.1…

EVE-NG安装问题记录 重置root密码

目录EVE-NG安装问题记录 重置root密码一、下载iso安装虚拟机二、碰巧没安装成功EVE-NG组件,开启EVE-NG机后 root/eve默认密码不对。进不去系统。1、进入单用户模式重置root密码三、重新安装eve-ng组件EVE-NG安装问题记录 重置root密码 一、下载iso安装虚拟机 从官…

ssm+mysql实现进销存系统|仓库计算机专业毕业论文java毕业设计开题报告

💖💖更多项目资源,最下方联系我们✨✨✨✨✨✨ 目录 Java项目介绍 资料获取 Java项目介绍 《ssmmysql实现进销存系统》该项目采用技术:jsp springmvcspringmybatis cssjs等相关技术,项目含有源码、文档、配套开发软…

嵌入式软件开发知识点总结(二)中断Linux内核

【好文推荐】 路由选择协议——RIP协议 轻松学会linux下查看内存频率,内核函数,cpu频率 纯干货,linux内存管理——内存管理架构(建议收藏) 概述Linux内核驱动之GPIO子系统API接口 一篇长文叙述Linux内核虚拟地址空间的基本概括 中断 硬中断 …

应用开发这样做更节约成本!

现在app已逐渐取代网页端,成为一众手机用户的心头好。要想轻松拿下更多目标用户,开发一个属于自己的app显得尤为重要。那么,在应用开发方面,我们有什么妙招可以降低开发成本呢? 1、明确开发需求 做好我们的app定位&am…

【NumPy 数组索引、裁切,数据类型】

🤵‍♂️ 个人主页老虎也淘气 个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收藏…

6年测开经验,从功能测试到测试开发,我的每一步都经过了深思熟虑...

蓦然回首,软件测试风风雨雨的这几年,起初每天的工作只是鼠标点点点,我还真不知道怎么办,闲的时候真的怀疑自己的存在价值,每天拿着7000的工资,飘荡在繁华的深圳,吃不饱也饿不死,未来…

阿里 p8 私藏 MyBatis 笔记,从入门到精通,纵享源码细节

前言 越来越多的企业已经将 MyBatis 使用到了正式的生产环境,我认为流行的原因就在于绝大部分项目都是面向表结构编程的,把 Java 对象仅当成数据容器,查询和模型变更都设计在一张表上,所谓业务逻辑就是一堆增删改查的 sql 集合&a…

Cadence Allegro PCB设计88问解析(二十一) 之 Allegro中更新器件封装(Footprint)

一个学习信号完整性仿真的layout工程师 今天和大家简单介绍Allegro中如何更新PCB封装,在我们导入原理图网表,PCB的封装是必不可少的,但是可能有些为了前期布局评审,有的封装是临时的,那么就需要后续更新正确的封装。下…

02 Java起步

目录 第一章:注释 1.1 概述 1.2 Java 中的注释 第二章:关键字 2.1 概述 2.2 Java 中的关键字 第三章:标识符 3.1 概述 3.2 标识符的命名规则(必须遵守) 3.3 标识符的命名规范 第四章:数据类型以…

第十四届蓝桥杯集训——JavaC组首篇——环境搭建(win10)

还有9天就截止报名了,我们也算正式开始培训了,今年希望能取得更好的成绩。 今年的蓝桥杯从环境开始——本博客为win10电脑的Java_JDK环境搭建: 学生机环境-Java编程环境(第十四届大赛) 链接: https://pan.baidu.com…

软件测试行业真的饱和了吗?一线大厂年薪100W的测开岗位还很缺人!

在一线大厂,没有测试这个岗位,只有测开这个岗位。这几年,各互联网大厂技术高速更新迭代,软件测试行业也正处于转型期。传统的功能测试技术逐步淘汰,各种新的测试技术层出不穷,测试人员的薪资也水涨船高。与…