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数据,用户可以观察到波形的变化,形成动态波浪图的效果。这种可视化方式在信号处理、物理模拟等领域非常有用。
如需帮助,或有导航、定位滤波相关的代码定制需求,请点击下方卡片联系作者