MATLAB绘制正弦波、余弦波、方波、三角波

一、引言

   MATLAB是一种具有很强的数值计算和数据可视化软件,提供了许多内置函数来简化数学运算和图形的快速生成。在MATLAB中,你可以使用多种方法来快速绘制正弦波、方波和三角波。以下是一些基本的示例,展示了如何使用MATLAB的命令来实现正弦波、方波和三角波的快速绘制,大家可以在此基础上进行改进,为学习、科研和工作提供便利。

二、绘制正弦波和余弦波

     可以通过sin函数、cos函数和plot来进行绘制,MATLAB详细编程如下。

clear all;

close all;

clc;

close all;

clc;

%%绘制正弦波

t = -2*pi:pi/100:2*pi;  %'时间序列

A=5;%定义幅值

w=2;%角频率--周期T=2pi/w,周期为pi

Phi=pi/6;  %相位

y1 = A*sin(w*t+Phi); % 计算正弦波的值  

plot(t, y1,'LineWidth',2);  %绘制宽度为2正弦波  

title('正弦波和余弦波');  

xlabel('时间');  

ylabel('幅值');  

ylim([-7,7]);  %设置 y 坐标轴取值范围

grid on;  %打开网格

hold on;  %保持图形

y2= A*cos(w*t+Phi); % 计算正弦波的值

plot(t, y2,'LineWidth',2);  %绘制余弦波

legend('sin(w*t+Phi)', 'cos(w*t+Phi)'); %在坐标区上添加图例

运行结果如下图所示:

三、绘制方波

       MATLAB 可以使用square函数产生周期性矩形脉冲信号。其调用形式为 y=square(t,DUTY) ,其作用类似于sin(t),用以产生一个时长为t、幅值为±1的周期性方波信号,其中的DUTY参数表示占空比,即在信号的一个周期中正值所占的百分比。生成一个周期为5、幅值为0和2、占空比为20%的方波,可以通过以下代码实现:

t2 = -10:0.01:10;  % 时间向量

f_0 = square(2*pi*t2/5, 30)+1;  % 生成占空比为30%的方波

plot(t2, f_0, 'LineWidth', 2),title('周期为5、幅值为0和2、‌占空比为30%的方波');  % 绘制方波图形

ylim([-3,3]);

grid on;

四、绘制锯齿波和三角波

    

    Sawtooth是Matlab中产生锯齿波或三角波的函数,在matlab的命令窗口中键入doc sawtooth或者help sawtooth可以获得该函数的帮助信息。

用法:

y = sawtooth(t)

y = sawtooth(t,width)

      第一种调用方式,将产生周期为2π的锯齿波。以0~2π这个周期内为例,当t=0时,y=-1,当t=2π时,y=1。由此可见,在0~2π这个周期内,y(t)是关于t的以1/π为斜率的线段。

    第二种调用方式中,width是0到1之间的标量。在0到2π×width区间内,y的值从-1线性变化到1;在2π×width~2π区间内,y的值又从1线性变化到-1。sawtooth(t,1)和sawtooth(t)是等价的。将width设置为0.5可生成标准三角波。

      锯齿波示例—生成一个周期为2π锯齿波,在2pi的整数倍处值为-1和1,这一段波形斜率为1/π,可以通过以下代码实现:

t=-8*pi:pi/1000:8*pi;

y=sawtooth(t);

plot(t,y),title('周期为2π锯齿波,在2pi的整数倍处值为-1和1,这一段波形斜率为1/π');% 绘制锯齿波

ylim([-2,2])

grid on

上面程序运行结果如下图所示:

三角波示例—生成 8 个周期的三角波,其基频为 50 Hz,采样率为 1 kHz,可以通过以下代码实现:

T = 8*(1/50);%频率和周期互为倒数

fs = 1000;%采样频率和周期互为倒数

t = 0:1/fs:T;

y= sawtooth(2*pi*50*t,1/2);

plot(t,y),title('三角波');

xlim([0,0.2])

ylim([-2,2])

grid on

