基于Matlab的数据可视化

news2024/11/26 16:58:51

基于Matlab的数据可视化

  • 一、二维图形的绘制
    • (一)基本图形函数
      • (1)plot函数
      • (2)fplot函数
      • (3)其他坐标系的二维曲线
    • (二)图形属性设置
      • (1)线型、标记、颜色
      • (2)图形标注(支持LaTex中公式、符号的输入)
      • (3)坐标控制
  • 二、三维图形的绘制
    • (一)三维曲线
      • (1)plot3( )
      • (2)fplot3( )
    • (二)三维曲面
      • (1)平面网格数据的生成
      • (2)绘制三维曲面的函数
  • 三、句柄/窗口的控制
    • (一)图形对象句柄及属性
      • (1)对象句柄值的获取
      • (2)对象属性的获取/设置
    • (二)图形窗口的分割

一、二维图形的绘制

(一)基本图形函数

(1)plot函数

通过线段(折线)来连接给定的点与点的图像
在这里插入图片描述

  1. plot(X,Y):创建Y中数据对X中对应值的二维线图
  • 要绘制 由线段连接的 一组坐标 -> 将 X 和 Y 指定为 相同长度 的向量
  • 要在 同一组坐标区上 绘制 多组坐标 -> 将 X 或 Y 中的至少一个指定为 矩阵
% 1
x = 1:9;
y = 2:10;
plot(x,y);

% 2
x = 1:9;
y = x.^2;
plot(x,y);

% 3
x = 1:9;
y = 2:10;
plot(x);

% 4
x = 1:9;
y = 0.1:0.2:1.7;
X = x+y*i;
plot(X);

% 5
t = 0:0.01:2*pi; % 步长越小,对应的曲线就平滑
t = t.';  % 转置:将 行向量 转变为 列向量
% 画出来曲线的条数 == 矩阵的列数
x = [t,t,t];
y = [sin(t),sin(2*t),sin(0.5*t)];
plot(x,y);
12345
  1. plot(X,Y,LineSpec):使用指定的线型、标记和颜色创建绘图
    plot(X1,Y1,…,Xn,Yn):在同一组坐标区上绘制多对x和y坐标。此语法可替代将坐标指定为矩阵的形式
x1 = linspace(0,2*pi,10);
x2 = linspace(0,2*pi,20);
x3 = linspace(0,2*pi,200);
y1 = sin(x1);
y2 = sin(x2)+2;
y3 = sin(x3)+4;
plot(x1,y1,x2,y2,x3,y3);

在这里插入图片描述
3. plot(X1,Y1,LineSpec1,…,Xn,Yn,LineSpecn)
在这里插入图片描述

x1 = linspace(0,2*pi,10);
x2 = linspace(0,2*pi,20);
x3 = linspace(0,2*pi,200);
y1 = sin(x1);
y2 = sin(x2)+2;
y3 = sin(x3)+4;
plot(x1,y1,':g',x2,y2,x3,y3);  % : 虚线 g 绿色

在这里插入图片描述

(2)fplot函数

在这里插入图片描述

% 1
fplot(@(x)sin(1./x),[0,0.2]);

% 2
x = [0:0.005:0.2];
y = sin(1./x);
plot(x,y);

% 3
fplot(@(t)t*sin(t),@(t)t*cos(t),[0,10*pi],'-r');
序号图像
1在这里插入图片描述
2在这里插入图片描述
3在这里插入图片描述

(3)其他坐标系的二维曲线

  1. 对数坐标图:semilogx( )
    在这里插入图片描述
x = logspace(-1,2); %生成从0到100的对数间距
y = x;
semilogx(x,y);

在这里插入图片描述

  1. 极坐标图:polarplot( )
    在这里插入图片描述
theta = 0:0.01:2*pi;
rho = sin(theta) .* cos(theta);
polarplot(theta,rho);

在这里插入图片描述

  1. 统计图
  • 条形图:bar( )
    在这里插入图片描述
x = [2021,2022,2023];
y = [10,20;20,30;100,200]; % 对应年份两项指标的打分
bar(x,y);

在这里插入图片描述

  • 直方图(质量分布图):histogram( )
    在这里插入图片描述
    在这里插入图片描述
% 自动分 bin 算法 (将连续变量离散化处理)
x = randn(1000,1);
nbins = 25;
h = histogram(x,nbins);
counts = h.Values % 每个 bin 中直方图的计数

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

  • 面积类图:pie( )
    在这里插入图片描述
x = [1:2:9];
pie(x);

在这里插入图片描述

  • 散点类图:scatter( )
    在这里插入图片描述
    在这里插入图片描述
