Skip to content

MATLAB - 绘制表达式或函数

MATLAB 提供了一套强大而灵活的工具用于可视化数学函数。现代方法倾向于对符号表达式和函数句柄使用 fplot,因为它会自动确定采样点,从而生成平滑且准确的图。这通常优于手动创建数据向量的旧方法。

fplot 函数旨在在指定限制内绘制函数。提供函数最常见的方式是使用函数句柄(function handle),它是一个以 @ 开头的匿名函数。

fplot(f)
fplot(f, [xmin xmax])
fplot(___, LineSpec)
h = fplot(___)

让我们在默认区间 [-5, 5] 上绘制函数 y = sin(x) / x。

% 使用函数句柄定义函数
f = @(x) sin(x) ./ x; % 注意逐元素运算符 ./
figure; % 创建一个新的图形窗口
fplot(f);
% 添加标签和标题以创建出版质量的图
title('Plot of y = sin(x)/x');
xlabel('x');
ylabel('y');
grid on;

预期输出描述:此代码在一个新的图形窗口中生成一个 2D 图。x 轴范围从 -5 到 5。y 轴显示 sin(x)/x 的对应值,该值振荡并衰减,从 x=0 处的值 1 开始。该图具有标题、x 轴和 y 轴标签以及网格。

让我们在区间 [-3, 3] 上绘制 y = x^3 - 2x - 5,使用红色虚线和圆形标记。

% 定义多项式函数
f = @(x) x.^3 - 2*x - 5;
% 定义绘图区间
xinterval = [-3, 3];
% 使用指定的区间和 LineSpec 绘制图('--or' 表示带圆圈标记的橙红色虚线)
figure;
fplot(f, xinterval, '--or');
title('Plot of a Cubic Polynomial');
xlabel('x-axis');
ylabel('y-axis');
legend('y = x^3 - 2x - 5', 'Location', 'northwest');
grid on;

预期输出描述:该图显示一条立方 ‘S’ 形曲线。线条为虚线、橙红色,并在不同点处带有圆形标记。x 轴限制在 [-3, 3] 范围内。图例出现在左上角,标识曲线。

您可以通过为每个坐标提供函数句柄来绘制 2D (fplot) 和 3D (fplot3) 参数曲线。

% 定义 x 和 y 的参数函数
funx = @(t) cos(t);
funy = @(t) sin(t);
% 为参数 't' 指定区间以绘制完整的圆
tinterval = [0, 2*pi];
figure;
fplot(funx, funy, tinterval);
title('Parametric Plot of a Circle');
xlabel('x = cos(t)');
ylabel('y = sin(t)');
axis equal; % 确保圆形不会扭曲成椭圆形
grid on;

预期输出描述:一个半径为 1、以原点为中心的完美圆形。axis equal 命令确保两个轴上的比例相同,防止出现倾斜的外观。

fplot3 的工作方式类似,但需要 x(t)、y(t) 和 z(t) 的三个函数句柄。

让我们绘制一条螺旋线并通过处理返回的绘图对象来自定义其外观。

% 定义螺旋线的参数函数
xt = @(t) cos(t); % x 坐标
yt = @(t) sin(t); % y 坐标
zt = @(t) t; % z 坐标
% 为参数 't' 指定区间
tinterval = [0, 10*pi];
figure;
% 创建时获取绘图句柄 'h'
h = fplot3(xt, yt, zt, tinterval);
% --- 使用句柄 'h' 自定义绘图 ---
h.LineWidth = 2.5;
h.Color = 'm'; % 洋红色
title('3D Plot of a Helix');
xlabel('X');
ylabel('Y');
zlabel('Z');
grid on;
view(30, 25); % 设置一个合适的三维视角

预期输出描述:一个 3D 图,显示一条洋红色螺旋线(helix),线宽为 2.5 磅。螺旋线围绕 z 轴缠绕,从 z=0 延伸到 z=10*pi。视角倾斜以清晰显示其 3D 结构。

  • 始终添加标签:没有标题和轴标签的图是模糊的。使用 title()、xlabel()、ylabel() 和 legend() 来使您的图信息丰富。
  • 函数句柄:使用函数句柄(@)来绘制数学表达式。它们高效且清晰。
  • 逐元素操作:定义函数时,使用逐元素运算符(.*、./、.^)以确保您的函数能够正确处理向量输入,fplot 内部会使用这些输入。
  • 可访问性:对于黑白出版物,不要仅仅依赖颜色。使用不同的线条样式(--、:、-.)和标记(o、x、+)来区分不同的数据系列。
  • 保存图:使用 exportgraphics(gca, 'myplot.png', 'Resolution', 300) 生成高质量、高分辨率的图像文件。