【数学建模】利用Matlab绘图(2)

news2024/12/19 19:37:12

一、Matlab中plot函数的基本用法

在matlab中,函数的基本用法主要包括以下几种

第一类:

plot(X,Y,LineSpec)

第二类:

plot(tbl,xvar,yvar)

1.1 第一类

1.1.1x-y坐标

x和y的选择取决于绘图所需的数据类型以及图像的类型。下表列出了几种基本的x和y坐标类型,关于标记的详细说明,请参见 1.2 节。

绘图类型如何指定代码示例例图

将x和y指定为标量并包含一个标记

plot(1,2,'or')

将x和y指定为长度相同的向量并包含一个标记
plot([1 3 5], [2 4 6],':ob')

使用向量连续给定多组点
plot([1 2 3],[6 8 9],':+b',[3 5 6],[ 8 9 10],'--or')

x或y共享一组坐标
plot([1 2 3],[3 5 6;8 9 10],'--or')

将会为每一列绘制一条线
plot([1 2 3;6 8 9],[3 5 6;8 9 10],'--or')

1.1.2LineSpec的用法

LineSpec的使用分为三个部分:‘abc',其中a代表线条的类型,b代表点的标记,c代表线条和点的颜色。下文将分别通过三个表格给出线条类型、点标记和颜色的具体表示。如果忽略线型并仅指定标记,则绘图只会显示标记,而不显示线条。

1.1.2.1线条的类型

线条

类型

类型

描述

代码示例例图
"-"

线

plot([1 2 3],[4 5 6],'-or')

"--"

线

plot([1 2 3],[4 5 6],'--or')

":"

线

plot([1 2 3],[4 5 6],':or')

"-."

线

plot([1 2 3],[4 5 6],'-.or')

 1.1.2.2点的标记

点的

标记

标记

描述

代码

示例

例图
"o"

plot([1 2 3],[4 5 6],'--or')

"+"

plot([1 2 3],[4 5 6],'--+r')

"*"

plot([1 2 3],[4 5 6],'--*r')

"."
plot([1 2 3],[4 5 6],'--.r')

"x"

plot([1 2 3],[4 5 6],'--xr')

"_"

线

plot([1 2 3],[4 5 6],'--_r')

"|"

线

plot([1 2 3],[4 5 6],'--|r')

"square"

plot([1 2 3],[4 5 6],'--squarer')

"diamond"

plot([1 2 3],[4 5 6],'--diamondr')

"^"

plot([1 2 3],[4 5 6],'--^r')

"v"

plot([1 2 3],[4 5 6],'--vr')

">"

plot([1 2 3],[4 5 6],'-->r')

"<"

plot([1 2 3],[4 5 6],'--<r')

"pentagram"

plot([1 2 3],[4 5 6],'--pentagramr')

"hexagram"

plot([1 2 3],[4 5 6],'--hexagramr')

 1.1.2.3颜色

颜色

名称

名称

代码示例例图
"red""r"
plot([1 2 3],[4 5 6],'--or')

"green""g"
plot([1 2 3],[4 5 6],'--og')

"blue""b"
plot([1 2 3],[4 5 6],'--ob')
"cyan""c"
plot([1 2 3],[4 5 6],'--oc')
"magenta""m"
plot([1 2 3],[4 5 6],'--om')
"yellow""y"
plot([1 2 3],[4 5 6],'--oy')
"black""k"
plot([1 2 3],[4 5 6],'--ok')
"white""w"
plot([1 2 3],[4 5 6],'--ow')

1.1.3利用excel中的坐标数据绘图

1.1.3.1将excel的数据导入向量

利用matlab中的readmatrix函数读取excel表中的数据

%读取excel表格中的数据
data=redmatrix('绝对路径\文件名.xlsx')
%读取excel中的第n列
data_n=data(:,n);
1.1.3.2示例

点击“文件”以获取示例中的 Excel 数据,接着通过读取 Excel 表格中的数据并将其转换为向量,再利用plot函数将各个散点连接起来,就能得到一个图像。

下面是具体的代码:

data = readmatrix('D:\Desktop\point_data.xlsx');
x_data = data(:, 1);
y_data = data(:, 2);
plot(x_data,y_data,'--.r')

我们就可以得到如图所示的一个散点图:

 

1.2第二类

1.2.1table的用法

