目录
实验报告









代码
Matlab
%% 第2次MATLAB绘图作业 完整代码
clear; clc; close all; % 清空工作区、命令行,关闭所有图形
%% 作业1:fplot绘制符号函数曲线
fprintf('正在运行作业1...\n');
syms x % 定义符号变量
f1 = sin(x) + cos(x); % 定义函数
figure; % 新建图形窗口
fplot(f1, [0, 2*pi], 'b-', 'LineWidth', 1.5); % 区间[0,2π]绘制
grid on; % 显示网格
title('作业1:fplot绘制曲线 y=sin(x)+cos(x)');
%% 作业2:plot绘制二维曲线
fprintf('正在运行作业2...\n');
x = 0:0.1:2*pi; % 生成自变量,步长0.1
y2 = x.^2 .* exp(-x); % 定义函数
figure;
plot(x, y2, 'r--', 'LineWidth', 1.5);
grid on;
title('作业2:plot绘制曲线 y=x^2e^{-x}');
%% 作业3:plot3绘制三维曲线
fprintf('正在运行作业3...\n');
t = 0:0.1:4*pi; % 参数区间
x3 = sin(t);
y3 = cos(t);
z3 = t; % 三维曲线参数方程
figure;
plot3(x3, y3, z3, 'g-', 'LineWidth', 2);
grid on; box on;
xlabel('x'); ylabel('y'); zlabel('z');
title('作业3:plot3绘制三维螺旋线');
%% 作业4:双曲线绘制+完整标注
fprintf('正在运行作业4...\n');
x4 = 0:0.1:2*pi;
y4_1 = sin(x4); % 曲线1
y4_2 = cos(x4); % 曲线2
figure;
plot(x4, y4_1, 'b-', x4, y4_2, 'r-.', 'LineWidth', 1.5);
% 标注设置
xlabel('x轴');
ylabel('y轴');
title('x from 0 to 2π');
text(pi/2, 1.1, '曲线y=sin(x)'); % 曲线1文本
text(pi, -0.9, '曲线y=cos(x)'); % 曲线2文本
legend('y=sin(x)', 'y=cos(x)', 'Location', 'best'); % 图例
grid on;
xlim([0, 2*pi]);
%% 作业5:1×2子图 mesh和surf绘制三维曲面
fprintf('正在运行作业5...\n');
[X, Y] = meshgrid(-2:0.2:2, -2:0.2:2); % 生成二维网格
Z = X.^2 + Y.^2; % 定义曲面函数
figure;
% 子图1:mesh网格曲面
subplot(1,2,1);
mesh(X, Y, Z);
xlabel('X'); ylabel('Y'); zlabel('Z');
title('mesh绘制三维曲面 z=x^2+y^2');
grid on;
% 子图2:surf填充曲面
subplot(1,2,2);
surf(X, Y, Z);
xlabel('X'); ylabel('Y'); zlabel('Z');
title('surf绘制三维曲面 z=x^2+y^2');
grid on; colormap jet; % 设置配色
%% 作业6:习题2.6 第3、4、6题
fprintf('正在运行作业6...\n');
figure;
% 第3题
subplot(1,3,1);
f3 = @(x) x.*sin(x).^2; % 匿名函数
fplot(f3, [0, pi]);
title('习题2.6-3'); grid on;
% 第4题
subplot(1,3,2);
x6 = -1:0.1:1;
f4 = 2*(-x6.^2) + 1;
plot(x6, f4);
title('习题2.6-4'); grid on;
% 第6题
subplot(1,3,3);
f6 = @(x) (x+1)./(x.^2+1);
fplot(f6, [-3, 3]);
title('习题2.6-6'); grid on;
%% 作业7:复现例22 等值线图(10层级、虚线、带标签)
fprintf('正在运行作业7...\n');
[X7, Y7] = meshgrid(-2:0.1:2, -2:0.1:2);
Z7 = X7 .* exp(-X7.^2 - Y7.^2);
figure;
contour(X7, Y7, Z7, 10, '--', 'ShowText', 'on'); % 10层、虚线、显示标签
xlabel('X'); ylabel('Y');
title('作业7:等值线图(10层级、虚线、带标签)');
colorbar; % 显示颜色条
grid on;
fprintf('所有作业运行完成!\n');
实验心得
本次 MATLAB 绘图实验围绕二维曲线、三维曲面、等值线绘制及图形标注、子图布局等核心功能展开,通过完成 fplot、plot、plot3、mesh、surf、contour 等函数的实操练习,系统掌握了 MATLAB 可视化编程的基础方法,深刻体会到数值计算与图形可视化结合的实用性与便捷性。
实验初期,我重点区分了不同绘图函数的适用场景:fplot 适用于符号函数的直接绘制,无需手动生成数据点,简化了函数曲线的绘制流程;plot 是最基础的二维数值绘图函数,需先生成自变量向量,再计算因变量数据,适合离散数据点的连续曲线展示;plot3 则拓展至三维空间曲线绘制,通过 x、y、z 三个维度的向量构建空间轨迹,让三维曲线的可视化更直观。在练习过程中,我发现自变量区间的设置、数据点密度的选择会直接影响曲线的平滑度,合理设置步长是保证图形质量的关键。
图形标注与美化是实验的重要环节。为曲线添加坐标轴标签、标题、文本说明和图例,不仅能让图形更规范,还能清晰传达图形的含义。通过 xlabel、ylabel、title、text、legend 等函数的使用,我掌握了 MATLAB 图形标注的基本规范,理解了可视化的核心是让观者快速理解数据与函数的关系。同时,文本位置的微调、图例的合理布局,让图形的可读性大幅提升,也让我认识到细节处理在数据可视化中的重要性。
子图布局与三维曲面绘制部分,我学习了 subplot 函数的使用方法,将一个图形窗口划分为多个子图,实现多图形对比展示。mesh 函数绘制的网格曲面清晰展现了曲面的空间骨架,surf 函数绘制的填充曲面则更直观地呈现曲面的形态与色彩变化,二者结合能从不同角度分析三维函数的特征。在操作中,我掌握了网格数据生成的方法,理解了二维网格矩阵在三维绘图中的核心作用,解决了三维曲面绘制中数据维度匹配的问题。
等值线图绘制实验中,通过复现教材案例,我学会了设置等值线层级、线型、标签等参数,contour 函数的自定义设置让等值线图更符合实验要求。虚线显示、数值标签的添加,让等值线的分布和对应数值一目了然,加深了我对二维函数等值线分布规律的理解,也掌握了高级可视化图形的参数调整技巧。
通过本次实验,我不仅熟练掌握了 MATLAB 基础绘图函数的语法与用法,更培养了编程逻辑和问题解决能力。在调试代码的过程中,我学会了排查函数参数错误、数据维度不匹配等常见问题,提升了代码编写的严谨性。同时,我深刻认识到 MATLAB 作为科学计算软件,其强大的可视化功能能够将抽象的数学函数转化为直观的图形,为数学分析、工程计算提供了有力工具。
此次实验也让我意识到,可视化编程不仅是代码的编写,更要注重图形的规范性、可读性和美观性。未来在学习和应用中,我会进一步深入学习 MATLAB 高级绘图功能,将可视化技术与专业知识结合,更高效地处理和分析数据,提升解决实际问题的能力。