MATLAB绘图:动态波浪图

发布于:2025-02-10 ⋅ 阅读:(37) ⋅ 点赞:(0)

在这里插入图片描述

本文所述的代码演示如何在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数据,用户可以观察到波形的变化,形成动态波浪图的效果。这种可视化方式在信号处理、物理模拟等领域非常有用。

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