table(列表1,列表2,列表3,······,列表n),其中列表1,2,···,n为一个列向量,每一个列表都组成了表格中的一列。在table中我们可以通过VariableNames指定表的每一列的名称,通过RowNames可以指定表的每一行的行名称。下面给出一个示例:

a=[1;2;3];
b=[4;5;6];
c=[7;8;9];
table(a,b,c,'VariableNames',{'first' 'second' 'third'},'RowNames',{'first' 'second' 'third'})

运行这段代码我们可以在命令行窗口得到一个如图所示的表:

1.2.2利用table和plot函数绘图

仍然以上述的表为例,利用plot函数画图,代码如下所示:

a=[1;2;3];
b=[4;5;6];
c=[7;8;9];
tbl=table(a,b,c,'VariableNames',{'first' 'second' 'third'},'RowNames',{'first' 'second' 'third'});
plot(tbl,1,2)

得到的图像如图所示: 

 但我们也可以只指定y向量,这样子得到的就是一个时间表,下面给出例子:

代码:

a=[1;2;3];
b=[4;5;6];
c=[7;8;9];
tbl=table(a,b,c,'VariableNames',{'first' 'second' 'third'},'RowNames',{'first' 'second' 'third'});
plot(tbl,3)

例图:

1.3 Line属性

通过修改plot函数中的Line属性,我们可以调整图像中线条的颜色、粗细以及其他各种样式。

1.3.1线条

属性

名称

属性描述

示例

代码

例图
Color

线

颜色

名称

plot([1 2 3], [4 5 6], 'Color','r')

RGB三元组
plot([1 2 3], [4 5 6], 'Color','[0,1,0]')

16进制颜色代码
plot([1 2 3], [4 5 6], 'Color','#FFFF00')

ColorMode

控制如何设置Color

auto(默认)
plot([1 2 3], [4 5 6], 'ColorMode','auto')

manual
plot([1 2 3], [4 5 6], 'ColorMode','manual')

LineStyle线型,且必为右侧给出的五种之一'-'(实线)
plot([1 2 3], [4 5 6], 'LineStyle','-')

'--'(虚线)
plot([1 2 3], [4 5 6], 'LineStyle','--')
':'(点线)
plot([1 2 3], [4 5 6], 'LineStyle',':')
'-.'(点划线)
plot([1 2 3], [4 5 6], 'LineStyle','-.')
'none'(无)
plot([1 2 3], [4 5 6], 'LineStyle','none')
LineStyleMode控制如何设置LineStyleauto(默认)
plot([1 2 3], [4 5 6], 'LineStyleMode','auto')
manual
plot([1 2 3], [4 5 6], 'LineStyleMode','manual')
LineWidth线条宽度(正值),如果线条具有标记,那么线条宽度也会影响标记边0.5
plot([1 2 3], [4 5 6], 'LineWidth',0.5)

2.0
plot([1 2 3], [4 5 6], 'LineWidth',2.0)
SeriesIndex序列索引

LineJoin线条变焦的样式'round'
plot([1 2 3], [4 5 4], 'LineJoin','round','LineWidth',10.0)
'miter'
plot([1 2 3], [4 5 4], 'LineJoin','miter','LineWidth',10.0)
'chamfer'
plot([1 2 3], [4 5 4], 'LineJoin','chamfer','LineWidth',10.0)
AlignVertexCenters锐化垂直线和水平线on
off可能会出现颜色不平滑的现象

 1.3.2标记

属性名称属性描述示例代码例图
Marker标记符号与上文1.1.2中的符号完全相同
MarkerMode控制如何设置Markerauto
manual
MarkerIndices需要标记的点的索引在具体的点显示标记
plot([1 2 3 4 5 6 7 8 9 10], [1 4 7 9 12 15 18 21 24 27 ], Marker='o',MarkerIndices=[1 3 7 9])

每隔几个点显示一次
y=[1 4 7 9 12 15 18 21 24 27 ];
plot([1 2 3 4 5 6 7 8 9 10], y, '-o','MarkerIndices',1:2:length(y))

MarkerSize标记的大小(正值)6
y=[1 4 7 9 12 15 18 21 24 27 ];
plot([1 2 3 4 5 6 7 8 9 10], y, '-o','MarkerIndices',1:2:length(y),'MarkerSize',6)

60
y=[1 4 7 9 12 15 18 21 24 27 ];
plot([1 2 3 4 5 6 7 8 9 10], y, '-o','MarkerIndices',1:2:length(y),'MarkerSize',60)
MarkerEdgeColor标记轮廓颜色与1.3.1线条中的颜色相同
MarkerFaceColor标记填充颜色

