Matlab信号处理2:方波信号的合成与分解

news2024/11/27 9:46:20

周期信号可展开为傅里叶级数,因此方波信号可用若干谐波去拟合。以下是Matlab的实现:

%% 方波信号的分解

% 1.生成方波信号
% 方波信号周期、基波频率
T0 = 2; w0 = (2 * pi) / T0;
% 方波信号值为1的区间
T1 = 0.5;
% 绘图周期:(2*n+1)个周期
n = 2.5;

% 方波信号时间范围、时间间隔
t = (-n*T0 - T0/2):0.001:(n*T0 + T0/2);
% 创建与t长度相同且其中所有元素都为0的一维向量y
y = zeros(1, length(t));
for i = 1:length(t)
    % 用以判断时间点是否落在幅值为0或1的区间
    t_ = mod(abs(t(1,i)),T0);
    % 方波信号赋值
    if(abs(t_)<T1||abs(t_)>T0-T1)
        y(1,i)=1; % 向量y中第1行第i列元素置1
    else
        y(1,i)=0;
    end
end

subplot(221);
plot(t,y);
xlim([(-n*T0 - T0/2) (n*T0 + T0/2)]);
ylim([0 2]);
set(gca, "XTick",(-n*T0 - T0/2):4:(n*T0 + T0/2));
set(gca,"YTick",0:1:2);
xlabel("时间(s)");
ylabel("幅值")
title("方波信号");

% 2.方波信号分解
% 直流分量系数
c0 = 2*T1/T0;
% 用以合成方波的谐波个数
num = 10;
% 各谐波的系数
ck=zeros(1,num);
for k = 1:num
    ck(1,k) = sin(k * w0 * T1) / (k * pi);
end

% 根据傅里叶级数的分解,绘制单边谱(傅里叶级数的余弦表达形式)
ck_cos = 2 * ck;
subplot(222);
stem(0:1:num, [c0 ck_cos]); % x轴坐标0~num,步长为1;y轴的值由后面向量给出
xlim([0 num]);
ylim([-0.5 0.75]);
set(gca,"XTick",0:floor(1):num); % x轴刻度步长1
set(gca,"YTick",-0.5:0.25:0.75);
xlabel("频率(间隔为基波频率)");
ylabel("幅值")
title("方波信号单边幅度谱");

% 绘制分解出的谐波图
% 绘制直流分量
subplot(223);
plot(t,c0*ones(1,length(t))); % ones是生成1行长度为length(t)的矩阵
hold on

% 绘制谐波分量
% 自动调整颜色
greylevel = 0.1:(0.9-0.1)/(num-1):0.9;

for k = 1:num
    plot(t,ck_cos(1,k)*cos(k*w0*t),"Color",[greylevel(1,k) greylevel(1,k),greylevel(1,k)]); % RGB
end

xlim([(-n*T0 - T0/2) (n*T0 + T0/2)]);
ylim([-2 2]);
set(gca,"XTick",(-n*T0 - T0/2):4:(n*T0 + T0/2));
set(gca,"YTick",-2:0.5:2);
xlabel("时间(s)");
ylabel("幅值");
title("方波信号分解为n次谐波");

% %图例
% str = [];
% str{1} = sprintf("直流分量");
% for i = 1:num
%     str{1+i} = sprintf("%d次谐波分量",i);
% end
% legend(str,"Location","NorthEastOutside");

% 3.n次谐波合成方波
subplot(224);
y_sum = c0*ones(1,length(t));
for i = 1:length(t)
    for k = 1:num
        y_sum(1,i) = y_sum(1,i) + ck_cos(1,k)*cos(k*w0*t(1,i));
    end
end

plot(t, y_sum);
xlim([(-n*T0 - T0/2) (n*T0 + T0/2)]);
xlabel("时间(s)");
ylabel("幅值");
title("n次谐波合成方波信号");

运行效果:

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

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

相关文章

SpringBoot项目--电脑商城【用户注册】