t = 0:pi/50:2*pi;
x = 16*sin(t) .^ 3;
y = 13*cos(t) - 5*cos(2*t) -2*cos(3*t) - cos(4*t);
scatter(x,y,'red',"filled");

在这里插入图片描述

  • s矢量图:quiver( )
    在这里插入图片描述
% quiver(X,Y,U,V)在由X和Y指定的笛卡尔坐标上绘制具有定向分量U和V的箭头
% 即起点(X,Y)->终点(U,V)
A = [4,5];
quiver(0,0,A(1),A(2));

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

A = [4,5]
B = [-10,10]
C = A + B
hold on
quiver(0,0,A(1),A(2))
quiver(0,0,B(1),B(2))
quiver(0,0,C(1),C(2))
title('A向量+B向量的结果')
xlabel('X')
ylabel('Y')
text(A(1),A(2),'A')
text(B(1),B(2),'B')
text(C(1),C(2),'C')
grid on

在这里插入图片描述

(二)图形属性设置

(1)线型、标记、颜色

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

(2)图形标注(支持LaTex中公式、符号的输入)

  1. title(图形标题)
  2. xlabel(x轴说明)
  3. ylabel(y轴说明)
  4. text(x,y,图形说明)
  5. legend(图例1,图例2)

(3)坐标控制

  1. axis( )
    在这里插入图片描述
  2. 给坐标系加网格和边框
    在这里插入图片描述
    在这里插入图片描述
x = linspace(0,2*pi,200);
y = [sin(x);sin(2*x);sin(0.5*x)];
plot(x,y);

axis([0,6.5,-1.5,1.5]);
title('三个正弦函数曲线y=sin{\theta}','FontSize',24);
xlabel('X');
ylabel('Y');
text(2.5,sin(2.5),'sin(x)');
text(2.5,sin(2*2.5),'sin(2x)');
legend('sin(x)','sin(2x)','sin(0.5x)')

在这里插入图片描述

  1. 图形保持

在这里插入图片描述

t = linspace(0,2*pi,200);
x = sin(t);
y = cos(t);
plot(x,y,'b');
axis equal
hold on
x1 = 2*sin(t);
y1 = 2*cos(t);
plot(x1,y1,'r');

在这里插入图片描述


二、三维图形的绘制

(一)三维曲线

(1)plot3( )

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

t = [0:0.1:10*pi];
x = sin(t) + t .* cos(t);
y = cos(t) - t .* sin(t);
z = t;
plot3(x,y,z);

在这里插入图片描述

% 1  sin(x)的三维图
y = t;
plot3(t,y,sin(t));

% 2
t = [0:0.1:10*pi];
t = t.';
x = [t,t,t];
y = [sin(t),sin(t)+2,sin(t)+4];
z = t;
plot3(x,y,z);

% 3  x 与 y 中有的是向量,有的是矩阵
t = [0:0.1:10*pi];
x = t;
y = [sin(t);sin(t)+2;sin(t)+4];
z = t;
plot3(x,y,z);

% 4
t = [0:0.1:10*pi];
plot3(x,sin(t),z,x,sin(t)+2,z,x,sin(t)+4,z);
序号图像
1在这里插入图片描述
2在这里插入图片描述
3在这里插入图片描述
4在这里插入图片描述

(2)fplot3( )

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

t = [0:0.1:10*pi];
x = @(t) exp(-t/10) .* sin(5*t);
y = @(t) exp(-t/10) .* cos(5*t);
z = @(t) t;
fplot3(x,y,z,[-12,12],'r');

在这里插入图片描述

(二)三维曲面

(1)平面网格数据的生成

  1. 利用矩阵运算生成
  2. 利用meshgrid函数生成

在这里插入图片描述

%(1)利用矩阵运算生成
x = [2:6]
y = [3:8]'
X = ones(size(y))*x % 把x拉6行
Y = y*ones(size(x)) % 列在前,行在后

%(2)利用meshgrid函数
x = [2:6]
y = [3:8]'
[X,Y]=meshgrid(x,y)

两个方法结果相同
在这里插入图片描述

(2)绘制三维曲面的函数

在这里插入图片描述

x = -2:0.2:2;
[X,Y]=meshgrid(x);
Z = X .* exp(-X .^ 2 - Y .^ 2);

%  1
plot3(X,Y,Z);

%  2
mesh(X,Y,Z);

%  3
surf(X,Y,Z);
序号图像
1在这里插入图片描述
2在这里插入图片描述
3在这里插入图片描述

在这里插入图片描述

