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:nx1{1,i}=[x1{1,i},'°E'];y1{1,i}=[y1{1,i},'°N'];
endfigure1 = 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)

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

在这里插入图片描述

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

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

相关文章

如何加快网络攻击发现速度

网络攻击可能会摧毁受害者。例如,米高梅度假村 (MGM Resorts) 预计将因 9 月份的网络攻击而遭受 1 亿美元的损失。 鲜为人知的是,在许多情况下,借助网络攻击发现可以预防网络攻击或将其消灭在萌芽状态。 威胁行为者变得越来越复杂&#xff…

网络管理相关

管理功能分为管理站manager和代理agent两部分。 网络管理: 网络管理系统中,每一个网络节点都包含有一组与管理有关的软件,叫做网络管理实体NME。 管理站的另外一组软件叫做网络管理应用NMA,提供用户接口,根据用户命令显…

2021年第十届数学建模国际赛小美赛B题疾病传播的风险解题全过程文档及程序

2021年第十届数学建模国际赛小美赛 B题 疾病传播的风险 原题再现: 空气传播疾病可以通过咳嗽或打喷嚏、喷洒液体或灰尘传播。另一方面,一些常见的传染病只能通过飞沫传播。请建立一个模型,以评估密闭空间内空气传播和液滴传播疾病的可能性。…

常用API

API(全称 Application Programming Interface:应用程序编程接口) 就是别人写好的一些程序,给我们直接拿去调用即可解决问题的。 包 什么是包? 包是用来分门别类的管理各种不同程序的,类似于文件夹,建包有利于程序的管…

【AIGC】prompt工程从入门到精通--图片生成专题

本文为系列教程【AIGC】prompt工程从入门到精通的子教程。 一、介绍 与文本提示相比,找到最佳的提示词来生成完美的图片并没有那么成熟。这可能是因为创建对象自身的挑战,这些对象基本上是主观的并且往往缺乏良好的准确性度量方法。 本指南涵盖了基本…

.NET 8 中 Android 资源生成的改进和变化

作者:Dean Ellis 排版:Alan Wang 随着 .NET 8 的发布,我们引入了一个新系统,用于生成访问 Android 资源的 C# 代码。 在 Xamarin.Android、.NET 6 和 .NET 7 中生成 Resource.designer.cs 文件的系统已经被弃用。 新系统生成一个名…

No Chromedriver found that can automate Chrome ‘x.x.xxxx‘的解决办法

一、前置说明 在使用Appium对Android设备自动化测试时,切换WebView时抛出异常: selenium.common.exceptions.WebDriverException: Message: An unknown server-side error occurred while processing the command. Original error: No Chromedriver foun…

交叉验证以及scikit-learn实现

交叉验证 交叉验证既可以解决数据集的数据量不够大问题,也可以解决参数调优的问题。 主要有三种方式: 简单交叉验证(HoldOut检验)、k折交叉验证(k-fold交叉验证)、自助法。 本文仅针对k折交叉验证做详细解…

基于ssm vue个人需求和地域特色的外卖推荐系统源码和论文

首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要包罗软件架构模式、整体功能模块、数据库设计。本项…

利用管道、信号量、信号、共享内存和消息队列进行多进程通信

一.管道(分为命名管道和匿名管道) 管道的特点: ①无论是命名管道还是匿名管道,写入管道的数据都存放在内存之中。 ②管道是一种半双工的通信方式(半双工是指终端A能发信号给终端B,终端B也能发信号给终端…

软件开发安全指南

2.1.应用系统架构安全设计要求 2.2.应用系统软件功能安全设计要求 2.3.应用系统存储安全设计要求 2.4.应用系统通讯安全设计要求 2.5.应用系统数据库安全设计要求 2.6.应用系统数据安全设计要求 软件开发全资料获取:点我获取

Linux 网络协议

1 网络基础 1.1 网络概念 网络是一组计算机或者网络设备通过有形的线缆或者无形的媒介如无线,连接起来,按照一定的规则,进行通讯的集合( 缺一不可 )。 5G的来临以及IPv6的不断普及,能够进行联网的设备将会是越来越多&#xff08…

vue 商品列表案例

my-tag 标签组件的封装 1. 创建组件 - 初始化 2. 实现功能 (1) 双击显示,并且自动聚焦 v-if v-else dbclick 操作 isEdit 自动聚焦: 1. $nextTick > $refs 获取到dom,进行focus获取焦点 2. 封装v-focus指令 (2) 失去焦点,隐藏…

用Rust刷LeetCode之66 加一

66. 加一[1] 难度: 简单 func plusOne(digits []int) []int { length : len(digits) // 从最低位开始遍历&#xff0c;逐位加一 for i : length - 1; i > 0; i-- { if digits[i] < 9 { digits[i] return digits } d…

【Mac】brew提示arch -arm64 brew以及uname返回x86_64的问题

背景 使用MacBook 14 M1 Pro两年了&#xff0c;自从使用了第三方Shell工具WindTerm后&#xff0c;使用brew时会提示我使用arch -arm64 brew安装&#xff0c;一开始没太在意&#xff0c;直到今天朋友问我uname -a返回的是什么架构&#xff0c;我才惊讶的发现竟然返回的是x86_64…

优化系统性能:深入性能测试的重要性与最佳实践

目录 引言 1. 为什么性能测试重要&#xff1f; 1.1 用户体验 1.2 系统稳定性 1.3 成本节约 1.4 品牌声誉 2. 性能测试的关键步骤 2.1 制定性能测试计划 2.2 确定性能测试类型 2.3 设计性能测试用例 2.4 配置性能测试环境 2.5 执行性能测试 2.6 分析和优化 2.7 回…

QT----Visual Studio打开.ui文件报错无法打开

问题 在我安装完qt后将它嵌入vs&#xff0c;后新建的文件无法打开ui文件 解决方法 右击ui文件打开方式,添加,程序找到你qt的安装目录里的designer.exe。点击确定再次双击就能够打开。

VMware提示:此虚拟机似乎正在使用中,取得该虚拟机的所有权失败错误的解决方案

当你遇到这个的时候是不是很疑惑&#xff0c;现在给你解决方案 step1: 先找到配置文件目录 D:\centOs7_mini\ 这里写成你的这个 step2: 在这个地方查找最后面是 .vmx.lck文件夹,然后进行修改、删除、移动都可以 step3: 去虚拟机那边重新启动就行

RabbitMQ-学习笔记(初识 RabbitMQ)

本篇文章学习于 bilibili黑马 的视频 (狗头保命) 同步通讯 & 异步通讯 (RabbitMQ 的前置知识) 同步通讯&#xff1a;类似打电话&#xff0c;只有对方接受了你发起的请求,双方才能进行通讯, 同一时刻你只能跟一个人打视频电话。异步通讯&#xff1a;类似发信息&#xff0c…

【mysql】下一行减去上一行数据、自增序列场景应用

背景 想获取if_yc为1连续账期数据 思路 获取所有if_yc为1的账期数据下一行减去上一行账期&#xff0c;如果为1则为连续&#xff0c;不等于1就为断档获取不等于1的最小账期&#xff0c;就是离当前账期最近连续账期 代码 以下为mysql语法&#xff1a; select acct_month f…