1.创建数据表 1.1 创建t_user表 CREATE TABLE t_user (uid INT AUTO_INCREMENT COMMENT 用户id,username VARCHAR(20) NOT NULL UNIQUE COMMENT 用户名,password CHAR(32) NOT NULL COMMENT 密码,salt CHAR(36) COMMENT 盐值,phone VARCHAR(20) COMMENT 电话号码,email VARCH…

S7-1500/ET200MP 使用 TIA STEP7 进行自由口通讯

1. 硬件列表 2. 组态和配置 1) 新建项目 2) 创建CPU1500站点 3) 组态CM PtP 串口 4) 设置协议自由口 3. 编写通信程序 1) 逻辑地址的填写 2) 调用发送接收功能块 3) 创建发送DB块和接收DB块 4. 设备连接 5. 通信测试 1) 设置串口调试调试软件SSCOM32 2)…

某米ax3000路由器组网解析

我们使用某米k60手机与某米ax3000 wifi6路由器组网&#xff0c;来分析和学习网络速率与瓶颈限制。 某米 AX3000 路由器简介 某米 AX3000 路由器是一款支持 WiFi 6 的双频路由器&#xff0c;它的 MIMO 是 22&#xff0c;也就是两根天线。MIMO 是 Multiple Input Multiple Outpu…

[hpsupport@privatemail.com].Elbie勒索病毒的最新威胁:如何恢复您的数据?

引言&#xff1a; 随着技术的不断发展&#xff0c;网络犯罪分子也在不断进化和改进他们的方法&#xff0c;其中之一就是恶名昭著的勒索病毒。最近&#xff0c;出现了一种新的威胁&#xff0c;名为 [ hpsupportprivatemail.com ].Elbie 勒索病毒。让我们一起深入探索这个威胁&am…

拥抱国产化,生态软件信创兼容适配之路

国产化是指技术引进项目投产后所生产的产品中&#xff0c;国内生产件的数量占整件产品生产件数量。换句话说&#xff0c;软件国产化的占比&#xff0c;直接影响到技术是否会在某一个时点上被”卡脖子“。 随着国家经济的发展和技术水平的提高&#xff0c;国家整体实力大大增强…

视频集中存储/直播点播平台EasyDSS点播文件分类功能新升级

视频推拉流EasyDSS视频直播点播平台&#xff0c;集视频直播、点播、转码、管理、录像、检索、时移回看等功能于一体&#xff0c;可提供音视频采集、视频推拉流、播放H.265编码视频、存储、分发等视频能力服务。 TSINGSEE青犀视频的EasyDSS平台具有点播文件分类展示方法&#xf…

深入synchronized

##深入synchronized 2.1 类锁、对象锁 synchronized的使用一般就是同步方法和同步代码块。 synchronized的锁是基于对象实现的。 如果使用同步方法 static&#xff1a;此时使用的是当前类.class作为锁&#xff08;类锁&#xff09; 非static&#xff1a;此时使用的是当前对…

【网络安全带你练爬虫-100练】第23练:文件内容的删除+写入

目录 0x00 前言&#xff1a; 0x02 解决&#xff1a; 0x00 前言&#xff1a; 本篇博文可能会有一点点的超级呆 0x02 解决&#xff1a; 你是不是也会想&#xff1a; 使用pyrhon将指定文件夹位置里面的1.txt中数据全部删除以后---->然后再将参数req_text的值写入到1.txt …

【C++】反向迭代器精讲(以lIst为例)

目录 二&#xff0c;全部代码 三&#xff0c;设计思路 1. 讨论 2. 关于迭代器文档一个小细节 结语 一&#xff0c;前言 如果有小伙伴还未学习普通迭代器&#xff0c;请参考这篇文章中的普通迭代器实现。 【STL】list用法&试做_底层实现_花果山~~程序猿的博客-CSDN…

Android架构 架构和 CPU ABI - NDK

查看设备架构 adb -s emulator-5554 shell getprop ro.product.cpu.abi C:\Users\liyd>adb -s emulator-5554 shell getprop ro.product.cpu.abi x86_64C:\Users\liyd>adb -s 804c11f1 shell getprop ro.product.cpu.abi arm64-v8amumu模拟器12 C:\Users\liyd>adb …

