一、初始相角的位移量

在信号处理中正弦信号经常表示为 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πf0​n/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程序获取与验证

完整代码链接如下:

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

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

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

  1. SAR成像系列:【3】合成孔径雷达(SAR)的二维回波信号与简单距离多普勒(RD)算法 (附matlab代码)

    合成孔径雷达发射信号以线性调频信号(LFM)为基础,目前大部分合成孔径雷达都是LFM体制,为了减轻雷达重量也采用线性调频连续波(FMCW)体制:为了获得大带宽亦采用线性调频步进频(FMSF)体制. ( ...

  2. 几种常用信号平滑去噪的方法(附Matlab代码)

    几种常用信号平滑去噪的方法(附Matlab代码) 1 滑动平均法 1.0 移动平均法的方法原理 1.1 matlab内自带函数实现移动平均法 1.2 利用卷积函数conv()实现移动平均法 1.3 利 ...

  3. 情感识别:基于ELM、SOM分类器实现心率变异性信号情感识别,附matlab代码

    情感识别:基于ELM.SOM分类器实现心率变异性信号情感识别,附matlab代码 情感识别是一项有趣而又具有挑战性的任务.它可以用于识别人类的情绪状态,从而在许多领域中产生影响,例如医疗保健.人工智能 ...

  4. 信号去噪,基于Sage-Husa自适应卡尔曼滤波器实现海浪磁场噪声抑制及海浪磁场噪声的产生附Matlab代码

    信号去噪,基于Sage-Husa自适应卡尔曼滤波器实现海浪磁场噪声抑制及海浪磁场噪声的产生附Matlab代码 信号处理中的一个关键问题就是信号去噪.在实际应用中,很多信号可能会受到环境噪声的干扰,这些 ...

  5. 单频信号的相位谱计算与误差修正-附Matlab代码

    一.问题描述 我们在实际处理时经常遇到只有一个正弦信号的情况,其频率为 f 0 {{f}_{0}} f0​,在谱分析以后,除了在频率为 f 0 {{f}_{0}} f0​处有相位数值外,其他频率处都有 ...

  6. 【信号去噪】基于硬阈值、软阈值、半软阈值、Maxmin阈值、Garrote阈值小波变换实现心音去噪附matlab代码

    1 内容介绍 小波变换在信号的滤波降噪处理中应用非常广泛,针对传统小波阈值去噪算法中软,硬阈值函数以及Garrote阈值函数的不足,构造出一个新的阈值函数,并采用新的阈值确定方法,对信号的去噪处理更加 ...

  7. 【信号分解】基于LMD算法和ELMD算法实现管道泄漏信号处理附matlab代码

    1 内容介绍 在科技水平相当发达的今天,互联网+.大数据慢慢渗透进人们的生活当中,但 科技的进步不仅仅要体现在生活质量水平的提高.经济的快速发展,更应该体现在对社会资源的合理利用.自建国以来,我国管道 ...

  8. 【智能优化算法】基于遗传算法实现城市交通信号优化附matlab代码

    1 简介 本文设计实时优化的配置方案对道路畅通的应急决策管理具有重要意义.本文在分析交通控制基本理论的基础上,根据交叉口的实际情况并考虑信号灯的转换与车辆的启动损失时间,采用四相位对称式放行方案,以车 ...

  9. 【信号去噪】基于鲸鱼算法优化VMD实现信号去噪附matlab代码

    1 内容介绍 一种基于WOAVMD算法的信号去噪方法,具体为:根据鲸鱼优化算法分别建立目标包围,发泡网攻击以及猎物搜寻的数学模型,然后进行初始化参数,在取值范围内初始化鲸鱼的位置向量,根据位置向量对原 ...

最新文章

  1. 伍六七带你学算法 入门篇-最长回文串
  2. c语言画图 钟表模拟程序,图形模拟时钟C语言课程设计
  3. Hadoop的学习前奏(一)——在Linux上安装与配置Hadoop
  4. 有向图的深度/广度优先遍历算法
  5. 运营私域流量转化没效果为什么?
  6. HBase数据迁移到Kafka实战
  7. 我的blog开张了,希望大家能多多赏光啊
  8. java怎么设置多个输入_Java中从键盘输入多个整数的方法
  9. 四则运算 结对项目
  10. OpenFeign, Zuul, Gateway相互不兼容的问题总结
  11. python功能模块之psutil_1.python系统性能信息模块之psutil模块
  12. 怎么卡我的世界服务器物品,我的世界手机版卡BUG刷物品方法攻略
  13. 基于Python实现的DHT嗅探器
  14. CLC龍链:致力于打造支付生态系统
  15. What is UTF-8?
  16. linux 配制aria2
  17. 【Lilishop商城】No3-2.模块详细设计,系统设置(系统配置、行政区划、物流公司、滑块验证码图片、敏感词过滤)的详细设计
  18. matlab去除图片水印_初试 Matlab 之去除水印
  19. 小米红米6Pro线刷兼救砖_解账户锁_纯净刷机包_教程
  20. 送给女朋友的3D立体动态相册的实现代码

热门文章

  1. Unity 安卓AB包版本问题
  2. [原]Dropship的流程
  3. DSP程序空间和数字空间的理解
  4. 创建物料凭证 BAPI_GOODSMVT_CREATE
  5. Lab12_Environment_Variable
  6. H3C安全技术高级工程师H3CSE Security GB0-530
  7. 指纹解锁亮屏时间 分析
  8. 【C#学习笔记】TextBox使用
  9. java 汉字转为GBK编码,再由GBK编码转为汉字
  10. 如何制作计算机启动盘,如何制作u盘启动盘 教你简单的操作方法