Matlab 如何计算正弦信号的幅值和初始相角

news2024/11/15 4:49:02

Matlab 如何计算正弦信号的幅值和初始相角

1、概述 

       如果已知一个正弦信号的幅值,在FFT后频域上该信号谱线的幅值与设置值不同,而是大了许多;如果不知道某一正弦信号的幅値,又如何通FFT后在頻域上求出该正弦信号的幅值呢? 

2、理论基础

有一正弦信号为

信号的幅值为 A,初始相角为 \theta。以采样频率 f_{s} 采样后,FFT(DFT)只取有限项的 n 值(设共 N 项),其离散化表达式为:

式中:K=\frac{k-l}{N} 。又进一步假设,正弦信号的频率 f_{0} 是 \Delta f 的整数倍(\Delta f是频谱中谱线之间频率间隔,或称为分辨率,即 \frac{f_{s}}{N} ),即有f_{0} = l*\Delta f,表示 f_{0} 是与FFT后频谱上的某根线谱相重合,可令 f_{0} 与第 k 条线谱相重合,即 k = l ,所以有 k = \frac{k-l}{N} = 0 。由 k = 0 和 式(2-2-10)可得:

求出了信号幅值A,同时也求出了初始相角 \theta

  1. 这种方法求出正弦信号幅值A和初始相角 \theta是在信号的頻率  f_{s} 与FFT后频谱上的某根谱线相重合的条件下。 
  2. 如果f_{0} 在两条谱线之间,則不能用这种方法来计算。这就是栅栏效应,我们可以用内插的方法来算信号在两条谱线之间分量的频率、幅值和初始相角。 
  3. 当 f_{0} = 0 时,不存在負頻率部分,所以l = 0的幅値 A =\frac{\left | X(l) \right |}{N},初始相角\theta = 0。 
  4. 同时从式(2-2-10)得到,对于所有 K=\frac{k-l}{N}\neq 0,设 k-l =\pm 1\pm 2\pm 3,……,此时\sin (\pi *K*N)=0,使 k\neq l 的 X(k) 值均为0。

3、实例

例:设信号的采样频率为1000Hz,由两个余弦信号组成,频率分别为 f1=50Hz 和 f2=65.75Hz,幅值都为1,初始相角都为0,信号长度为1000,通过FFT求出两个正弦信号的幅值和初始相角。

程序如下:

% 例:设信号的采样频率为1000Hz,由两个余弦信号组成,频率分别为 f1=50Hz 和 f2=65.75Hz,
% 幅值都为1,初始相角都为0,信号长度为1000,通过FFT求出两个正弦信号的幅值和初始相角。

% pr2_2_2
clc; close all; clear;

fs = 1000; %采样频率
N = 1000;  %信号长度
t = (0:N-1)/fs; %设置时间序列
f1 = 50;
f2 = 65.75; %信号2频率
x = cos(2*pi*f1*t) + cos(2*pi*f2*t); %设置信号
X = fft(x); %FFT
Y = abs(X)*2/N; %计算幅值
freq = (0:N/2)*fs/N; %设置频率刻度
[A1, k1] = max(Y(45:65)); %寻求第一个信号的幅值
k1 = k1 + 44; %修正索引号
[A2, k2] = max(Y(60:70)); %寻求第二个信号的幅值
k2 = k2 + 59; %修正索引号

Theta1 = angle(X(k1));
Theta2 = angle(X(k2));
% 显示频率、幅值和初始相角
fprintf('f1=%5.2f   A1=%5.4f   Theta1=%5.4f\n',freq(k1),A1,Theta1); 
fprintf('f2=%5.2f   A2=%5.4f   Theta2=%5.4f\n',freq(k2),A2,Theta2);

% 作图
subplot 211; plot(freq,Y(1:N/2+1),'k'); xlim([0 150]); 
xlabel('频率/Hz'); ylabel('幅值'); title('频谱图');
subplot 223; stem(freq,Y(1:N/2+1),'k'); xlim([40 60]);
xlabel('频率/Hz'); ylabel('幅值'); title('50Hz分量');
subplot 224; stem(freq,Y(1:N/2+1),'k'); xlim([55 75]);
xlabel('频率/Hz'); ylabel('幅值'); title('65.75Hz分量');

       其中 f1 和 f2 表示两信号的頻率,A1 和 A2 表示两信号的幅値,Thetal 和 Theta2 表示两信号的初始相角。第2个信号在两条谱线之间,所以出的参数有很大的差;而第1个信号非常接近设置值,但是有一定的误差,这完全是由第2个信号泄漏所造成的(可通过加窗函数处理该信号,以减少泄漏,对信号参数的估算値能更精确一些)。

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

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

相关文章

应用出海,Google 分享如何让数字营销素材再上层楼

数字营销广告要想取得理想的效果,广告素材是最关键的决定因素之一。 事实上米贸搜谷歌推广发现,在广告给品牌带来的销售额增量中,有 47% 都归功于广告素材。在当今自动化时代,广告素材的作用尤其重要:固然机器可以完成…

5款知名度不高但非常好用的软件

​ 我们在使用一些流行的软件的时候,往往会忽略一些知名度不高但是功能非常强大的软件,有的是因为小众,有的是因为名不见经传,总之因为不出名,有许多的好用的软件都不为大众所知道。 1.图形绘制——Dia ​ Dia是一款…

正中优配:旅游餐饮板块走高,曲江文旅涨停,西安旅游等拉升

旅行餐饮板块7日盘中拉升走高,截至发稿,曲江文旅涨停,西安旅行涨超5%,君亭酒店、华天酒店、国旅联合、宋城演演艺等均上扬。 中国旅行研究院数据显现,今年暑期国内旅行人数达18.39亿人次,占全年国内旅行出…

