Matlab 用矩阵画图

文章目录

  • Part.I Introduction
    • Chap.I 预备知识
    • Chap.II 概要
    • Chap.III 杂记
  • Part.II 用矩阵画图
    • Chap.I 摸索过程
    • Chap.II 绘制专业图
    • Chap.III 矩阵转tiff

Part.I Introduction

本文汇总了 Matlab 用矩阵画图的几种方式。

在这里插入图片描述

Chap.I 预备知识

关于 *.mat 文件

*.mat文件是 matlab 的数据存储的标准格式,它是标准的二进制文件,还可以 ASCII 码形式保存和加载,在 MATLAB 中打开显示类似于单行 EXCEL 表格,加载和存储 mat 文件的语法:

// 加载 mat 文件
load('C:\Users\Lenovo 110\Desktop\Clustering-master\data\toy_clustering.mat')
// 保存 mat 矩阵
// 第一个参数是文件路径,后面的参数矩阵名字,类似于load
// 当只有第一个参数的时候,会把工作空间所有的矩阵都存在一个文件中
save('C:\Users\Lenovo 110\Desktop\Clustering-master\data\mydata.mat','r2','r3')	

Chap.II 概要

用矩阵画图主要有如下几种方式:

// 方式 1  --  常用
imshow(SST);		// imshow(SST,[]);
// 方式 2
F1=mapminmax(SST); %F1 ∈[-1,1]
F1=F1.*0.5+0.5; %F1 ∈[0,1]
// 方式 3  --  常用
imagesc(SST);
// 方式 4
contourf(SST,'LineStyle','none');
colormap(jet); colorbar
// 方式 5
pcolor(SST);

Chap.III 杂记

下面是一些杂记

R = corrcoef(cov1);		  		// 求协方差矩阵的相关系数矩阵

Part.II 用矩阵画图

Chap.I 摸索过程

1.首先加载一个矩阵:
在这里插入图片描述
可以看到,矩阵当中有nan,也有正常数据。为了可以总览全局,我将这些数据放到Excel里面,然后在缩小一下如下图:

在这里插入图片描述
然后对矩阵的特征进行一下介绍:

[a,b]=size(m);
num=a*b-numel(find(isnan(a)));                  %矩阵中除了nan外所有元素的个数
m1=reshape(m,a*b,1);      %搞成一个列向量
max1=max(m1);             %计算最大值
min1=min(m1);             %计算最小值
mean1=nanmean(m1);        %计算除nan之外的均值
mode1=mode(m1);           %除了nan 返回值最小的那个众数
med1=nanmedian(m1);       %求除了nan的中位数
// -----------------------------------------
217x217
max1=20.21
min1=1.22
med1=7.055

对数据的样子有了一个大概的了解,下面开始尝试画图。

代码图像
在这里插入图片描述
imshow(SST);在这里插入图片描述
imshow(SST,[]);在这里插入图片描述
F1=mapminmax(SST); %F1 ∈[-1,1]
F1=F1.*0.5+0.5; %F1 ∈[0,1]
% [y,ps] = mapminmax(SST);
% ps.ymin = 0;
% [y,ps] = mapminmax(SST,ps); %这三行与上面两行异曲同工
在这里插入图片描述
imagesc(SST);在这里插入图片描述
contourf(SST,'LineStyle','none');colormap(jet);colorbar在这里插入图片描述
pcolor(SST);在这里插入图片描述
A=[0.8 0.1 0.5
0.2 0.4 0.7
0.5 0.3 0.6];
imagesc(A);
colormap jet
colorbar;
在这里插入图片描述
A=[0.8 0.1 0.5
0.2 0.4 0.7
0.5 0.3 0.6];
imagesc(A);
colorbar
caxis([0 1])
[M, N] = size(A);
set(gca, 'XTick', 1:M,'XTickLabel', {'0','1','2'})%X坐标轴刻度数据点位置、字符
set(gca, 'YTick', 1:N, 'YTickLabel', {'0','1','2'})
loc = get(xlabel(''), 'position');
text(loc(1), loc(2), loc(3), 'Predicted label', 'HorizontalAlignment','center');
set(gca, 'XAxisLocation', 'top')
ylabel('True label')
title('Confusion matrix')
在这里插入图片描述

目前就会这几种,第六个最好用;imshow() 只能显示灰度在 [0,1] 之间的,大于 1 的显示为白色;imagesc() 将图像显示为彩色,没有取值限制;colormap() 可将图像显示为彩色,关于 colormap 可以参看下面的文章:

https://blog.csdn.net/weixin_42943114/article/details/81811556

Chap.II 绘制专业图

下面一起来出一个比较专业的图,所用的数据还是上面那个217x217的矩阵。
代码如下:

