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

被折叠的 条评论
为什么被折叠?