上面程序运行结果如下图所示:

   大家如果觉得本文对大家学习有帮助,请点赞、收藏和关注,感谢大家支持!

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

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

相关文章

基于dcm4chee搭建的PACS系统讲解(一)docker搭建精简版

文章目录 知识点PACSdcm4chedcm4chee部署dcm4chee方式 docker部署docker编排 总结 最近项目开始需要用到PACS系统,于是研究了一番,选用了dcm4chee搭建PACS系统,抛出 dcm-arc-light的git地址 。 知识点 PACS Picture Archiving and Communic…

【详细的springboot自动装载原理】

1.默认提供的核心配置模块 springboot提供了 spring-boot-autoconfigure模块,该模块为springboot自动配置的核心模块,它初始化好了很多我们平时需要的配置类,那么有了这些配置类就能生效了吗?得需要一个东西在启动的时候去把它加…

uniapp 小程序 嵌套 webview 返回需要点击两次

uniapp 小程序 嵌套 webview 返回需要点击两次 先 上图 小程序也监听不到 返回事件在网上找了一圈 都没有理想的答案&#xff0c;猜测 是因为嵌入的页面中有问题果然 小程序中嵌入的代码 <view><web-view :src"urlSrc" ></web-view></view>…

常用的python程序汇总——入门级

只用于记录最近的一些日常程序。 目录 前言 一、文件和目录管理 1.读取文件结构 读取所有文件夹和文件 读取到N级子文件夹和文件 只读取到N级子文件夹 2.遍历文件并处理&#xff08;复制、删除&#xff09; 说明&#xff1a; 二、数据分析和处理 三、数据可视化 四、…

关于银联支付交易状态码的一些分析

目录 关于银联支付 一些准备 交易状态码的一些分析 小结 关于银联支付 目前B2C购物支付场景下&#xff0c;支付宝和微信的在线支付已经成为我们经常遇到的支付方式。另外&#xff0c;银联支付也是我们日常的一种支付方式&#xff0c;本文所指的银联支付即指中国银联网关支…

NumPy算法封装:优化你的科学计算

NumPy算法封装&#xff1a;优化你的科学计算 作为一名资深的Python程序员&#xff0c;我深知NumPy库在科学计算中的重要性。NumPy不仅提供了强大的多维数组对象ndarray&#xff0c;而且封装了一系列高效的算法&#xff0c;极大地简化了我们的编程工作。本文将深入探讨NumPy的算…

IActionResult 介绍

IActionResult 是 ASP.NET Core MVC 中的一个接口&#xff0c;它代表了一个动作&#xff08;Action&#xff09;方法的返回类型。在 ASP.NET Core MVC 中&#xff0c;控制器&#xff08;Controller&#xff09;中的每个动作方法都可以返回一个 IActionResult 或其派生类型的实例…

jdk1.8 List集合Stream流式处理