1.3.3笛卡尔坐标数据 

属性

名称

属性描述代码示例例图
XDatax值,指定为向量对于二维图像,不指定x值则将YData的索引用作该绘图的x值
x=[1 3 5 7];
y=[2 4 6 8];
z=[1 4 9 16];
plot(y,'--or')

x=[1 3 5 7];
y=[2 4 6 8];
z=[1 4 9 16];
plot(x,y,'--or')

对于三维图像,不指定x值则将ZData的索引用作该绘图的x值
x=[1 3 5 7];
y=[2 4 6 8];
z=[1 4 9 16];
plot3(x,y,z,'--or')

XDataMode控制如何设置XData属性autoXData可以为YData的索引
manualXData不自动更新
XDataSource链接到XData的变量
YData与XData相同
YDataMode与XDataMode相同
YDataSource与XDataSource相同
ZData与XData相同
ZDataMode与XDataMode相同
ZDataSource与XDataSource相同
AffectAutoLimits在做表去范围中包括数据范围on
x1=[1 3 5 7];
y1=[2 4 6 8];
x2=[-5 1 5 7];
y2=[2 6 10 14];
plot(x1,y1,'--or',x2,y2,':+b','AffectAutoLimits','on')

off

x1=[1 3 5 7];
y1=[2 4 6 8];
x2=[-5 1 5 7];
y2=[2 6 10 14];
plot(x1,y1,'--or',x2,y2,':+b','AffectAutoLimits','off')

 1.3.4图例

本段中的一些用法会在1.4中具体给出

属性名称属性描述代码示例例图
DisplayName图例标签,只有调用legend命令后,才会显示图例。
x1=[1 3 5 7];
y1=[2 4 6 8];
x2=[-5 1 5 7];
y2=[2 6 10 14];
plot(x1,y1,'--or','DisplayName','D1')
hold on;%保持当前图形,在同一张图上绘制第二组数据
plot(x2,y2,':+b','DisplayName','D2')
legend show;%添加图例

Annotation在图例中包含对象on在图例中包含对象
x1=[1 3 5 7];
y1=[2 4 6 8];
x2=[-5 1 5 7];
y2=[2 6 10 14];
P1=plot(x1,y1,'--or','DisplayName','D1');
hold on;%保持当前图形,在同一张图上绘制第二组数据
P2=plot(x2,y2,':+b','DisplayName','D2');

P1.Annotation.LegendInformation.IconDisplayStyle = "on";%不隐藏第一组数据的图例
legend show;%添加图例
off不在图例中包含对象
x1=[1 3 5 7];
y1=[2 4 6 8];
x2=[-5 1 5 7];
y2=[2 6 10 14];
P1=plot(x1,y1,'--or','DisplayName','D1');
hold on;%保持当前图形,在同一张图上绘制第二组数据
P2=plot(x2,y2,':+b','DisplayName','D2');

P1.Annotation.LegendInformation.IconDisplayStyle = "off";%隐藏第一组数据的图例
legend show;%添加图例

二、Matlab中plot3函数的基本用法

plot3与plot函数除了在输入的时候一个需要输入三个向量一个只需要输入两个向量,剩下的在各类用法方面几乎相同或极为相似。

三、plot和plot3函数绘图的例子

3.1sinx和cosx的图像

3.1.1代码示例

x1=0:pi/100:2*pi;
y1=sin(x1);
x2=0:pi/100:2*pi;
y2=cos(x2);
plot(x1,y1, 'DisplayName','sinx', ...
    'Color','r', ...
    'LineStyle','-' ...
    ,'LineWidth',1.0, ...
    'Marker','o', ...
    'MarkerIndices',1:10:length(y1),'MarkerSize',5,'MarkerEdgeColor','b','MarkerFaceColor','y')
hold on;
plot(x2,y2,'DisplayName','cosx', ...
    'Color','k', ...
    'LineStyle','--' ...
    ,'LineWidth',3.0, ...
    'Marker','+', ...
    'MarkerIndices',1:15:length(y2),'MarkerSize',7,'MarkerEdgeColor','g','MarkerFaceColor','none')
legend show;

3.1.2例图

3.2不同底数的log图像

3.2.1代码示例