MobaXterm 突破14个session限制

通常情况下&#xff1a;随着工作时间的增长&#xff0c;我们会保存许许多多的linux到本地的mobastream&#xff0c;然后当超过14个&#xff0c;就会被被限制&#xff0c;这个会让人很头疼。 1. 安装python&#xff0c;配置好环境变量 测试安装成功&#xff1a; 2. 基于项目进行…

uniapp点击事件在小程序中无法传参

这个问题很是神奇&#xff0c;第一次遇到。在h5中&#xff0c;点击事件可以正常传参&#xff0c;打包小程序后确失效了。 修改&#xff1a;for循环中的key&#xff0c;使用 index就好了

视频汇聚/视频云存储/视频监控管理平台EasyCVR启动时打印starting server:listen tcp,该如何解决?

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同&#xff0c;可实现视频监控直播、视频轮播、视频录像、云存储、回放与检索、智能告警、服务器集群、语音对讲、云台控制、电子地图、H.265自动转码H.264、平台级联等。为了便于用户二次开发、调用与集成&#xff0c;…

SpringBoot集成redis-Jedis

文章目录 1.相关概念2.环境搭建及测试 1.相关概念 Springboot学习笔记&#xff1a;https://blog.csdn.net/meini32/article/details/132544107 Redis快速入门&#xff1a;https://blog.csdn.net/meini32/article/details/132666283 2.环境搭建及测试 redis相关配置 Sprin…

车载域控制器DCU浪涌防护推荐TVS二极管

为了解决分布式EEA的这些问题&#xff0c;汽车工程师开始逐渐把很多功能相似、分离的ECU功能集成整合到一个比ECU性能更强的处理器硬件平台上&#xff0c;这就是汽车“域控制器&#xff08;Domain Controller Unit&#xff0c;DCU&#xff09;”。车载域控制器DCU大大优化整车的…

【Flink】关于jvm元空间溢出,mysql binlog冲突的问题解决

问题一&#xff1a;7张表是同一个mysql中的&#xff0c;我们进行增量同步时分别用不同的flink任务读取&#xff0c;造成mysql server-id冲突问题&#xff0c;如下&#xff1a; Caused by: io.debezium.DebeziumException: A slave with the same server_uuid/server_id as this…

LINUX内核启动流程-1

1、BIOS启动 硬件设置从OXFFFF0启动:CPU硬件设置加电即进入16位实模式状态运行,CPU硬件逻辑设计为加电瞬间强行将CS的值置为oxF000,IP的值置为0xFFF0,这样CS:IP就指向0xFFFF0这个地址位置。 BIOS程序的入口地址恰恰就是0xFFFF0 ! 也就是说,BIOS程序的第一条指令就设计在…

【0220】stats collector如何得知pgStatSock中的消息类型、消息报文内容以及消息是否完整?

1. vacuum、writer、checkpointer等进程如何发送统计信息给stats collector 前面已经图文并茂的讲解过,stats collector进程通过UDP方式与其他进程进行通信,在初始化资源时,通过socket()系统函数得到一个全局套接字fd。后续其他进程有统计消息时,通过该句柄,可发送消息给…

sql-gen:点击生成SQL、RO、VO的工具

sql-gen仓库地址&#xff1a;码云 Github 1. 概述 sql-gen是一个用于提高后端接口开发效率的小工具&#xff0c;主要有如下功能&#xff1a; 生成连表SQL语句根据WHERE条件来生成封装查询条件的实体类&#xff08;RO&#xff09;根据SELECT列来生成封装查询结果的实体类&…

学习笔记|小数点控制原理|数码管动态显示|段码跟位码|STC32G单片机视频开发教程(冲哥)|第十集:数码管动态显示

文章目录 1.数码管动态刷新的原理2.动态刷新原理3.8位数码管同时点亮新建一个数组选择每个位需要显示的内容实战小练&#xff1a;简易10秒免单计数器将刷新动作写成函数 课后练习: 1.数码管动态刷新的原理 上述图片引用自&#xff1a;51单片机初学2-数码管动态扫描 用一排端口来…