第三章:Matlab 绘图功能

news/2025/2/13 14:08:19/

第三章:Matlab 绘图功能

3.1 二维绘图

3.1.1 基本绘图函数
  • plot: 绘制二维曲线图。
  • stem: 绘制离散数据图。

代码示例:

matlab">% 使用 plot 绘制正弦曲线
x = 0:0.1:2*pi;
y = sin(x);
plot(x, y);
title('正弦曲线');
xlabel('x');
ylabel('sin(x)');% 使用 stem 绘制离散数据
x = 1:10;
y = rand(1, 10);
stem(x, y);
title('离散数据图');
xlabel('x');
ylabel('y');

在这里插入图片描述
在这里插入图片描述

3.1.2 图形属性设置
  • 线条颜色: 使用 'Color' 属性,例如 'r' (红色), 'g' (绿色), 'b' (蓝色) 等。
  • 线型: 使用 'LineStyle' 属性,例如 '-' (实线), '--' (虚线), ':' (点线) 等。
  • 标记符号: 使用 'Marker' 属性,例如 'o' (圆圈), '*' (星号), '+' (加号) 等。

代码示例:

matlab">x = 0:0.1:2*pi;
y1 = sin(x);
y2 = cos(x);% 设置线条颜色、线型和标记符号
plot(x, y1, 'r--o', 'LineWidth', 2);  % 红色虚线,圆圈标记
hold on;  % 保持当前图形
plot(x, y2, 'b:', 'LineWidth', 2);    % 蓝色点线
legend('sin(x)', 'cos(x)');
title('正弦和余弦曲线');
xlabel('x');
ylabel('y');

在这里插入图片描述

3.1.3 多图绘制
  • subplot: 将图形窗口划分为多个子图,并在每个子图中绘制图形。

代码示例:

matlab">x = 0:0.1:2*pi;
y1 = sin(x);
y2 = cos(x);
y3 = tan(x);% 创建 2x2 的子图布局
subplot(2, 2, 1);  % 第一行第一列
plot(x, y1);
title('sin(x)');subplot(2, 2, 2);  % 第一行第二列
plot(x, y2);
title('cos(x)');subplot(2, 2, 3);  % 第二行第一列
plot(x, y3);
title('tan(x)');

在这里插入图片描述

3.1.4 图形标注
  • title: 添加图形标题。
  • xlabel: 添加 x 轴标签。
  • ylabel: 添加 y 轴标签。
  • legend: 添加图例。

代码示例:

matlab">x = 0:0.1:2*pi;
y1 = sin(x);
y2 = cos(x);plot(x, y1, 'r', 'LineWidth', 2);
hold on;
plot(x, y2, 'b', 'LineWidth', 2);
title('正弦和余弦曲线');
xlabel('x');
ylabel('y');
legend('sin(x)', 'cos(x)');

在这里插入图片描述

3.2 三维绘图

3.2.1 三维曲线绘制
  • plot3: 绘制三维曲线。

代码示例:

matlab">t = 0:0.1:10*pi;
x = sin(t);
y = cos(t);
z = t;plot3(x, y, z);
title('三维螺旋线');
xlabel('x');
ylabel('y');
zlabel('z');
grid on;

在这里插入图片描述

3.2.2 三维曲面绘制
  • surf: 绘制三维曲面图。
  • mesh: 绘制三维网格图。

代码示例:

matlab">[x, y] = meshgrid(-2:0.1:2);
z = x.^2 + y.^2;% 绘制三维曲面图
figure;
surf(x, y, z);
title('三维曲面图');
xlabel('x');
ylabel('y');
zlabel('z');% 绘制三维网格图
figure;
mesh(x, y, z);
title('三维网格图');
xlabel('x');
ylabel('y');
zlabel('z');

在这里插入图片描述

3.2.3 视角调整与图形旋转
  • view: 设置视角。
  • rotate3d: 启用图形旋转功能。

代码示例:

matlab">[x, y] = meshgrid(-2:0.1:2);
z = x.^2 + y.^2;surf(x, y, z);
title('三维曲面图');
xlabel('x');
ylabel('y');
zlabel('z');% 设置视角
view(30, 45);  % 方位角 30 度,俯仰角 45 度% 启用图形旋转
rotate3d on;

在这里插入图片描述

3.3 图形保存与导出

3.3.1 保存图形为不同格式
  • saveas: 将图形保存为指定格式的文件,例如 png, jpg, pdf 等。