x1=1:1000;
y1=log2(x1);
y2=log(x1)/log(5);
y3=log10(x1);
plot(x1,y1,'--.r','DisplayName','log2(x)')
hold on;
plot(x1,y2,'-.k','DisplayName','log5(x)')
hold on;
plot(x1,y3,':.c','DisplayName','log10(x)')
legend show;

3.2.2例图

3.3螺旋线

3.3.1示例代码

x=0:pi/100:10*pi;
y=sin(x);
z=cos(x);
plot3(x,y,z,'--.b')

3.3.2例图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2262332.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ASP.NET Core - 依赖注入 自动批量注入

依赖注入配置变形 随着业务的增长&#xff0c;我们项目工作中的类型、服务越来越多&#xff0c;而每一个服务的依赖注入关系都需要在入口文件通过Service.Add{}方法去进行注册&#xff0c;这将是非常麻烦的&#xff0c;入口文件需要频繁改动&#xff0c;而且代码组织管理也会变…

Oracle 适配 OpenGauss 数据库差异语法汇总

背景 国产化进程中&#xff0c;需要将某项目的数据库从 Oracle 转为 OpenGauss &#xff0c;项目初期也是规划了适配不同数据库的&#xff0c;MyBatis 配置加载路径设计的是根据数据库类型加载指定文件夹的 xml 文件。 后面由于固定了数据库类型为 Oracle 后&#xff0c;只写…

Kubeadm+Containerd部署k8s(v1.28.2)集群(非高可用版)

Kubeadm+Containerd部署k8s(v1.28.2)集群(非高可用版) 文章目录 Kubeadm+Containerd部署k8s(v1.28.2)集群(非高可用版)一.环境准备1.服务器准备2.环境配置3.设置主机名4.修改国内镜像源地址5.配置时间同步6.配置内核转发及网桥过滤二.容器运行时Containerd安装(所有节点)…

[LeetCode-Python版]21. 合并两个有序链表(迭代+递归两种解法)

题目 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1&#xff1a; 输入&#xff1a;l1 [1,2,4], l2 [1,3,4] 输出&#xff1a;[1,1,2,3,4,4] 示例 2&#xff1a; 输入&#xff1a;l1 [], l2 [] 输出&#x…

MATLAB引用矩阵元素的几种方法

引用矩阵元素可以通过索引&#xff0c;也可以通过逻辑值 索引 通过引用元素在矩阵中的位置来提取元素&#xff0c;例如&#xff1a; - 逻辑值 通过某种逻辑运算来使得要提取的值变为逻辑 1 1 1&#xff0c;用 A ( ) A() A()提取即可&#xff0c; A A A为原矩阵的名称。 例如&…

sql 批量修改字段 的默认值

SELECT COLUMN_NAME, NUMERIC_PRECISION, NUMERIC_SCALE FROM information_schema.COLUMNS WHERE TABLE_SCHEMA financeproject AND TABLE_NAME finance_balance AND DATA_TYPE decimal; 查出的字段 excel 拼接 修改语句 ALTER TABLE finance_income MODIFY COLUMN yy…

CVE-2023-0562【春秋云镜】

目录 CVE-2023-0562漏洞概述漏洞利用方式影响范围修复建议安全编码示例靶标介绍 CVE-2023-0562 CVE-2023-0562 是一个针对银行储物柜管理系统的SQL注入漏洞。该漏洞影响了储物柜管理系统中处理用户输入的部分&#xff0c;攻击者可以利用此漏洞未经授权地访问数据库中的敏感信息…

vue el-dialog实现可拖拉

el-dialog实现拖拉&#xff0c;每次点击度居中显示&#xff0c;以下贴出代码具体实现&#xff0c;我是可以正常拖拉并且每次度显示在中间&#xff0c;效果还可以&#xff0c;需要的可以丢上去跑跑 组件部分&#xff1a; <el-dialog:visible.sync"dialogVisible"…

MySQL:库和表的操作

目录 一. 查看数据库 二. 创建数据库 三. 字符集和校验规则 四. 修改和删除数据库 4.1 数据库修改 4.2 数据库删除 五. 备份与恢复 5.1 备份 5.2 还原 5.3 注意事项 5.4 查看连接情况 六. 创建表 七. 查看表结构 八. 修改表 九. …

gitlab初始化+API批量操作

几年没接触gitlab了&#xff0c;新版本装完以后代码提交到默认的main分支&#xff0c;master不再是主分支 项目有几十个仓库&#xff0c;研发提交代码后仓库地址和之前的发生了变化 有几个点 需要注意 1、修改全局默认分支 2、关闭分支保护 上面修改了全局配置不会影响已经创…