X=117:0.0416666666666:126;
Y=33:0.0416666666666:42;
x0=2*24:2*24:217; % 每隔两度标一下
y0=2*24:2*24:217;
x=119:2:126;  %标注用的
y=35:2:42;    %标注用的
x1=sprintfc('%g',x);%转成字符串数组
y1=sprintfc('%g',y);%转成字符串数组
n=size(x1,2);
for i=1:n
    x1{1,i}=[x1{1,i},'°E'];
    y1{1,i}=[y1{1,i},'°N'];
end

figure1 = figure;
ax2=axes('Parent',figure1);;%有子图时,ax2=subplot(2,3,2);
contourf(SST1,'LineStyle','none')
colormap(jet);
set(gca,'XTick',x0,'XTicklabel',x1);   %设置x,y轴
set(gca,'YTick',y0,'YTicklabel',y1);
set(gca,'FontName','Times New Roman'); %更改字体为罗马
xlabel('(a)  SST');
set(ax2,'XAxisLocation','top');%把x坐标轴搞到上面去
h=colorbar;
set(get(h,'Title'),'string','K'); %给colorbar加上单位

结果:
在这里插入图片描述

Chap.III 矩阵转tiff

用的还是 2 中的那个矩阵

GeoRef = georasterref('Rastersize',size(SST'),'Latlim',[double(min(Lat)),double(max(Lat))],'Lonlim',[double(min(Lon)),double(max(Lon))]);
%数据的写出
% data = flipud(SST');
SST_Tif = ['C:\Users\hp\Documents\MATLAB\','A20160922016121_01.tif'];
geotiffwrite(SST_Tif,flipud(SST'),GeoRef)

注意图的正反,下图才是正着看的:

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java UDP 多人聊天室简易版

服务端 import java.io.*; import java.net.*; import java.util.ArrayList; public class Server{public static ServerSocket server_socket;public static ArrayList<Socket> socketListnew ArrayList<Socket>(); public static void main(String []args){try{…

什么是类加载器?什么是双亲委派模型?

什么是类加载器&#xff0c;类加载器有哪些? 要想理解类加载器的话&#xff0c;务必要先清楚对于一个Java文件&#xff0c;它从编译到执行的整个过程。 类加载器&#xff1a;用于装载字节码文件(.class文件) 运行时数据区&#xff1a;用于分配存储空间 执行引擎&#xff1a;执…

Unity中Batching优化的GPU实例化(2)

文章目录 前言一、GPU实例化的Shader准备步骤1、在Pass中声明实例化需要的变体2、UNITY_VERTEX_INPUT_INSTANCE_ID 在顶点着色器的输入(appdata)和输出(v2f可选)中添加(uint instanceID : SV_InstanceID). 前言 在上篇文章中&#xff0c;我们做了一些GPU实例化的前置准备&…

【OJ比赛日历】快周末了,不来一场比赛吗? #12.09-12.15 #14场

CompHub[1] 实时聚合多平台的数据类(Kaggle、天池…)和OJ类(Leetcode、牛客…&#xff09;比赛。本账号会推送最新的比赛消息&#xff0c;欢迎关注&#xff01; 以下信息仅供参考&#xff0c;以比赛官网为准 目录 2023-12-09&#xff08;周六&#xff09; #7场比赛2023-12-10…

CodeSys学习笔记

文章目录 1.运动控制的两种方式1.1.SM3_CNC1.2.SM3_Robotics 2.两种运动控制方式的速度、加速度等参数的控制2.1.SM3_CNC2.2.SM3_Robotics 3.CNC的M指令的使用&#xff08;实现&#xff09;逻辑。4.SM3_Robotics中的坐标系5.SM3_Robotics如何实现插补并连续执行&#xff1f; 记…

程序管理与SELinux初探-理论篇

工作管理概念&#xff08;job control&#xff09; 1前台&#xff1a;你可以控制与执行命令的这个环境称为前台 2后台&#xff1a;可以自行运行的工作&#xff0c;你无法ctrlc终止它&#xff0c;可以使用bg/fg调用该工作 3后台中执行的进程不能等待terminal/shell的输入 sui…

MySQL高级--01_1--数据库缓冲池(buffer pool)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 数据库缓冲池(buffer pool)DBMS 会申请占用内存来作为数据缓冲池&#xff0c;在真正访问页面之前&#xff0c;需要把在磁盘上的页缓存到内存中的Buffer Pool 之后才…

【已解决】ImportError: cannot import name ‘Merge‘ from ‘keras.layers‘

问题描述 ImportError: cannot import name ‘Merge‘ from ‘keras.layers‘ 解决办法 1、tensorflow和keras版本要对应&#xff1b; 2、使用"merge" pip uninstall keras pip install keras2.3.1 from keras.layers import merge完结撒花 我这血中带泪的成长&…

35、Django进阶:项目多种数据库配置方式和使用(MySQL、PGSQL、ES、MongoDB、InfluxDB)详解

目录 新建的Django初始内置项目的数据库为什么使用SQLite SQLite的应用场景及优缺点 SQLite的应用场景及优点 SQLite不适用的场景及缺点 为什么使用MySQL Django配置和使用MySQL Django配置和使用PostgreSQL PGSQL的特点 安装与配置PostgreSQL 安装第三方库psycopg2 …

CSM2433 一款集成2.4G+125K 和8位RISC 的SOC芯片

CSM2433是一款集成2.4GHz频段发射器、125KHz接收器和8位RISC&#xff08;精简指令集&#xff09;MCU的SOC芯片。 无线收发器特性&#xff1a; 发射工作在 2.4GHz ISM 频段 发射兼容 BLE 4.2 接收工作在 15KHz-150KHz 内置 32 次可编程 NVM 存储器 3.3V 编程电压 集成低电…

【面试经典150 | 二叉树】对称二叉树

文章目录 写在前面Tag题目来源解题思路方法一&#xff1a;递归方法二&#xff1a;迭代 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法&#xff0c;两到三天更新一篇文章&#xff0c;欢迎催更…… 专栏内容以分析题目为主&#xff0c;并附带一些对于本题涉及到的…

区块链optimism主网节点搭建

文章目录 官方参考资料编译环境搭建编译Optimism Monorepo编译op-geth 执行下载数据快照生成op-geth和op-node通信密钥op-geth执行脚本 op-node执行脚本 启动日志op-gethop-node 本文是按照官方参考资料基于源码的方式成功搭建optimism主网节点。 官方参考资料 源码&#xff1…

快速排序的非递归实现

上期我们实现了快速排序的递归实现&#xff0c;但是我们知道如果递归深度太深&#xff0c;栈就会溢出&#xff0c;所以我们本期将为大家讲述快速排序的非递归实现&#xff0c;我们需要用到栈的数据结构&#xff0c;我们知道栈中的数据全是在堆区开辟的空间&#xff0c;堆的空间…

大数据分析与应用实验任务十一

大数据分析与应用实验任务十一 实验目的 通过实验掌握spark Streaming相关对象的创建方法&#xff1b; 熟悉spark Streaming对文件流、套接字流和RDD队列流的数据接收处理方法&#xff1b; 熟悉spark Streaming的转换操作&#xff0c;包括无状态和有状态转换。 熟悉spark S…

Leetcode—190.颠倒二进制位【简单】

2023每日刷题&#xff08;五十二&#xff09; Leetcode—190.颠倒二进制位 算法思路 实现代码 class Solution { public:uint32_t reverseBits(uint32_t n) {uint32_t res 0;for(int i 0; i < 32 && n > 0; i) {res | (n & 1) << (31 - i);n >&…

SpringDataJPA基础

简介 Spring Data为数据访问层提供了熟悉且一致的Spring编程模版&#xff0c;对于每种持久性存储&#xff0c;业务代码通常需要提供不同存储库提供对不同CURD持久化操作。Spring Data为这些持久性存储以及特定实现提供了通用的接口和模版。其目的是统一简化对不同类型持久性存储…

Verilog学习 | 用initial语句写出固定的波形

initial beginia 0;ib 1;clk 0;#10ia 1; #20ib 0;#20ia 0; endalways #5 clk ~clk; 或者 initial clk 0;initial beginia 0;#10ia 1; #40ia 0; endinitial beginib 1;#30 ib 0; endalways #5 clk ~clk;

Linux本地部署1Panel服务器运维管理面板并实现公网访问

文章目录 前言1. Linux 安装1Panel2. 安装cpolar内网穿透3. 配置1Panel公网访问地址4. 公网远程访问1Panel管理界面5. 固定1Panel公网地址 前言 1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。高效管理,通过 Web 端轻松管理 Linux 服务器&#xff0c;包括主机监控、…

一些系统日常运维命令和语句

一、前言 记录一些日常系统运维的命令和语句 二、linux命令与语句 1、linux查看各目录使用磁盘情况 du -h /home home为目录 du -h /home 2.查看内存使用情况 free -h 3、查看进程和CPU使用情况 top top 三、数据库语句 1、统计mysql数据库表数量 SELECT COUNT(*) A…

【Linux--基础IO】

目录 一、系统文件接口1.1 open1.2 write1.3 read1.4 close 二、文件描述符三、文件描述符的分配规则四、重定向4.1输出重定向的原理4.2dup2函数的系统调用 五、缓冲区5.1代码及现象5.2原理解释5.3C语言FILE 六、文件系统6.1磁盘的介绍6.1磁盘的分区管理 7、软硬连接7.1软连接7…