瓷砖文档

瓷砖确定用于将矩阵划分为多个瓦片的指标。

返回气候数据工具目录

内容

语法

(行,坳)=瓷砖(A, maxsiz)[行,坳]=瓷砖(siz maxsiz)[行,坳]=瓷砖(…,重叠,重叠)[行,坳,h_rect h_txt] =瓷砖(…,“展示”)

描述

[行,col] =瓷砖(a,maxsiz)返回下标索引上校这可以用来除矩阵一个每个tiles的最大大小为%maxsizmaxsiz可以是描述方形瓷砖的侧面减去的标量,或者maxsiz可以是一个双元素数组,以限制瓦片大小为矩形尺寸。输出上校是单元格数组,每个单元格包含一个块的下标索引范围一个一个可以是2D或3D矩阵,但如果一个是一个3D矩阵,只考虑它的前两个维度在瓦片计算。

(行,坳)=瓷砖(siz maxsiz)瓷砖的大小矩阵做成最大尺寸的瓦片maxsiz

(行,坳)=瓷砖(…,重叠,重叠)指定瓦片重叠的行数和列数。重叠可以是标量或双元素数组。

[行,坳,h_rect h_txt] =瓷砖(…,“展示”)在绘图上显示编号的矩形,显示瓦片。可选的输出h_recth_txt.是绘制的矩形和文本标签的句柄。

例子

假设你有这个20x20的矩阵:

y =峰(20);ImagesC(Y)XLabel'列\ lightarrow'ylabel'\左臂行'

但是20x20对于任何你想应用的处理算法来说都太大了Y.一次处理整个矩阵需要太多的内存,所以你想把它分成更小的,每个不大于5x5的小块。以下是如何做到这一点:

(行,坳)=瓷砖(Y, 5);

现在我们有上校如你所见:

上校
Name Size Bytes Class Attributes col 4x4 2432 cell row 4x4 2432 cell

每个4x4单元阵列。每个单元格包含描述单个块的行或列索引Y.例如,第一个贴图的行索引Y是由

行{1}
Ans = 1.00 2.00 3.00 4.00 5.00

在矩阵的图上显示所有的贴图和它们的数字Y通过包括“显示”当你调用时瓷砖

瓷砖(20 5“显示”);标题瓦数的

上图显示了我们所期望的,打破20x20矩阵Y分成不超过5行5列的瓦片,得到16个正方形瓦片。现在很容易提取单个贴图。例如,要显示第10个贴图,使用y(行{10},col {10})像这样:

图显示亮度图像(col{10},{10}行,Y(行{10},{10})上校)标题“瓦10”包含'列\ lightarrow'ylabel'\左臂行'

大小不均匀

如果大小Y不能完全被最大瓷砖大小整除吗?在这种情况下,生成的tiles将具有不同的大小。

如果您想要的最大瓷砖大小不是方形的呢?在这种情况下,请在窗体中指定最大平铺大小[maxrow maxcol]

这里是如何指定一个最大的瓷砖大小,不是正方形的,这不会均匀地分割矩阵Y

图显示亮度图像(Y)包含'列\ lightarrow'ylabel'\左臂行'瓷砖(Y, 4 [9],“显示”);

指定重叠

对于某些应用程序,有必要有重叠的瓷砖。下面是如何为每个贴图添加额外的行和列,使它们重叠:

图显示亮度图像(Y)包含'列\ lightarrow'ylabel'\左臂行'瓷砖(Y, 6 [9],'重叠',1,“显示”);

处理2D网格

假设您有一个Big 2160x4320数据集,并且您希望在瓷砖中处理不大于300x300。加载数据集并获取行r和列c每个瓦:

加载global_topography.mat[r、c] =瓷砖(Z, 300);

处理2D矩阵Z在贴图中,我们将遍历每个8x15=120的贴图,并分别处理每个贴图。在这个例子中,假设我们想要做的是将每个贴图翻转过来。首先preallocatingZf,然后对每个贴图进行操作:

%预分配输出网格:Zf =南(大小(Z));%循环遍历每个贴图:k = 1:numel(r)zf(r {k},c {k})= flipud(z(r {k},c {k}));结尾图imagescn(经度,纬度,Zf) cmocean (“威尼斯平底渔船”“主”)xlabel.“经”ylabel“纬度”标题“每一块瓷砖都翻转过来了”

在3D矩阵上操作

瓷砖函数的主要目的是帮助处理大型3D网格时间序列,这些时间序列有时会限制计算机的内存。为了说明如何在这样的数据集上使用这个函数,我们将在一个相对较小的网格时间序列上操作,即CDT附带的每月地面压力数据集:

sp = ncread (“ERA_Interim_2017.nc”'sp');lat = ncread(“ERA_Interim_2017.nc”“纬度”);lon = ncread(“ERA_Interim_2017.nc”“经”);

地面压力数据集为480x241x12。最后的“12”对应着2017年的每一个月。

2017年地表压力中值是什么样子的?对于这样一个小的数据集,我们可以简单地这样做

spm =值(sp, 3);

但是,如果spDataSet更大,我们可能需要将其分解为瓷砖。要将其分解为瓷砖,请说出每个不大于50x50,获取每个瓦片的行和列,如下所示:

[r、c] =瓷砖(sp, 50);

然后计算中位数sp沿着它的第三维,做一些类似于上面的2D例子,但添加一个额外的,:在索引中表示“这些行,这些列,以及第三维上的所有东西”。

首先预期spm,然后沿每个贴图的第三维计算中值:

% Preallocate:spm =南(长度(朗),(lat));%循环遍历每个贴图:k = 1:元素个数(r) spm (c r k {}, {k}) =值(sp (c r k {}, {k},:), 3);结尾

绘制2017年的中值表面压力,我们刚刚用瓦片计算过:

图imagescn cmocean(经度、纬度、spm的)节奏%设置颜色映射

它看起来是正确的,但我们可以验证平铺的解决方案与all-at-once解决方案匹配,就像这样

isequal (spm),中等(sp, 3))
逻辑1

1,或真正的价值说是的,平铺的解决方案与非平铺的解决方案相匹配。

作者信息

这个函数是气候数据工具箱的Matlab.功能和辅助文档是由德克萨斯大学奥斯金宝app汀分校的Chad A. Greene编写的。