x = [2:6];
y = [3:8]';
[X,Y] = meshgrid(x,y);
Z = randn(size(X)); % 和X/Y大小一致即可
plot3(X,Y,Z);

在这里插入图片描述


三、句柄/窗口的控制

(一)图形对象句柄及属性

(1)对象句柄值的获取

在这里插入图片描述

x = 1:10;
y = x .^ 2;
h = plot(x,y);  % 将句柄保存到 h 变量中
h1 = text(5,25,'说明');
h1.FontSize = 24; % 更改图窗中字体大小

在这里插入图片描述

(2)对象属性的获取/设置

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

x = linspace(0,2*pi,100);
y = sin(x);
h = plot(x,y);
get(h);
set(h,'Color','red');

在这里插入图片描述

在这里插入图片描述

(二)图形窗口的分割

在这里插入图片描述

x = linspace(0,2*pi,100);
subplot(2,2,1); % 相当于激活函数
plot(x,sin(x));
title('sin(x)');

subplot(2,2,2);
plot(x,cos(x));
title('cos(x)');

subplot(2,2,3);
plot(x,tan(x));
title('tan(x)');

subplot(2,2,4);
plot(x,cot(x));
title('cot(x)');

在这里插入图片描述

在这里插入图片描述

x = -1:0.2:2;
[X,Y] = meshgrid(x);
Z = X .* exp(-X .^ 2 - Y .^ 2);

subplot(1,3,1);
plot3(X,Y,Z);

subplot(1,3,2);
mesh(X,Y,Z);

subplot(1,3,3);
surf(X,Y,Z);

在这里插入图片描述


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

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

相关文章

对某次应急响应中webshell的分析

