MATLAB - 绘制正弦波
MATLAB - 正弦波可视化
Section titled “MATLAB - 正弦波可视化”可视化是数据分析和工程中至关重要的一部分。MATLAB 擅长创建清晰、可定制的图表。正弦波是一种基本的周期信号,学习如何绘制它将展示 MATLAB 核心的几种可视化技术。
我们将探索现代、推荐的绘图函数。请注意,所有绘图函数都将在新的“Figure”(图形)窗口中生成视觉输出。
方法一:plot() 函数(适用于数据)
Section titled “方法一:plot() 函数(适用于数据)”plot(X, Y) 函数是 MATLAB 中 2D 绘图的主力。当您有一组想要可视化的数据点(X 和 Y 坐标),并且通常希望它们由线条连接时,就会使用此函数。
示例一:绘制简单正弦波
Section titled “示例一:绘制简单正弦波”要绘制 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π 处结束。图表将包含标题、轴标签、网格和图例。
示例二:自定义图表
Section titled “示例二:自定义图表”您可以通过向 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() 函数是直接绘制数学函数而无需预先计算数据点的现代推荐方法。它会自适应地选择步长以创建平滑的图表。
示例:绘制 60 赫兹正弦波
Section titled “示例:绘制 60 赫兹正弦波”% 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() 函数的说明
Section titled “关于旧版 ezplot() 函数的说明”您可能会在旧代码或教程中看到使用 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 的圆形。这可视化了正弦值(半径)如何随角度变化。