代码示例:

matlab">x = 0:0.1:2*pi;
y = sin(x);
plot(x, y);
title('正弦曲线');
xlabel('x');
ylabel('sin(x)');% 保存为 png 格式
saveas(gcf, 'sine_wave.png');% 保存为 jpg 格式
saveas(gcf, 'sine_wave.jpg');% 保存为 pdf 格式
saveas(gcf, 'sine_wave.pdf');

在这里插入图片描述

3.3.2 设置图形分辨率与尺寸
  • print: 设置图形分辨率和尺寸,并保存图形。

代码示例:

matlab">x = 0:0.1:2*pi;
y = sin(x);
plot(x, y);
title('正弦曲线');
xlabel('x');
ylabel('sin(x)');% 设置分辨率为 300 dpi,尺寸为 8x6 英寸
print('-dpng', '-r300', '-s800,600', 'sine_wave_high_res.png');

总结:

本章介绍了 MATLAB 的绘图功能,包括二维绘图、三维绘图以及图形保存与导出。通过代码示例,您可以学习如何使用不同的函数绘制各种图形,并设置图形的属性和标注。在接下来的章节中,我们将学习 MATLAB 的其他功能,例如文件操作、符号计算、图像处理等。

持续更新中!如果对您有帮助请点个赞!


http://www.ppmy.cn/news/1571723.html

相关文章

华为防火墙pppoe拨号接入互联网配置案例

目录 1.pppoe拨号背景2.网络拓扑3.网络需求4.网络配置4.1 网络基础配置4.2 pppoe配置4.2.1 pppoe服务端配置(现网环境可忽略)4.2.2 pppoe客户端配置4.2.3 结果验证 5.小结 1.pppoe拨号背景 PPPoE(Point-to-Point Protocol Over Ethernet)拨号产生的背景…

智慧出行与车路云一体化政策研究报告

智慧出行政策的发展趋势可以大致划分为三个阶段,与行业发展历程紧密相连。当前,智慧出行政策正逐步进入第三阶段,即技术融合与广泛应用阶段。这一阶段的政策发展趋势将更加注重智慧出行的全面融合和创新应用。比如智能网联技术在智慧出行层面…

【探寻C++之旅】第三章:类和对象(下)

请君浏览 前言1. 类的默认成员函数2. 构造函数3.析构函数4. 拷贝构造函数5. 赋值重载函数5.1 运算符重载5.2 赋值运算符重载 6. 取地址运算符重载7. 类型转换8. static成员9. 友元10. 内部类11. 匿名对象尾声 前言 今天,我们继续踏入追寻C的冒险历程。上一章我们简单…

深度求索(DeepSeek)的AI革命:NLP、CV与智能应用的技术跃迁

Deepseek官网:DeepSeek 引言:AI技术浪潮中的深度求索 近年来,人工智能技术以指数级速度重塑全球产业格局。在这场技术革命中,深度求索(DeepSeek)凭借其前沿的算法研究、高效的工程化能力以及对垂直场景的…

因果机器学习(CausalML)前沿创新思路

结合了传统因果推断与机器学习的因果机器学习是目前AI领域的前沿研究方向,其核心优势在于将因果逻辑融入数据驱动模型,从根本上解决了传统方法的缺陷。因此,它也是突破传统机器学习瓶颈的关键方向,不仅当下热度高,在未…

react项目引入tailwindcss不生效解决方案

根据tailwindcss官网的操作步骤下来,样式未生效,且未报错,看了挺多的资料,还是并未解决。 后面在另一个项目尝试时,报了下面的问题: Error: PostCSS plugin tailwindcss requires PostCSS 8 根据这个链接…

游戏引擎学习第94天

仓库:https://gitee.com/mrxiao_com/2d_game_2 回顾上周的渲染器工作 完成一款游戏的开发,完全不依赖任何库和引擎,这样我们能够全面掌握游戏的开发过程,确保没有任何细节被隐藏。我们将深入探索每一个环节,犹如拿着手电筒翻看床…

java8、9新特性

JAVA8 Lambda 表达式 (parameters) -> expression 或 (parameters) ->{ statements; } 提供了一种更为简洁的语法,尤其适用于函数式接口。相比于传统的匿名内部类,Lambda 表达式使得代码更为紧凑,减少了样板代码的编写。 它允许将函…