Skip to content

MATLAB - 绘制正弦波

可视化是数据分析和工程中至关重要的一部分。MATLAB 擅长创建清晰、可定制的图表。正弦波是一种基本的周期信号,学习如何绘制它将展示 MATLAB 核心的几种可视化技术。

我们将探索现代、推荐的绘图函数。请注意,所有绘图函数都将在新的“Figure”(图形)窗口中生成视觉输出。

方法一:plot() 函数(适用于数据)

Section titled “方法一:plot() 函数(适用于数据)”

plot(X, Y) 函数是 MATLAB 中 2D 绘图的主力。当您有一组想要可视化的数据点(X 和 Y 坐标),并且通常希望它们由线条连接时,就会使用此函数。

要绘制 y = sin(x),我们首先需要生成一组 x 和 y 数据点。

% 1. 创建一个时间向量 't',从 0 到 2*pi,小步长递增
% 更小的步长(例如 0.01)会创建更平滑的曲线。
t = 0:0.01:2*pi;
% 2. 计算 t 中每个值的正弦值
y = sin(t);
% 3. 创建图表
figure; % 创建一个新的图形窗口,良好实践
plot(t, y);
% 4. 为清晰起见给图表添加注释 - 这很关键!
grid on; % 添加网格
title('Simple Sine Wave: y = sin(t)');
xlabel('Time (t)');
ylabel('Amplitude');
legend('sin(t)');

预期输出: 此代码将打开一个图形窗口,显示一个平滑的正弦波,完成一个完整的周期。它从 (0,0) 开始,在 1 处达到峰值,在 π 处穿过 x 轴,在 -1 处达到谷值,并在 2π 处结束。图表将包含标题、轴标签、网格和图例。

您可以通过向 plot 函数添加更多参数来轻松自定义图表的外观。

t = 0:0.1:2*pi;
y1 = sin(t);
y2 = cos(t);
figure;
% 绘制 sin(t) 为带圆形标记的红色虚线
plot(t, y1, '--ro');
hold on; % 保持当前图表以添加另一条线
% 绘制 cos(t) 为带星形标记的蓝色实线
plot(t, y2, '-b*');
hold off; % 释放保持
grid on;
title('Sine and Cosine Waves');
xlabel('Time (t)');
ylabel('Amplitude');
legend('sin(t)', 'cos(t)');

预期输出: 一个图形,包含两条曲线:一条是带有圆形数据点的红色虚线正弦波,另一条是带有星形数据点的蓝色实线余弦波。图例正确标识了每条线。

方法二:fplot() 函数(适用于函数)

Section titled “方法二:fplot() 函数(适用于函数)”

fplot() 函数是直接绘制数学函数而无需预先计算数据点的现代推荐方法。它会自适应地选择步长以创建平滑的图表。

% 1. 使用函数句柄 (@) 定义函数
% 这将创建一个函数 f(x) = sin(2*pi*60*x)
f = @(x) sin(2*pi*60*x);
% 2. 在特定区间(例如,两个周期)上绘制函数
figure;
fplot(f, [0, 2/60]); % 区间为 [xmin, xmax]
% 3. 给图表添加注释
grid on;
title('60 Hz Sine Wave using fplot');
xlabel('Time (s)');
ylabel('Amplitude');

预期输出: 一个图形,显示一个平滑的正弦波,在 0 到 2/60 秒的时间间隔内精确完成两个周期。

您可能会在旧代码或教程中看到使用 ezplot()。ezplot() 不推荐用于新代码。 fplot() 函数是其现代替代品,提供卓越的控制、性能和灵活性。

  • 旧版: ezplot('sin(x)', [0, 2*pi])
  • 现代: fplot(@(x) sin(x), [0, 2*pi])

方法三:stem() 函数(适用于离散数据)

Section titled “方法三:stem() 函数(适用于离散数据)”

stem() 函数创建一个“杆图”(stem plot),非常适合可视化表示离散样本而非连续信号的数据。

% 1. 创建一个具有较大步长以表示采样的时域向量
t = 0:0.2:2*pi;
y = sin(t);
% 2. 创建一个杆图
figure;
stem(t, y, 'filled'); % 'filled' 使标记实心
% 3. 添加注释
grid on;
title('Discrete Samples of a Sine Wave');
xlabel('Sample time (t)');
ylabel('Sample Value');

预期输出: 一个图表,其中每个数据点由一个圆形标记表示,并有一条垂直线(“杆”)将其连接到水平轴。这强调了数据的离散性质。

方法四:polarplot() 函数(适用于极坐标)

Section titled “方法四:polarplot() 函数(适用于极坐标)”

对于自然地由角度和半径表示的数据,polarplot() 是首选工具。

% 1. 定义角度向量 (theta)
theta = 0:0.01:2*pi;
% 2. 将半径定义为角度的函数
% 对于一个简单的正弦波,这将创建一个偏离原点的圆形
rho = sin(theta);
% 3. 创建极坐标图
figure;
polarplot(theta, rho);
% 4. 添加注释
title('Sine function in Polar Coordinates');

预期输出: 一个极坐标图(圆形网格),显示一个以 (0, 0.5) 为中心、半径为 0.5 的圆形。这可视化了正弦值(半径)如何随角度变化。