赞
踩
当遇到需要查看一个二维矩阵数据中值的大小分布情况时可以使用 MATLAB 把矩阵以图像的形式展现出来,这样更直观。MATLAB 的可视化函数之一是 imagesc( ),还有其他的方法,这里只介绍下 imagesc。
目录
在 matlab 中定义一个 5*5 的矩阵如下:
data = reshape(linspace(1, 25, 25), [5, 5])'
将矩阵 data 直接传入 imagesc( ) 函数即可绘制相应的图像:
- imagesc(data);
- colorbar; % colorbar 的作用是生成一个代表颜色值的条状图例
颜色像素块的亮度跟矩阵中值的大小有关,值越大对应的像素块就越亮,反之,值越小相应的像素块就越暗。像素块的颜色风格可以更换,使用以下函数:
colormap(cool);
具体的参数有以下这些:
- parula turbo hsv hot cool spring summer
- autumn winter gray bone copper pink jet
- lines colorcube prismflag white
当然也可以自定义,但一般给定的选择就足够用了。
第一种种情况是不共用同一个 colorbar,这样直接使用 subplot(m,n,k) 函数依次创建子图即可:
data = reshape(linspace(1, 25, 25), [5, 5])'; %% 创建一个一行两列的子图,子图的顺序是由左到右,由上到下。当前是第一个子图 subplot(1,2,1); imagesc(data); colorbar; colormap("winter"); % 以最后一个 colormap 的设置为准,不信你试试,这里设置了也没用 ax = gca; % 全称get current axes(个人猜想),获取当前坐标区的属性,用于后续的设置 ax.FontName = 'kaiti'; % 楷体的拼音,经实验,无所谓大小写。如果是英文,可以设置为 'Times New Roman' ax.FontSize = 10; % 10 号字体 subtitle("这是第一个子图的标题"); % 这是子标题的定义方法 %% 当前是第二个子图 subplot(1,2,2); imagesc(data); colorbar; colormap("summer"); ax = gca; ax.FontName = 'kaiti'; ax.FontSize = 10; subtitle("这是第二个子图的标题"); % 这是子标题的定义方法 %% 这是总标题的定义方法 sgtitle(["这是总标题", "像这样使用字符串数组的方式可以实现标题分行"], ... "FontSize", 15, "Fontname", 'KaiTi');
这第二种情况是一张图中的所有子图共用一个 colorbar,应该也是用的最多的吧?(我猜的)。这时就不能使用 subplot(m,n,k) 函数创建子图了,官方提供的方法是使用 tiledlayout(m, n) 函数和 nexttile 设置子图,看字面意思应该就能明白咋用的了,看一下下面的代码意会吧:
data = reshape(linspace(1, 25, 25), [5, 5])'; %% 创建一个一行两列的子图,子图的顺序是由左到右 tiledlayout(1,2); %% 当前是第一个子图 nexttile imagesc(data); ax = gca; % 全称get current axes(个人猜想),获取当前坐标区的属性,用于后续的设置 ax.FontName = 'kaiti'; % 楷体的拼音,经实验,无所谓大小写。如果是英文,可以设置为 'Times New Roman' ax.FontSize = 10; % 10 号字体 subtitle("这是第一个子图的标题"); % 这是子标题的定义方法 %% 当前是第二个子图 nexttile imagesc(data); ax = gca; ax.FontName = 'kaiti'; ax.FontSize = 10; subtitle("这是第二个子图的标题"); % 这是子标题的定义方法 %% 共用 colorbar cb = colorbar; cb.Layout.Tile = 'east'; % 这里不知道啥意思的话可以默念:"上北下南, 左西右东" %% 这是总标题的定义方法 sgtitle(["这是总标题", "像这样使用字符串数组的方式可以实现标题分行"], ... "FontSize", 15, "Fontname", 'KaiTi');
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。