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

周期信号可展开为傅里叶级数,因此方波信号可用若干谐波去拟合。以下是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列元素置1elsey(1,i)=0;end
endsubplot(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:numck(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:numplot(t,ck_cos(1,k)*cos(k*w0*t),"Color",[greylevel(1,k) greylevel(1,k),greylevel(1,k)]); % RGB
endxlim([(-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:numy_sum(1,i) = y_sum(1,i) + ck_cos(1,k)*cos(k*w0*t(1,i));end
endplot(t, y_sum);
xlim([(-n*T0 - T0/2) (n*T0 + T0/2)]);
xlabel("时间(s)");
ylabel("幅值");
title("n次谐波合成方波信号");

运行效果:

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

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

相关文章

Elasticsearch 分布式搜索——聚合

1.聚合的种类 聚合常见的有三类&#xff1a; **桶&#xff08;Bucket&#xff09;**聚合&#xff1a;用来对文档做分组 TermAggregation&#xff1a;按照文档字段值分组&#xff0c;例如按照品牌值分组、按照国家分组Date Histogram&#xff1a;按照日期阶梯分组&#xff0c;例…

生信豆芽菜-机器学习筛选特征基因

网址&#xff1a;http://www.sxdyc.com/mlscreenfeature 一、使用方法 1、准备数据 第一个文件&#xff1a;特征表达数据 第二个文件&#xff1a;分组信息&#xff0c;第一列为样本名&#xff0c;第二列为患者分组 第三个文件&#xff1a;分析基因名 2、选择机器学习的方…

【C语言】入门——结构体

目录 结构体 为什么有结构体&#xff1f; 1.结构体的声明 1.2结构体变量的访问和初始化 2.结构体成员的访问 结构体 struct 结构体类型 {//相关属性; }结构体变量; 结构体和数组不同&#xff0c;同一类型的数据的集合是数组&#xff1b; 结构体是多种类型的数据的集合&…

使用GPT-4生成训练数据微调GPT-3.5 RAG管道

OpenAI在2023年8月22日宣布&#xff0c;现在可以对GPT-3.5 Turbo进行微调了。也就是说&#xff0c;我们可以自定义自己的模型了。然后LlamaIndex就发布了0.8.7版本&#xff0c;集成了微调OpenAI gpt-3.5 turbo的功能 也就是说&#xff0c;我们现在可以使用GPT-4生成训练数据&a…

被百度判定为低质量网站了!如何整改?

我是卢松松&#xff0c;点点上面的头像&#xff0c;欢迎关注我哦&#xff01; 先说结论&#xff1a;接受现实&#xff0c;不要幻想百度恢复了! 百度自9月初大批量删除百度资源平台权限以来&#xff0c;几乎90%(未经证实**&#xff0c;但数量确实不小)的网站都被取消了权限&am…

YOLO目标检测——火焰检测数据集+已标注xml和txt格式标签下载分享

实际项目应用&#xff1a;火灾预警系统、智能监控系统、工业安全管理、森林火灾监测以及城市规划和消防设计等应用场景中具有广泛的应用潜力&#xff0c;可以提高火灾检测的准确性和效率&#xff0c;保障人员和财产的安全。数据集说明&#xff1a;YOLO火焰目标检测数据集&#…

GuLi商城-前端基础Vue-整合ElementUI快速开发

npm安装 启动项目&#xff1a;npm run dev http://localhost:8082/#/hello

02-Tomcat打破双亲委派机制

Tomcat 如果使用默认的双亲委派类加载机制行不行&#xff1f; 我们思考一下&#xff1a;Tomcat是个web容器&#xff0c; 那么它要解决什么问题&#xff1a; 一个web容器可能需要部署两个应用程序&#xff0c;不同的应用程序可能会依赖同一个第三方类库的不同版本&#xff0c;…

问道管理:华为产业链股再度拉升,捷荣技术6连板,华力创通3日大涨近70%

华为产业链股6日盘中再度拉升&#xff0c;到发稿&#xff0c;捷荣技能涨停斩获6连板&#xff0c;华映科技亦涨停收成3连板&#xff0c;华力创通大涨超19%&#xff0c;蓝箭电子涨约11%&#xff0c;力源信息涨超4%。 捷荣技能盘中再度涨停&#xff0c;近7日已累计大涨超90%。公司…

Pycharm通用设置个性化设置

Pycharm通用设置&个性化设置 通用设置取消打开Pycharm自动进入项目开启【Ctrl鼠标滑轮】放大缩小字体 个性化设置设置彩虹括号 通用设置 取消打开Pycharm自动进入项目 选择选择菜单【File】>【Settings】进入设置页面选择【Appearance & Behavior】>【System S…

c++中的对齐问题

c中的对齐问题 需要对齐的原因 尽管内存是以字节为单位&#xff0c;但是大部分处理器并不是按字节块来存取内存的.它一般会以双字节,四字节,8字节,16字节甚至32字节为单位来存取内存&#xff0c;我们将上述这些存取单位称为内存存取粒度. 现在考虑4字节存取粒度的处理器取in…

搜索二维矩阵 II

题目链接 搜索二维矩阵 II 题目描述 注意点 矩阵具有以下特性&#xff1a; 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 解答思路 最初想到使用深度优先遍历剪枝实现&#xff0c;但是运行后超出时间限制了可以直接遍历整个矩阵查找&#xff0c;虽然不超时…

使用Java分析器优化代码性能,解决OOM问题

有的时候博客内容会有变动&#xff0c;首发博客是最新的&#xff0c;其他博客地址可能会未同步,认准https://blog.zysicyj.top 首发博客地址 背景 最近我一直在做性能优化&#xff0c;对一个单机应用做性能优化。主要是涉及到解析和导入导出相关的业务。 大致说一下这个单机应用…

关系型数据库和非关系型数据库

关系型数据库是以关系&#xff08;表格&#xff09;为基础的数据库&#xff0c;它采用了 SQL&#xff08;Structured Query Language&#xff09;作为数据操作语言&#xff0c;常见的关系型数据库包括 MySQL、Oracle、SQL Server 等。 非关系型数据库则是基于文档、键值、列族…

深度优先搜索(dfs)--矩阵部分-leetcode以及常见题

介绍 深度优先搜索&#xff08;Depth-First Search&#xff0c;DFS&#xff09;是一种常用的图搜索算法&#xff0c;它用于查找图或树数据结构中的路径或解决问题。下面是深度优先搜索的常见步骤以及一个示例问题&#xff1a; 深度优先搜索的常见步骤&#xff1a; 选择起始节…

如何手动读取 GLTF/GLB 文件

推荐&#xff1a;使用NSDT场景编辑器快速搭建3D应用场景 文件类型 GLTF文件有两种不同的主要文件类型&#xff1a;.gltf和.glb。 GLTF文件本质上只是一个重新命名的json文件&#xff0c;它们通常与包含顶点数据等内容的.bin文件相提并论&#xff0c;但这些内容也可以直接包含…

分布式实时仿真系统-反射内存的应用

为了使分布式实时仿真系统(一个典型代表就行飞行模拟器)达到逼真的仿真效果&#xff0c;在系统内部&#xff0c;往往不仅需要对各种数据模型进行实时解算&#xff0c;而且需要一个延迟时间极低的确定性网络在系统之间传递数据&#xff0c;这样才能让各个子系统之间协调一致地工…

问道管理:分时高抛低吸策略?

分时高抛低吸是股市中的一种买卖战略&#xff0c;也是投资者经常运用的一种方法。这种战略经过剖析图表、股价和时刻&#xff0c;尽可能减少危险&#xff0c;添加收益。下面从多个视点对十二种分时高抛低吸进行剖析。 视点一&#xff1a;什么是分时高抛低吸&#xff1f; 分时高…

报错:为什么数组明明有内容但打印的length是0

文章目录 一、问题二、分析三、解决1.将异步改为同步2.设置延迟 一、问题 在日常开发中&#xff0c;for 循环遍历调用接口&#xff0c;并将接口返回的值进行拼接&#xff0c;即push到一个新的数组中&#xff0c;但是在for循环内部是可以拿到这个新的数组&#xff0c;而for循环…

人工智能的优势:使用 GPT 和扩散模型生成图像

推荐&#xff1a;使用 NSDT场景编辑器快速搭建3D应用场景 世界被人工智能 &#xff08;AI&#xff09; 所吸引&#xff0c;尤其是自然语言处理 &#xff08;NLP&#xff09; 和生成 AI 的最新进展&#xff0c;这是有充分理由的。这些突破性技术有可能提高各种任务的日常生产力。…