服务器中了Malloxx勒索病毒应该怎么办?勒索病毒解密,数据恢复

Malloxx勒索病毒是一种近年来发现的电脑病毒,它以加密用户电脑中的重要文件数据为手段,威胁用户并以此勒索钱财。这种病毒的传播方式多种多样,可以通过电子邮件、恶意网站、网络下载等方式进行传播。一旦电脑被感染,病毒会立即锁住…

mfc 浮动窗口

参考 MFC模拟360悬浮窗加速球窗口

基于SpringBoot的宠物商店管理系统

基于SpringBootVue的宠物商店管理系统,前后端分离 开发语言:Java数据库:MySQL技术:SpringBoot、Vue、Mybaits Plus、ELementUI工具:IDEA/Ecilpse、Navicat、Maven 角色:普通用户、超级管理员 功能包含个人…

普罗米修斯(Prometheus)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、普罗米修斯(Prometheus)是什么?1.下载Prometheus工具(切记和操作系统版本对应)2.解压命令3.修改prom…

android studio的Android Drawable Preview

Android Drawable Preview 应用后,如下图: 再也不用一个一个点开去看了 其他学习资料: 1、付费专栏《Android kotlin入门到进阶系列讲解》:https://blog.csdn.net/qq_35091074/category_11036895.html 2、免费专栏《Android kot…

智慧工厂的未来:视频+数字孪生与工业4.0的融合

视频数字孪生技术在智慧工厂项目中具有广泛的应用,为生产制造提供了前所未有的机会和优势。下面将探讨数字孪生技术在智慧工厂项目中的多个应用场景。 数字孪生技术的首要应用之一是生产流程优化。通过将现实世界的工厂映射到数字孪生模型中,制造…

恒运资本:银行股适合定投吗?为什么银行股适合定投?

在股票市场上,出资者能够通过手动不断的买入到达基金定投的效果,那么,银行股适合定投吗?为什么银行股适合定投?下面恒运资本为我们准备了相关内容,以供参考。 银行股适合定投,即通过定投不断的买…

如何选择报修管理系统?报修工单管理系统有哪些功能和优势?

报修管理系统是一种能够帮助企业快速反应设备故障和异常情况,并将问题及时通知到相关人员,并对问题进行统计和分析的系统。它能够有效提高企业的工作效率,并减少人员成本的支出。那么,报修工单管理系统有哪些功能和优势呢?下面以“…

基于Delft3D模型水体流动、污染物对流扩散、质点运移、溢油漂移及地表水环境报告编制教程

详情点击链接:基于Delft3D模型水体流动、污染物对流扩散、质点运移、溢油漂移及地表水环境报告编制教程 前沿 Delft3D计算网格构建 Delft3D水动力数值模拟 Delft3D污染物对流扩散数值模拟 一,Delft3D软件及建模 1.1地表水数值模拟常用软件、优势、如何…

windows系统docker中将vue项目网站部署在nginx上

一、首先在windows系统上下载并安装docker,要下载windows版本 https://www.docker.com/products/docker-desktop/ PS:安装过程中需要WSL,我的是win11系统,直接提示了我安装就可以下一步了。其他windows系统版本我不知道是否需要单…

宠物行业如何进行软文营销

如今,宠物已经成为了人们生活中不可或缺的一部分,大众对于萌宠的喜爱与日俱增,随着“萌宠经济”升温,越来越多的商机开始出现,伴随着宠物市场竞争的日益激烈,宠物行业的营销光靠硬广告很难吸引受众&#xf…

关于MyBatisPlus框架下出现xml里面定义的方法无法被正确识别以及提示调用mysql存储过程时参数无效的问题

第一个问题:xml里面明明定义了方法A,但是通过IService接口调用A的时候,总提示无法将接口中定义的函数绑定到xml中的同名方法中(“Invalid bound statement (not found): com.aircas.sqlservice.mapper.SysTempIndexMapper.getRemo…

【数据分享】2006-2021年我国城市级别的道路、桥梁、管线建设相关指标(10多项指标)

《中国城市建设统计年鉴》中细致地统计了我国城市市政公用设施建设与发展情况,在之前的文章中,我们分享过基于2006-2021年《中国城市建设统计年鉴》整理的2006—2021年我国城市级别的市政设施水平相关指标、2006-2021年我国城市级别的各类建设用地面积数…

链动2+1天天秒商城商业模式

链动21天天秒商城商业模式 在当今市场,一种名为链动21天天的秒杀商城商业模式正在引发广泛关注。这种创新的商业模式具有快速拓展市场的强大能力,让许多用户和商家都感到非常惊讶。那么,这种模式究竟是什么,它又为何具有如此大的…

【开发】视频云存储/安防监控/AI分析/视频AI智能分析网关:垃圾满溢算法

随着我国科技的发展和城市化进程加快,大家对于生活环境以及空气质量更加重视,要求越来越严格。城市街道垃圾以及生活区垃圾满溢已经成为城市之痛。乱扔垃圾,垃圾不入桶这些行为已经严重影响到了城市的美化问题。特别是炎热的夏日和雨水季节&a…

代码优化工具-测试程序执行时间-IDEAdebug+StopWatch

参考: [技巧]IDEA的debugStopWatch监测程序运行时间 添加链接描述 1创建类StopWatchExpand import lombok.extern.slf4j.Slf4j;import org.springframework.util.StopWatch;import java.text.NumberFormat;/*** 检测程序片段运行时间拓展** author sdevil507* cr…

分享一个基于springboot+vue的在线租房与招聘平台系统代码 房屋租赁系统

💕💕作者:计算机源码社 💕💕个人简介:本人七年开发经验,擅长Java、Python、PHP、.NET、微信小程序、爬虫、大数据等,大家有这一块的问题可以一起交流! 💕&…