数学建模学习(7):Matlab绘图
一、二维图像绘制
1.绘制曲线图
最基础的二维图形绘制方法:plot
-plot命令自动打开一个图形窗口Figure; 用直线连接相邻两数据点来绘制图形
-根据图形坐标大小自动缩扩坐标轴,将数据标尺及单位标注自动加到两个坐标轴上,可自定坐标轴,可把x, y 轴用对数坐标表示
-如果已经存在一个图形窗口,plot命令则清除当前图形,绘制新图形
可单窗口单曲线绘图;可单窗口多曲线绘图;可单窗口多曲线分图绘图;可多窗口绘图
-可任意设定曲线颜色和线型;可给图形加坐标网线和图形加注功能
绘制单条曲线
x = 0:pi/100:2*pi;
y = sin(x);
plot(x,y)
绘制多条曲线
x = linspace(-2*pi,2*pi);
y1 = sin(x);
y2 = cos(x);
plot(x,y1,x,y2)
绘制多条曲线(利用矩阵)
将矩阵的每一列绘制为单独的线条
Y = magic(4);
plot(Y)
指定线型
x = 0:pi/100:2*pi;
y1 = sin(x);
y2 = sin(x-0.25);
y3 = sin(x-0.5);
plot(x,y1,x,y2,'--',x,y3,':')
指定标记
x = 0:pi/10:2*pi;
y1 = sin(x);
y2 = sin(x-0.25);
y3 = sin(x-0.5);
plot(x,y1,'g',x,y2,'b--o',x,y3,'c*')
指定标记(在特定的点处)
x = linspace(0,10);
y = sin(x);
plot(x,y,'-o','MarkerIndices',1:5:length(y))
指定线宽、标记大小和标记颜色
x = -pi:pi/10:pi;
y = tan(sin(x)) - sin(tan(x));
plot(x,y,'--gs',...
'LineWidth',2,...
'MarkerSize',10,...
'MarkerEdgeColor','b',...
'MarkerFaceColor',[0.5,0.5,0.5])
线型查找表
标记查找表
颜色查找表
*交叉知识-更改颜色的Color方法
对于自定义颜色,请指定 RGB 三元组或十六进制颜色代码。
1.RGB 三元组是包含三个元素的行向量,其元素分别指定颜色中红、绿、蓝分量的强度。强度值必须位于 [0,1] 范围内,例如 [0.4 0.6 0.7]。
2.十六进制颜色代码是字符向量或字符串标量,以井号 (#) 开头,后跟三个或六个十六进制数字,范围可以是 0 到 F。这些值不区分大小写。因此,颜色代码 '#FF8800' 与 '#ff8800'、'#F80' 与 '#f80' 是等效的。
组合标记
在 LineSpec 中可对线性/颜色/标记进行同时指定
对于线性/颜色/标记的组合,其是顺序无关的,可随意排列
注意上述参数都是对曲线进行操作的,如果想更改标记颜色,需利用 Marker 系列参数
添加标题和轴标签
x = linspace(0,10,150);
y = cos(5*x);
plot(x,y,'Color',[0,0.7,0.9])
title('2-D Line Plot')
xlabel('x')
ylabel('cos(5x)')
绘制持续时间并指定刻度格式
t = 0:seconds(30):minutes(3);
y = rand(1,7);
plot(t,y,'DurationTickFormat','mm:ss')
*交叉知识-hold方法
hold on 保留当前坐标区中的绘图,从而使新添加到坐标区中的绘图不会删除现有绘图。MATLAB将调整坐标区的范围、刻度线和刻度标签以显示完整范围的数据。如果不存在坐标区,hold 命令会创建坐标区。
hold off 将保留状态设置为 off,从而使新添加到坐标区中的绘图清除现有绘图并重置所有的坐标区属性。添加到坐标区的下一个绘图基于坐标区的 ColorOrder 和 LineStyleOrder 属性使用第一个颜色和线型。此选项为默认行为。
x = linspace(-pi,pi);
y1 = sin(x);
plot(x,y1)
hold on
y2 = cos(x);
plot(x,y2)
hold off
2. 绘制散点图
创建散点图
x = linspace(0,3*pi,200);
y = cos(x) + rand(1,200);
scatter(x,y)
改变点的大小
x = linspace(0,3*pi,200);
y = cos(x) + rand(1,200);
sz = linspace(1,100,200);
scatter(x,y,sz)
scatter(x,y,1)
scatter(x,y,10)
scatter(x,y,abs(y))
改变点的颜色
x = linspace(0,3*pi,200);
y = cos(x) + rand(1,200);
c = linspace(1,10,length(x));
scatter(x,y,[],c)
改变点的填充
x = linspace(0,3*pi,200);
y = cos(x) + rand(1,200);
sz = 25;
c = linspace(1,10,length(x));
scatter(x,y,sz,c,'filled')
改变标记符号
theta = linspace(0,2*pi,150);
x = sin(theta) + 0.75*rand(1,150);
y = cos(theta) + 0.75*rand(1,150);
sz = 140;
scatter(x,y,sz,'d')
3. 绘制直方图
创建直方图
y = [75 91 105 123.5 131 150 179 203 226 249 281.5];
bar(y)
堆叠直方图
x = [1980 1990 2000];
y = [15 20 -5; 10 -17 21; -10 5 15];
bar(x,y,'stacked')
更改横坐标
X = categorical({'Small','Medium','Large','Extra Large'});
X = reordercats(X,{'Small','Medium','Large','Extra Large'});
Y = [10 21 33 52];
bar(X,Y)
4. 绘制统计图
根据数据的分布做统计直方图(老版本为hist,新版本为histogram)
创建统计图
x = randn(10000,1);
histogram(x)
更改直方个数
x = randn(1000,1);
nbins = 25;
histogram(x,nbins
指定每个直方柱对应的范围
x = randn(1000,1);
edges = [-10 -2:0.25:2 10];
histogram(x,edges);
5. 绘制饼状图
创建饼状图
X = 1:3;
labels = {'Taxes','Expenses','Profit'};
pie(X,labels)
6. 绘制阶梯图
创建阶梯图
X = linspace(0,4*pi,40);
Y = sin(X);
stairs(Y)
7. 绘制极坐标图
创建极坐标图
theta = 0:0.01:2*pi;
rho = sin(2*theta).*cos(2*theta);
polarplot(theta,rho)
8. 绘制区域图
创建极区域图
Y = [1 5 3; 3 2 7; 1 5 3; 2 6 1];
area(Y)
*交叉知识-子窗口
subplot(m,n,p) 将当前图窗划分为 m×n 网格,并在 p 指定的位置创建坐标区。MATLAB 按行号对子图位置进行编号。第一个子图是第一行的第一列,第二个子图是第一行的第二列,依此类推。如果指定的位置已存在坐标区,则此命令会将该坐标区设为当前坐标区。
*若mnp均为一位数时,逗号可忽略
subplot(2,2,1);
x = linspace(-3.8,3.8);
y_cos = cos(x);
plot(x,y_cos);title('Subplot 1: Cosine')
subplot(2,2,2);
y_poly = 1 - x.^2./2 + x.^4./24;
plot(x,y_poly,'g');title('Subplot 2: Polynomial')
subplot(2,2,[3,4]);
plot(x,y_cos,'b',x,y_poly,'g');title('Subplot 3 and 4: Both')
二、三维图像的绘制
0. 从二维延拓
大部分二维图形提供了像三维延拓的方法
1. 绘制曲线图(3d)
创建三维曲线图
t = 0:pi/500:40*pi;
xt = (3 + cos(sqrt(32)*t)).*cos(t);
yt = sin(sqrt(32) * t);
zt = (3 + cos(sqrt(32)*t)).*sin(t);
plot3(xt,yt,zt)
axis equal
xlabel('x(t)')
ylabel('y(t)')
zlabel('z(t)')
创建三维散点图
z = linspace(0,4*pi,250);
x = 2*cos(z) + rand(1,250);
y = 2*sin(z) + rand(1,250);
scatter3(x,y,z,'filled')
scatter3(x,y,z,'filled')
scatter3(x,y,z,abs(z)+1,'filled')
3. 绘制直方图(3d)
创建三维直方图
load count.dat
Z = count(1:10,:);
width = 0.5;
bar3(Z,width)
title('Bar Width of 0.5')
创建水平三维直方图
load count.dat;
Y = count(1:10,:);
width = 0.5;
figure
bar3h(Y,width)
title('Width of 0.5')
4. 绘制统计图(3d)
创建三维统计图
load carbig
X = [MPG,Weight];
hist3(X)
xlabel('MPG')
ylabel('Weight')
5. 绘制饼状图(3d)
创建三维饼状图
x = [1,3,0.5,2.5,2];
pie3(x)
6. 绘制曲面图
创建三维曲面图
[X,Y] = meshgrid(-5:.5:5);
Z = Y.*sin(X) - X.*cos(Y);
s = surf(X,Y,Z,'FaceAlpha',0.5)
7. 绘制网格曲面图
修改边界
[X,Y] = meshgrid(-8:.5:8);
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;
mesh(X,Y,Z)
*交叉知识-mesh/surf
[X,Y] = meshgrid(-8:.5:8);R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;
subplot(121)
mesh(X,Y,Z)
subplot(122)
surf(X,Y,Z)
mesh:采用彩色的线条为基础,在其中填补白色的面
surf: 采用彩色的面为基础,在其中填补黑色的线条
*交叉知识-任意散点作图
利用griddata函数拟合均匀曲面
load('Point.mat')
x=A(:,1);y=A(:,2);z=A(:,3);
[X,Y,Z]=griddata(x,y,z,linspace(min(x),max(x))',linspace(min(y),max( y)),'v4’);
surf(X,Y,Z)
8. 绘制等高线图
创建三维曲面图
x = -2:0.2:2;
y = -2:0.2:3;
[X,Y] = meshgrid(x,y);
Z = X.*exp(-X.^2-Y.^2);
contour(X,Y,Z,'ShowText','on')
*交叉知识-view方法
当等高线图无法反映出图像的全部细节时,可采用view方法进行投影
[X,Y,Z] = peaks;
subplot(121)
surf(X,Y,Z)
subplot(122)
surf(X,Y,Z)
view(2)
View可在保留色彩的同时,将三维图投影至X-Y平面
*交叉知识-绘图常用指令
三、句柄/窗口控制
1. 句柄方法
通过句柄可以对图像的参数进行一些后期修改
x = linspace(-2*pi,2*pi);
y1 = sin(x);
y2 = cos(x);
p = plot(x,y1,x,y2);
p(1).LineWidth = 2;
p(2).Marker = '*';
通过建立图像句柄,对第一条曲线的线宽与第二条曲线的标识进行修改
*句柄能调用的特性,必须是图像所拥有的特性
- gcf 返回当前Figure 对象的句柄值
- gca 返回当前axes 对象的句柄值
- gco 返回当前鼠标单击的句柄值
plot(0:0.01:10,sin(0:0.01:10))
xlabel('x(mm)')
ylabel('y(mm)')
set(gca,'FontName','Times New Roman','FontSize',14)
通过建立图像句柄,对图像中的文字进行修改
*注意gca区分子窗口,若采用subplot需对每个sub获取句柄进行操作
*交叉知识-matlab动画
利用gcf读取当前图像窗口,添加至gif
*利用plot绘制直线作为道路
*关闭坐标轴(axis ff)
*利用scatter绘制点作为人员
*利用text添加文字
clear;clc;
writerObj=VideoWriter('W3','MPEG-4'); loc_exis=zeros(1,7);
writerObj.FrameRate=100;
open(writerObj);
filenames='test.gif';
D=randn(1,100);
for ii = 1:100
scatter(1:ii,D(1:ii))
xlim([1 100])
ylim([-5,5])
drawnow
frame = getframe;
im=frame2im(frame);
[A,mao]=rgb2ind(im,256);
writeVideo(writerObj,frame);
if ii==1
imwrite(A,mao,filenames,'gif','LoopCount',Inf,'DelayTime',0.01);
else
imwrite(A,mao,filenames,'gif','WriteMode','append','DelayTime',0.01);
end
end
2. 窗口控制
直接通过图像窗口对图像进行修改
图窗选项板:可进行子图控制,添加箭头等特殊标识
绘图浏览器:可直接添加和删除绘图曲线或点云等元素
属性编辑器:对图像所拥有的元素(线宽、颜色等)手动修改
图窗选项板
相关文章:

数学建模学习(7):Matlab绘图
一、二维图像绘制 1.绘制曲线图 最基础的二维图形绘制方法:plot -plot命令自动打开一个图形窗口Figure; 用直线连接相邻两数据点来绘制图形 -根据图形坐标大小自动缩扩坐标轴,将数据标尺及单位标注自动加到两个坐标轴上,可自定…...

CSS中所有选择器详解
文章目录 一、基础选择器1.标签选择器2.类选择器3.id选择器4.通配符选择器 二、复合选择器1.交集选择器2.并集选择器 三、属性选择器1.[属性]2.[属性属性值]3.[属性^属性值]4.[属性$属性值]5.[属性*属性值] 四、关系选择器1.父亲>儿子2.祖先 后代3.兄弟4.兄~弟 五、伪类选择…...

STM32 低功耗学习
STM32 电源系统结构介绍 电源系统:VDDA供电区域、VDD供电区域、1.8V供电区域、后备供电区域。 器件的工作电压(VDD)2.0~3.6V 为了提高转换精度,给模拟外设独立供电。电压调节器为1.8V供电区域供电,且1.8V供电区域是电…...

HCIP--云计算题库 V5.0版本
在国家政策的支持下,我国云计算应用市场发展明显加快,越来越多的企业开始介入云产业,出现了大量的应用解决方案,云应用的成功案例逐渐丰富,用户了解和认可程度不断提高,云计算产业发展迎来了“黄金机遇期”…...

小白到运维工程师自学之路 第六十五集 (docker-compose)
一、概述 Docker Compose 的前身是 Fig,它是一个定义及运行多个 Docker 容器的工具。可以使用YAML文件来配置应用程序的服务。然后,使用单个命令,您可以创建并启动配置中的所有服务。Docker Compose 会通过解析容器间的依赖关系(…...
量子机器学习
量子机器学习(QML)是结合量子计算和机器学习的交叉领域,旨在利用量子计算的优势来改进机器学习算法的性能。下面是一些有关量子机器学习的学习资源和技术应用: 学术论文和研究资料: ArXiv.org:在ArXiv的量子物理和机器学习类别中&…...

WEB集群——tomcat
1. 简述静态网页和动态网页的区别。 2. 简述 Webl.0 和 Web2.0 的区别。 3. 安装tomcat8,配置服务启动脚本,部署jpress应用。 一、简述静态网页和动态网页的区别 (1)静态网页 1.什么是静态网页 请求响应信息,发…...

Vulnhub: blogger:1靶机
kali:192.168.111.111 靶机:192.168.111.176 信息收集 端口扫描 nmap -A -sC -v -sV -T5 -p- --scripthttp-enum 192.168.111.176 在80端口的/assets/fonts/目录下发现blog目录,访问后发现为wordpress 利用wpscan发现wordpress插件wpdisc…...
老版MFC工程迁移到VC2019编译EXE太大的问题
有个老版静态链接MFC库的MFC程序需要迁移到VC2019编译,直接用VC2019打开就会自动迁移过去,然后编译一下,生成的EXE大小将近3MB,老版的工程编译出来也就600多KB。 肯定哪里不对劲! 好一顿研究之后发现原来默认会把MFC…...

Curve深陷安全事件,OKLink如何破局
出品|欧科云链研究院 作者|Matthew Lee 7月31号,Curve 在平台表示 Vyper 0.2.15 的稳定币池由于编译器的漏洞所以遭到攻击。具体因为重入锁功能的失效,所以黑客可以轻易发动重入攻击,即允许攻击者在单次交易中执行某…...
2023华数杯数学建模思路A题B题C题模型代码分析
目录 一.2023华数杯数学建模最新思路:比赛开始后第一时间更新 更新查看文末名片 二.往年华数杯赛题简介分析: 一.2023华数杯数学建模最新思路:比赛开始后第一时间更新 更新查看文末名片 二.往年华数杯赛题简介分析: 2022华数杯…...

el-table合并单元格
el-tabel数据结构 此处为this.rolePermitItemList 合并后的样式: el-table-column 需要添加property字段,属性值同props,用来判断需要合并的字段 <el-table :data"rolePermitItemList" style"width: calc(100% );margi…...
html5设置不缓存
<meta http-equiv"Cache-Control" content"no-cache, no-store, must-revalidate"> <meta http-equiv"Pragma" content"no-cache"> <meta http-equiv"Expires" content"0"> 使用meta元素的htt…...
kotlin 的函数参数
https://blog.csdn.net/yoonerloop/article/details/123241451 一、无参数的函数参数 1、回调 //定义 interface OnClickListener { fun onClick() } private fun setOnClickListener(listener: OnClickListener) { } //使用 setOnClickListener(object : OnClickLi…...
谈谈 Kafka 的幂等性 Producer
使用消息队列,我们肯定希望不丢消息,也就是消息队列组件,需要保证消息的可靠交付。消息交付的可靠性保障,有以下三种承诺: 最多一次(at most once):消息可能会丢失,但绝…...

Doris(三)-集群部署3个FE+3个BE
前置 1)配置java环境 1st 解压jdk包 unzip jdk1.8.0_171-amd64.zip 2nd 配置环境变量 vim /etc/profile#文末添加JAVA_HOME/data/jdk1.8.0_171-amd64 PATH$JAVA_HOME/bin:$PATHexport PATH JAVA_HOME3rd 启用配置 source /etc/profile 4th 验证 java -versi…...

js沙箱逃逸
目录 一、什么是沙箱(sandbox) 二、沙箱技术的实现 & node.js 2.1简单沙箱程序示例 2.2this.tostring S1: S2: 三、arguments.callee.caller 一、什么是沙箱(sandbox) 在计算机安全性方面,沙箱(沙盒、sanboxÿ…...

振弦传感器信号转换器应用山体滑坡安全监测
振弦传感器信号转换器应用山体滑坡安全监测 随着人类文明的进步,自然灾害对人们的生活和财产安全造成的威胁也越来越大。山体滑坡作为自然灾害中的一种,给人们的生活和财产安全带来了极大的威胁。因此,进行山体滑坡的安全监测显得尤为重要。振…...
Moonbeam新增强大的互操作性功能至波卡生态
波卡上的领先多链开发平台Moonbeam发布适用于平行链间活动的新版本互操作性功能。最新的链更新Runtime 2401,是自Moonbeam上线后的最大更新,其中包括三个针对开发者于链上的里程碑式更新: 用于访问消息传递功能的预编译智能合约从其他波卡平…...

考研408 | 【计算机网络】概述
计算机网络体系结构 计算机网络概述:1.概念,组成,功能,分类2.标准化工作及相关组织3.性能指标体系结构&参考模型:1.分层结构2.协议,接口,服务3.ISO/OSI模型4.TCP/IP模型 目录 计算机网络体…...

RocketMQ延迟消息机制
两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后…...

(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...

Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

回溯算法学习
一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...

Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...

WPF八大法则:告别模态窗口卡顿
⚙️ 核心问题:阻塞式模态窗口的缺陷 原始代码中ShowDialog()会阻塞UI线程,导致后续逻辑无法执行: var result modalWindow.ShowDialog(); // 线程阻塞 ProcessResult(result); // 必须等待窗口关闭根本问题:…...

stm32wle5 lpuart DMA数据不接收
配置波特率9600时,需要使用外部低速晶振...

工厂方法模式和抽象工厂方法模式的battle
1.案例直接上手 在这个案例里面,我们会实现这个普通的工厂方法,并且对比这个普通工厂方法和我们直接创建对象的差别在哪里,为什么需要一个工厂: 下面的这个是我们的这个案例里面涉及到的接口和对应的实现类: 两个发…...

开疆智能Ethernet/IP转Modbus网关连接鸣志步进电机驱动器配置案例
在工业自动化控制系统中,常常会遇到不同品牌和通信协议的设备需要协同工作的情况。本案例中,客户现场采用了 罗克韦尔PLC,但需要控制的变频器仅支持 ModbusRTU 协议。为了实现PLC 对变频器的有效控制与监控,引入了开疆智能Etherne…...