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

MATLAB绘图:动态波浪图

在这里插入图片描述

本文所述的代码演示如何在MATLAB中绘制和动态更新两个正弦波,通过循环更新y数据,形成动态波浪图。这种可视化在信号处理和物理模拟等领域非常有用。

文章目录

  • 运行结果
  • 代码
  • 代码解析
    • 代码讲解
  • 总结

运行结果

在这里插入图片描述

代码

clc; clear; close all;

t = 0:0.01:10; % 时间向量
y1 = sin(t); % 第一个波
y2 = sin(t + pi/4); % 第二个波

figure;
hold on;
h1 = plot(t, y1, 'r', 'LineWidth', 2);
h2 = plot(t, y2, 'b', 'LineWidth', 2);
hold off;

title('动态波浪图');
xlabel('时间');
ylabel('振幅');
legend('波 1', '波 2');
grid on;

% 动态更新
for k = 1:100
    y1 = sin(t + k * 0.1); % 更新波形
    set(h1, 'YData', y1);
    pause(0.1);
end

代码解析

下面是对这段MATLAB代码的逐步讲解,解释其功能和执行过程:

代码讲解

clc; clear; close all;
  • clc:清除命令窗口的内容。
  • clear:清除工作空间中的所有变量。
  • close all:关闭所有打开的图形窗口,以确保图形的清晰展示。
t = 0:0.01:10; % 时间向量
  • 这行代码创建一个时间向量 t,从0到10,以0.01为步长。这意味着 t 包含从0到10的所有时间点,总共有1001个点。
y1 = sin(t); % 第一个波
y2 = sin(t + pi/4); % 第二个波
  • y1 = sin(t):计算时间向量 t 上的正弦波,存储在 y1 中。
  • y2 = sin(t + pi/4):计算一个相位为 ( \frac{\pi}{4} ) 的正弦波,存储在 y2 中。这代表了一个与 y1 相位偏移的波。
figure;
hold on;
  • figure:创建一个新的图形窗口。
  • hold on:使得后续绘制的图形可以在同一窗口中叠加,而不覆盖之前的图形。
h1 = plot(t, y1, 'r', 'LineWidth', 2);
h2 = plot(t, y2, 'b', 'LineWidth', 2);
hold off;
  • plot(t, y1, 'r', 'LineWidth', 2):绘制 y1(红色波形),并设置线宽为2。
  • plot(t, y2, 'b', 'LineWidth', 2):绘制 y2(蓝色波形),同样设置线宽为2。
  • hold off:停止在同一图形窗口中叠加图形。
title('动态波浪图');
xlabel('时间');
ylabel('振幅');
legend('波 1', '波 2');
grid on;
  • title:设置图形的标题为“动态波浪图”。
  • xlabel:设置x轴标签为“时间”。
  • ylabel:设置y轴标签为“振幅”。
  • legend:添加图例,标识两条波形。
  • grid on:显示网格线,以便于观察波形的变化。
% 动态更新
for k = 1:100
    y1 = sin(t + k * 0.1); % 更新波形
    set(h1, 'YData', y1);
    pause(0.1);
end
  • for k = 1:100:循环100次,以实现动态更新的效果。
  • y1 = sin(t + k * 0.1):在每次循环中更新 y1 的值,使其随时间变化,形成动态效果。
  • set(h1, 'YData', y1):更新图形中已绘制的波形数据,具体来说,将 h1(红色波形)的y数据更新为新的 y1 值。
  • pause(0.1):在每次更新后暂停0.1秒,以控制波形更新的速度,使动态效果更加平滑。

总结

这段代码展示了如何在MATLAB中绘制和动态更新两个正弦波的图形。通过循环和更新y数据,用户可以观察到波形的变化,形成动态波浪图的效果。这种可视化方式在信号处理、物理模拟等领域非常有用。

如需帮助,或有导航、定位滤波相关的代码定制需求,请点击下方卡片联系作者


http://www.kler.cn/a/523751.html

相关文章:

  • vue3中customRef的用法以及使用场景
  • 步进电机加减速公式推导
  • 万物皆有联系:驼鸟和布什
  • 大屏 UI 设计风格的未来趋势
  • C++二叉树进阶
  • “AI视频智能分析系统:让每一帧视频都充满智慧
  • lwIP——4 网络接口
  • [MySQL]事务的隔离级别原理与底层实现
  • 2.策略模式(Strategy)
  • 如何使用Git进行版本控制?
  • 单细胞分析基础-第一节 数据质控、降维聚类
  • NLP自然语言处理通识
  • 前端25.1.26学习记录
  • IDM-VTON本地部署教程:双重编码 + 文字提示,解锁真实野外试穿
  • 【Elasticsearch】 索引模板 ignore_missing_component_templates
  • 【自学嵌入式(6)天气时钟:软硬件准备、串口模块开发】
  • 一文大白话讲清楚webpack进阶——5——dev-server原理及其作用
  • 【信息系统项目管理师-选择真题】2010上半年综合知识答案和详解
  • java求职学习day15
  • dokploy 如何部署 nuxt 项目?(进来少踩坑)
  • 【uniapp】uniapp使用java线程池
  • 1.1 画质算法的主要任务
  • AI软件栈:LLVM分析(二)
  • TL494方案开关电源方案
  • 更新文章分类
  • 在sortablejs的拖拽排序情况下阻止input拖拽事件