jdk1.8 List集合Stream流式处理 一、介绍(为什么需要流Stream&#xff0c;能解决什么问题&#xff1f;)1.1 什么是 Stream&#xff1f;1.2 常见的创建Stream方法1.3 常见的中间操作1.4 常见的终端操作 二、创建流Stream2.1 Collection的.stream()方法2.2 数组创建流2.3 静态工厂…

深度学习之DeepMind的AlphaZero

AlphaZero 是 DeepMind 开发的一种人工智能程序,最初在 2017 年推出。它是一种通用的自我学习算法,能够通过自我对弈来学习并掌握各种棋类游戏,比如国际象棋、围棋和将棋。与传统的棋类 AI 不同,AlphaZero 不依赖于人工设置的规则或数据库中的棋局,而是通过自我对弈和深度…

理解进程status的二进制位表示及进程等待(是什么,为什么,怎么办)

信号编号&#xff1a;低7位 状态编号&#xff1a;次低8位 1.子进程退出后会变为僵尸进程&#xff0c;将退出结果写入自身的task_struct结构体中 2.wait/waitpid是一个系统调用->OS可以读取子进程的task_struct 1.为什么要进行进程等待&#xff1f; 1.将子进程&#xff…

C语言 | Leetcode C语言题解之第241题为运算表达式设计优先级

题目&#xff1a; 题解&#xff1a; #define ADDITION -1 #define SUBTRACTION -2 #define MULTIPLICATION -3int* diffWaysToCompute(char * expression, int* returnSize) {int len strlen(expression);int *ops (int *)malloc(sizeof(int) * len);int opsSize 0;for (in…

Mybatis-Plus只将指定字段更新为null

不需要自定义sql&#xff0c;可以使用UpdateWrapper方式更新 Employee employee new Employee(); employee.setId(1L); employee.setOssIds(null); LambdaUpdateWrapper<Employee> lambdaUpdate Wrappers.lambdaUpdate(); lambdaUpdate.eq(Employee::getId, employee.g…

单周期CPU(三)译码模块(minisys)(verilog)(vivado)

timescale 1ns / 1ps //module Idecode32 (input reset,input clock,output [31:0] read_data_1, // 输出的第一操作数output [31:0] read_data_2, // 输出的第二操作数input [31:0] Instruction, // 取指单元来的指令input [31:0] …

Gradle自定义任务:构建自动化的瑞士军刀

Gradle自定义任务&#xff1a;构建自动化的瑞士军刀 Gradle是一个灵活且功能强大的构建系统&#xff0c;它允许开发者通过编写自定义任务来扩展其功能。自定义任务可以帮助自动化复杂的构建步骤&#xff0c;执行特定的脚本&#xff0c;或者与其他系统集成。本文将详细介绍如何…

LeetCode:x的平方根(C语言)

1、问题概述&#xff1a;给你一个非负整数 x&#xff0c;计算并返回 x 的 算术平方根 &#xff0c;返回类型得是一个整数&#xff0c;小数舍弃 2、示例 示例 1&#xff1a; 输入&#xff1a;x 4 输出&#xff1a;2 示例 2&#xff1a; 输入&#xff1a;x 8 输出&#xff1a;…

git stash 命令详解

git stash 描述 git stash 命令用于将当前工作目录中的未提交更改&#xff08;包括暂存区和工作区的更改&#xff09;保存到一个栈中&#xff0c;并恢复工作目录到干净的 HEAD 状态。这样您可以在不提交当前更改的情况下&#xff0c;切换到其他分支或进行其他操作。后续可以通…

前台文本直接取数据库值doFieldSQL插入SQL

实现功能&#xff1a;根据选择的车间主任带出角色。 实现步骤&#xff1a;OA的“字段联动”功能下拉选项带不出表“hrmrolemembers”&#xff0c;所以采用此方法。 doFieldSQL("select roleid from HrmResource as a inner join hrmrolemembers as b on a.id b.resource…

快速排序【示例】

冒泡排序可以说是我们学习的第一个真正的排序算法&#xff0c;并且解决了桶排序浪费 空间的问题&#xff0c;但在算法的执行效率上却牺牲了很多&#xff0c;它的时间复杂度达到了 O(N^2)。假如我 们的计算机每秒钟可以运行 10 亿次&#xff0c;那么对 1 亿个数进行排序&#xf…

【京存】助力《抓娃娃》后期制作!

沈腾马丽合体爆改偷感夫妇&#xff0c;暑期开大贴脸开笑!!西虹市IP爆笑回归!! 困苦的爹&#xff0c;辛劳的妈&#xff0c;破烂的院子&#xff0c;破碎的他。西虹市做大做强的路上怎么把老马家落下了?!!! “汤里没油&#xff0c;兜里没子”的马成钢(沈腾 饰)和春兰(马丽 饰)&…

Timm使用教程

Timm使用教程 kaggle代码链接&#xff1a;https://www.kaggle.com/code/hallo123/timm-tutorial&#xff08;逐步调试运行&#xff09; 官方指导链接&#xff1a;https://huggingface.co/docs/timm/quickstart#quickstart timm&#xff08;Pytorch Image Models&#xff09;项目…