当前位置: 首页 > news >正文

(37)使用MATLAB画出余弦波的频谱

文章目录

  • 前言
  • 一、MATLAB仿真代码
  • 二、仿真结果画图


前言

首先使用MATLAB生成一段余弦信号,然后对其进行FFT变换,画出其频谱。


一、MATLAB仿真代码

代码如下:

f = [50, 100];                 % 两个余弦波的频率
fs = 1000;                     % 采样率
Ts = 1/fs;                     % 采样时间间隔
L = 1000;                      % 信号长度,单位sample
t = (0:L-1)*Ts;                % 时间向量x1 = cos(2*pi*f(1)*t);         % 余弦波1
x2 = cos(2*pi*f(2)*t);         % 余弦波2
X = [x1; x2];                  % 余弦波12组成矩阵,每行一个余弦波% 时域波形画图
figure()
for i = 1:2subplot(2,1,i)plot(t(1:100),X(i,1:100),'LineWidth',1.5)title(['余弦波',num2str(i),'的时域波形(f=',num2str(f(i)),'Hz)'])grid onxlabel('t/s')ylabel('cos(2*pi*f*t)')
end% 时域序列的长度不是2的次幂值,将其扩展为比当前长度大的下一个最小的2的次幂值。扩展的值为补零。
n = 2^nextpow2(L);% 指定dim参数沿X的行(即对每个余弦信号)进行fft运算
dim = 2;
Y = fft(X,n,dim);% 计算每个信号的双边幅度频谱和单边幅度频谱
P2 = abs(Y/L);
P1 = P2(:,1:n/2+1);
P1(:,2:end-1) = 2*P1(:,2:end-1);% 在频域内,为单个图窗中的每一行绘制单边幅度频谱
figure()
for i=1:2subplot(2,1,i)plot(0:(fs/n):(fs/2-fs/n),P1(i,1:n/2),'LineWidth',1.5)grid ontitle(['余弦波',num2str(i),'的幅度谱(f=',num2str(f(i)),'Hz)'])xlabel('频率(Hz)')ylabel('频谱幅度|Y|')
end

二、仿真结果画图

时域波形图:

在这里插入图片描述

余弦波的频谱(单边谱):

在这里插入图片描述



http://www.mrgr.cn/news/50981.html

相关文章:

  • 冰火两重天,为啥头部主播一边塌房一边涨?
  • kratos源码分析:滑动窗口
  • 主流RTOS系统
  • 锂锰电池和锂电池区别
  • 专题:哈希结构
  • Java 二分查找算法详解及通用实现模板案例示范
  • 【分布式微服务云原生】《探秘分布式系统基石:CAP、BASE 理论与 Soft 状态》
  • 腾讯云视立方·音视频通话 SDK 个人信息保护规则
  • Leetcode 第 141 场双周赛题解
  • 深入理解C++ STL中的 vector
  • (亲测可行)windows安装msys2配置c++opencv
  • Excel使用技巧:筛选2组数据;条件格式突出显示数据
  • Zsh 安装与配置
  • 小程序开发设计-模板与配置:WXML模板语法⑨
  • win11安装不了msi文件解决办法
  • 利士策分享,美国“假旗”行动,是否成为了网络空间的阴霾?
  • 机器学习:opencv--人脸检测以及微笑检测
  • HCIP-HarmonyOS Application Developer 习题(十)
  • Python 工具库每日推荐 【sqlparse】
  • leetcode128最长连续序列 golang版