Matlab 用矩阵画图

文章目录

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

Part.I Introduction

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

Chap.I 预备知识

关于 *.mat 文件

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

cpp 复制代码
// 加载 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 概要

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

cpp 复制代码
// 方式 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 杂记

下面是一些杂记

cpp 复制代码
R = corrcoef(cov1);		  		// 求协方差矩阵的相关系数矩阵

Part.II 用矩阵画图

Chap.I 摸索过程

1.首先加载一个矩阵:

可以看到,矩阵当中有nan,也有正常数据。为了可以总览全局,我将这些数据放到Excel里面,然后在缩小一下如下图:

然后对矩阵的特征进行一下介绍:

c 复制代码
[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的矩阵。

代码如下:

c 复制代码
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 中的那个矩阵

c 复制代码
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)

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

相关推荐
wrx繁星点点2 分钟前
事务的四大特性(ACID)
java·开发语言·数据库
不写八个9 分钟前
Python办公自动化教程(005):Word添加段落
开发语言·python·word
HEX9CF13 分钟前
【CTF Web】Pikachu xss之href输出 Writeup(GET请求+反射型XSS+javascript:伪协议绕过)
开发语言·前端·javascript·安全·网络安全·ecmascript·xss
赵荏苒38 分钟前
Python小白之Pandas1
开发语言·python
丶Darling.40 分钟前
代码随想录 | Day26 | 二叉树:二叉搜索树中的插入操作&&删除二叉搜索树中的节点&&修剪二叉搜索树
开发语言·数据结构·c++·笔记·学习·算法
人生の三重奏1 小时前
前端——js补充
开发语言·前端·javascript
平凡的小码农1 小时前
JAVA实现大写金额转小写金额
java·开发语言
yttandb1 小时前
重生到现代之从零开始的C语言生活》—— 内存的存储
c语言·开发语言·生活
我明天再来学Web渗透1 小时前
【hot100-java】【二叉树的层序遍历】
java·开发语言·数据库·sql·算法·排序算法
结衣结衣.2 小时前
python中的函数介绍
java·c语言·开发语言·前端·笔记·python·学习