Java集合(完整版)

集合框架 Collection集合 概念&#xff1a;对象的容器&#xff0c;定义了对多个对象进行操作的常用方法。可以实现数组的功能 和数组的区别&#xff1a; 数组的长度固定&#xff0c;集合长度不固定数组可以存储基本类型和引用类型&#xff0c;集合只能存储引用类型 Collec…

常耀斌:深度学习和大模型原理与实战(深度好文)

目录 机器学习 深度学习 Transformer大模型架构 人工神经元网络 卷积神经网络 深度学习是革命性的技术成果&#xff0c;有利推动了计算机视觉、自然语言处理、语音识别、强化学习和统计建模的快速发展。 深度学习在计算机视觉领域上&#xff0c;发展突飞猛进&#xff0c;…

不能通过 ip 直接访问 共享盘 解决方法

from base_config.config import OpenSMB, SMB import os, time, calendar, requests, decimal, platform, fs.smbfsinfo_dict SMB.EPDI_dict info_dict[host] (FS03,10.6.12.182) info_dict[direct_tcp] True# smb OpenSMB(info_dict)print(ok)# 根据 ip 查询电脑名 impor…

Mapbox-GL 的源码解读的一般步骤

Mapbox-GL 是一个非常优秀的二三维地理引擎&#xff0c;随着智能驾驶时代的到来&#xff0c;应用也会越来越广泛&#xff0c;关于mapbox-gl和其他地理引擎的详细对比&#xff08;比如CesiumJS&#xff09;&#xff0c;后续有时间会加更。地理首先理解 Mapbox-GL 的源码是一项复…

HIVE4.0.1在Hadoop HA部署hiveserver2模式

本文基于CENTOS7&#xff0c;在Hadoop3.4.0版本vm虚拟机3节点HA集群的基础上进行的搭建。 一、前置条件 本文使用MySQL8.0.26作为HIVE数据库&#xff0c;不使用hive自带的derby数据库&#xff0c;因为其不支持多客户端访问&#xff0c;也不方便查询。 所以必须先安装MySQL。版本…

Visual Studio 使用 GitHub Copilot 协助调试

&#x1f380;&#x1f380;&#x1f380;【AI辅助编程系列】&#x1f380;&#x1f380;&#x1f380; Visual Studio 使用 GitHub Copilot 与 IntelliCode 辅助编码Visual Studio 安装和管理 GitHub CopilotVisual Studio 使用 GitHub Copilot 扩展Visual Studio 使用 GitHu…

C10.【C++ Cont】字符数组和万能头

目录 1.字符数组 1.初始化 1.按字符串初始化 2.按字符初始化 2.字符串的输入 1.无空格的字符串 2.带空格的字符串 解决方法 1.gets(了解即可) gets不安全的原因 2.fgets 3.改良后的scanf 4.getchar 3.字符数组的输出 2.C万能头 1.字符数组 C语言风格的字符串:用…

[C++]C++工具之对异常情况的处理(throw、catch、try)以及用命名空间避免同名冲突

一、C 异常处理&#x1f60a; 1.1 定义 C 中的异常处理用于应对程序运行中的异常情况&#xff08;如除零、数组越界等&#xff09;&#xff0c;通过 try-catch 机制捕获和处理错误&#xff0c;防止程序崩溃。 异常是程序运行时意外发生的事件&#xff0c;可以通过抛出&#xf…

番外篇 | Hyper-YOLO:超图计算与YOLO架构相结合成为目标检测新的SOTA !

前言:Hello大家好,我是小哥谈。Hyper-YOLO,该方法融合了超图计算以捕捉视觉特征之间复杂的高阶关联。传统的YOLO模型虽然功能强大,但其颈部设计存在局限性,限制了跨层特征的融合以及高阶特征关系的利用。Hyper-YOLO在骨干和颈部的联合增强下,成为一个突破性的架构。在COC…

IDEA搭建springboot demo

如下所示创建SpringBootTest18项目&#xff0c;我选的maven&#xff0c;创建完成项目后&#xff0c;maven会自动下载一些依赖库到maven的repository目录中。 创建的项目结构如下图所示 接下来在项目中加入Framework支持&#xff0c;右击项目&#xff0c;弹出的菜单如下图所示&a…