文章前言 在之前处理一起应急事件时发现攻击者在WEB应用目录下上传了webshell,但是webshell似乎使用了某种加密混淆手法,无法直观的看到其中的木马连接密码,而客户非要让我们连接webshell来证实此文件为后门文件且可执行和利用(也是很恼火&a…

数据结构与算法04二叉树|二叉排序树|AVL树

目录 一、二叉树(binary tree) 1、二叉树常见术语 2、二叉树常用的操作 2.1、初始化:与链表十分相似,先创建节点,然后构造引用/指针关系. 2.2、插入和删除操作 3、常见二叉树类型 3.1、满二叉树 3.2、完全二叉树(complete b…

跳跃游戏Ⅱ - vector

55. 跳跃游戏 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:bool canJump(vector<int>& nums) {int n nums.size();int reach 0;for(int i 0; i < n; i){if(i > reach){return false;}reach max(inums[i], reach);}return true;} }; …

SpringBoot3 + Vue3 学习 Day 2

登入接口 和 获取用户详细信息的开发 学习视频登入接口的开发1、登入主逻辑2、登入认证jwt 介绍生成 JWT① 导入依赖② 编写代码③ 验证JWT 登入认证接口的实现① 导入 工具类② controller 类实现③ 存在的问题及优化① 编写拦截器② 注册拦截器③ 其他接口直接提供服务 获取用…

JVM(day4)类加载机制

类加载过程 加载 通过一个类的全限定名来获取定义此类的二进制字节流。 将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。 在内存中生成一个代表这个类的java.lang.Class对象&#xff0c;作为方法区这个类的各种数据的访问入口。 验证 文件格式验证 元数…

LeetCode做题记录(第二天)647. 回文子串

题目&#xff1a; 647. 回文子串 标签&#xff1a;双指针 字符串 动态规划 题目信息&#xff1a; 思路一&#xff1a;暴力实现 我们直接for套for分割成一个个子串再判断&#xff0c;如果子串是回文子串&#xff0c;就1&#xff0c;最后得出结果 代码实现&#xff1a; cl…

C语言实例-约瑟夫生者死者小游戏

问题&#xff1a; 30个人在一条船上&#xff0c;超载&#xff0c;需要15人下船。于是人们排成一队&#xff0c;排队的位置即为他们的编号。报数&#xff0c;从1开始&#xff0c;数到9的人下船&#xff0c;如此循环&#xff0c;直到船上仅剩15人为止&#xff0c;问都有哪些编号…

Missing script:‘dev‘

场景&#xff1a; npm run dev 原因&#xff1a;没有安装依赖&#xff0c;可用镜像安装&#xff08;详见下图ReadMe 蓝色字体&#xff09;&#xff0c;没安装依赖可从package-lock.json文件是否存在看出&#xff0c;存在则有依赖 解决&#xff1a;

KMP算法(算法篇)

算法之KMP算法 KMP算法 概念&#xff1a; KMP算法是用于解决字符串匹配的问题的算法&#xff0c;也就是有一个文本串和一个模式串&#xff0c;求解这个模式串是否在文本串中出现或者匹配。相对于暴力求解&#xff0c;KMP算法使用了前缀表来进行匹配&#xff0c;充分利用了之…

【Vue3】从零开始编写项目

【Vue3】从零开始编写项目 背景简介开发环境开发步骤及源码总结 背景 随着年龄的增长&#xff0c;很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来&#xff0c;技术出身的人总是很难放下一些执念&#xff0c;遂将这些知识整理成文&#xff0c;以纪念曾经努力学习奋斗的…

神经网络模型实现(训练、测试)

目录 一、神经网络骨架&#xff1a;二、卷积操作&#xff1a;三、卷积层&#xff1a;四、池化层&#xff1a;五、激活函数&#xff08;以ReLU为例&#xff09;&#xff1a;六、模型搭建&#xff1a;七、损失函数、梯度下降&#xff1a;八、模型保存与加载&#xff1a;九、模型训…

Linux下安装JDK、Tomact、MySQL以及Nginx的超详细步骤

目录 1、为什么安装这些软件 2、安装软件的方式 3、安装JDK 3.1 下载Linux版本的JDK 3.2 将压缩包拖拽到Linux系统下 3.3 解压jdk文件 3.4 修改文件夹名字 3.5 配置环境变量 4、安装Tomcat 4.1 下载Tomcat 4.2 将Tomcat放入Linux系统并解压&#xff0c;步骤如上面的…

MenuToolButton自绘控件,带下拉框的QToolButton,附源码

MenuToolButton自绘控件&#xff0c;带下拉框的QToolButton 效果 下拉样式可自定义 跟随QToolButton的Qt::ToolButtonStyle属性改变图标文字样式 使用示例 正常UI文件创建QToolButton然后提升&#xff0c;或者直接代码创建都可以。 // 创建一个 QList 对象来存储 QPixm…

JDK、JRE、JVM的区别java的基本数据类型

说一说JDK、JRE、JVM的区别在哪&#xff1f; JDK&#xff1a; Java Delopment kit是java工具包&#xff0c;包含了编译器javac&#xff0c;调试器&#xff08;jdb&#xff09;以及其他用于开发和调试java程序的工具。JDK是开发人员在开发java应用程序时候所需要的的基本工具。…

10道JVM经典面试题

1、 JVM中&#xff0c;new出来的对象是在哪个区&#xff1f; 2、 说说类加载有哪些步骤&#xff1f; 3、 JMM是什么&#xff1f; 4、 说说JVM内存结构&#xff1f; 5、 MinorGC和FullGC有什么区别&#xff1f; 6、 什么是STW? 7、 什么情况下会发生堆/栈溢出&#xff1f…

【高中数学/对数函数】log_x_x+1与(x+1)/x,log_x+1_x与x/(x+1)的图线有着惊人的相似性

【图像】 褐线与蓝线&#xff0c;黄线与绿线&#xff0c;只是像左右平移了一样。 【生成图像的代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head>…

大模型学习笔记十二:AI产品部署

文章目录 一、如何选择GPU和云服务器厂商&#xff0c;追求最高性价比1&#xff09;根据场景选择GPU2&#xff09;训练或微调所需显卡&#xff08;以Falcon为例子&#xff09;3&#xff09;服务器价格计算器 二、全球大模型了解1&#xff09;llm所有模型2&#xff09;模型综合排…

基于Python+Django,开发的一个在线教育系统

一、项目简介 使用Python的web框架Django进行开发的一个在线教育系统&#xff01; 二、所需要的环境与组件 Python3.6 Django1.11.7 Pymysql Mysql pure_pagination DjangoUeditor captcha xadmin crispy_forms 三、安装 1. 下载项目后进入项目目录cd Online-educ…

企业微信PC版应用跳转到默认浏览器,避坑指南,欢迎补充(Vue项目版)。。。

引子 关于企业微信PC版应用跳转到默认浏览器&#xff0c;我之前写过一篇文章&#xff1a;企业微信PC版应用跳转到默认浏览器&#xff0c;避坑指南&#xff0c;欢迎补充。。。 以前的文章里用的前后端一体的Jsp项目&#xff0c;这次我使用的是前后端分离的Vue项目&#xff0c;…

数据库——单表查询

一、建立数据库mydb8_worker mysql> use mydb8_worker; 二、建立表 1.创建表 mysql> create table t_worker(department_id int(11) not null comment 部门号,-> worder_id int(11) primary key not null comment 职工号,-> worker_date date not null comment…