resize
说明
使用一个或多个名称-值参量指定用于调整大小的其他参数。例如,B = resize(A,m,Name=Value)resize(A,m,Pattern="circular")(其中 m 大于 A 在运算维度中的大小)通过循环重复输入数据来调整大小。
示例
创建一个四元素列向量,并将该向量的大小调整为六个元素。默认情况下,resize 函数向数值向量的尾部侧添加零。
A = [1; 3; 5; 7]; B1 = resize(A,6)
B1 = 6×1
1
3
5
7
0
0
将该向量的大小调整为两个元素。默认情况下,resize 从尾部侧删除元素。
B2 = resize(A,2)
B2 = 2×1
1
3
创建三个具有不同长度的向量。
A1 = [2; 8; 3]; A2 = [9; 4; 6; 2; 7]; A3 = [9; 2; 6; 1; 9; 3];
确定第二个向量的长度。
m = length(A2)
m = 5
调整第一个和第三个向量的大小以匹配第二个向量的长度。resize 向 A1 的末尾添加元素,并从 A3 的末尾删除一个元素。
B1 = resize(A1,m)
B1 = 5×1
2
8
3
0
0
B3 = resize(A3,m)
B3 = 5×1
9
2
6
1
9
您可以串联具有相同长度的向量。使用调整大小后的向量创建一个矩阵。
C = [B1 A2 B3]
C = 5×3
2 9 9
8 4 2
3 6 6
0 2 1
0 7 9
也可以使用 paddata 和 trimdata 函数调整数据大小。使用 paddata 函数调整比目标长度短的向量的大小,使用 trimdata 函数调整比目标长度长的向量的大小。
D1 = paddata(A1,m)
D1 = 5×1
2
8
3
0
0
D3 = trimdata(A3,m)
D3 = 5×1
9
2
6
1
9
创建一个 3×3 矩阵。通过从每列删除一个元素,将列的长度调整为 2。通过反射每行中的数据,直到行包含九个元素,将行的长度调整为 9。Pattern 仅适用于 resize 为其添加元素的维度。
A = [1 3 5; 2 4 6; 7 8 10]
A = 3×3
1 3 5
2 4 6
7 8 10
B = resize(A,[2 9],Pattern="reflect")B = 2×9
1 3 5 3 1 3 5 3 1
2 4 6 4 2 4 6 4 2
创建一个 3×3 矩阵作为三维数组中的第一页。通过沿第三个维度调整维度大小,向数组添加第二个页。
A = [1 3 5; 2 4 6; 7 8 10]
A = 3×3
1 3 5
2 4 6
7 8 10
B = resize(A,2,Dimension=3)
B =
B(:,:,1) =
1 3 5
2 4 6
7 8 10
B(:,:,2) =
0 0 0
0 0 0
0 0 0
创建一个包含不同数据类型的变量的时间表。
num = [10; 20; 30]; cat = categorical(["A"; "B"; "A"]); log = logical([1; 0; 1]); str = ["Text 1"; "Text 2"; "Text 3"]; TT = timetable(num,cat,log,str,Timestep=hours(2))
TT=3×4 timetable
Time num cat log str
____ ___ ___ _____ ________
0 hr 10 A true "Text 1"
2 hr 20 B false "Text 2"
4 hr 30 A true "Text 3"
将每个时间表变量调整为六个元素。resize 对每个变量的数据类型使用默认填充值。每种数据类型的默认填充值与 MATLAB® 在为表的最后一行之外赋值时创建的元素的值相同。
B1 = resize(TT,6)
B1=6×4 timetable
Time num cat log str
_____ ___ ___________ _____ _________
0 hr 10 A true "Text 1"
2 hr 20 B false "Text 2"
4 hr 30 A true "Text 3"
6 hr 0 <undefined> false <missing>
8 hr 0 <undefined> false <missing>
10 hr 0 <undefined> false <missing>
为要添加到每个时间表变量的元素指定自定义填充值。resize 会扩展行时间,因此无需为行时间指定填充值。
B2 = resize(TT,6,FillValue={mean(num),"C",1,""})B2=6×4 timetable
Time num cat log str
_____ ___ ___ _____ ________
0 hr 10 A true "Text 1"
2 hr 20 B false "Text 2"
4 hr 30 A true "Text 3"
6 hr 20 C true ""
8 hr 20 C true ""
10 hr 20 C true ""
创建一个向量,其中前几个和后几个元素是不需要的。通过从前导和尾部侧删除元素来调整向量大小。由于要删除的元素数是奇数,resize 从向量的尾部侧删除的元素比从前导侧删除的元素多一个。
A = [0.1 1 2 3 3 2 1 0 NaN];
B = resize(A,6,Side="both")B = 1×6
1 2 3 3 2 1
输入参数
输入数据,指定为向量、矩阵、多维数组、表、时间表、元胞数组或结构体数组。
注意
如果 A 是元胞数组,则 resize 更改整个数组的大小。它不会更改数组中每个元胞的大小。使用 cellfun 函数将 resize 应用于元胞数组中的每个元胞。
沿运算维度调整后的数据大小,指定为非负整数标量或非负整数向量。每个元素表示调整后的数据在运算维度中的大小。
如果
m大于A在运算维度中的大小,则resize添加元素。如果
m小于A在运算维度中的大小,则resize删除元素。
名称-值参数
以 Name1=Value1,...,NameN=ValueN 的形式指定可选参量对组,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但对各个参量对组的顺序没有要求。
示例: B = resize(A,m,Pattern="circular")
沿其运算的维度,指定为 "auto"、正整数标量或正整数向量。每个元素代表输入数据的一个维度。
如果 Dimension 是 "auto",则运算维度取决于输入参量:
如果
m是标量且A是数组,则运算维度是其大小不等于 1 的第一个维度。如果
m是向量,则运算维度是1:numel(m)。如果
A是表或时间表且resize正在添加元素,则运算维度是1,并且运算对每个表或时间表变量分别进行。如果
A是表或时间表且resize正在删除元素,则运算维度是1或[1 2],具体取决于m中的元素数。
添加元素的填充值,指定为标量、元胞数组或标量结构体。
每个类的默认填充值与 MATLAB® 在向量末尾之外赋值时创建的元素值相同。例如,数值输入数据的默认填充值为 0。
如果
A是数组,则标量FillValue指示在调整大小期间添加到A的所有元素的值。如果
A是表或时间表,则元胞数组FillValue指示添加到每个表或时间表变量的元素的不同填充值。元胞数组中的元胞数量必须与表或时间表变量的数量匹配。如果A是具有行名称的表,则resize使用默认行名称(如RowN)扩展行名称;它不使用FillValue调整行名称的大小。如果A是带行时间的时间表,则resize扩展行时间;它不使用FillValue调整行时间的大小。如果
A是结构体数组,则标量结构体FillValue指示输入数据中每个字段的不同填充值。FillValue中的字段数量和名称必须与输入数据中的字段数量和名称匹配。
如果指定 FillValue,则无法指定 Pattern。
添加元素的模式,指定为表中的模式名称之一。该模式会重复进行,直到调整大小后的数据具有 m 大小。
如果
A是带行名称的表,则resize使用默认行名称(如RowN)扩展行名称;它不使用Pattern添加到行名称。如果
A是带行时间的时间表,则resize扩展行时间;它不使用Pattern添加到行时间。
如果指定 Pattern,则无法指定 FillValue。
下表列出了模式名称及其描述,以及用示例说明每个模式如何调整输入数据 A = [1 2 3] 的大小。
| 模式名称 | 描述 | 调整大小后的数据 |
|---|---|---|
"constant" | 使用由 A 的数据类型确定的默认值填充数据。 |
|
"edge" | 通过将前导和尾随端点复制为常量填充值来填充数据。 |
|
"circular" | 通过循环重复输入数据来填充数据。 |
|
"flip" | 通过对称翻转输入数据来填充数据。端点会被复制。 |
|
"reflect" | 通过反射输入数据来填充数据。端点不会被复制。 |
|
用于调整大小的输入数据的一侧,指定为以下值之一:
"trailing"- 用尾部元素填充A,或从A的尾部裁剪元素。"leading"- 用前导元素填充A,或裁剪A的前导元素。"both"- 在两侧调整A的大小。如果在运算维度中要添加或删除的元素数为偶数,则在A的尾部和前导侧均匀地填充或裁剪元素。如果在运算维度中要添加或删除的元素数为奇数,则在A的尾部侧填充或裁剪剩余元素。
提示
扩展功能
用法说明和限制:
代码生成支持以下数据类型:
numeric、logical、char、struct、duration、table和timetable。代码生成不支持对此函数使用稀疏矩阵输入。
如果输入是
table或timetable,则输出表中变量的数目在代码生成期间必须为常量。所有字符串或字符向量输入在代码生成期间必须为常量。
输入参量
m在代码生成时必须为固定大小。仅
numeric、logical和char输入允许空值。struct输入不支持使用默认FillValue。不支持具有
userDataproperty的自定义值的时间表。如果使用
Dimension名称-值参量,它在代码生成时必须为常量。对于输入参量
A:如果不指定维度,代码生成器将沿输入数组中具有可变大小或其大小不为 1 的第一个维度进行运算。如果此维度在代码生成时具有可变大小且在运行时为 1,则可能发生运行时错误。为避免此错误,请指定维度。
resize 函数支持 GPU 数组输入,但有以下用法说明和限制:
输入数据
A必须为非稀疏数据。
有关详细信息,请参阅在 GPU 上运行 MATLAB 函数 (Parallel Computing Toolbox)。
此函数完全支持分布式数组。有关详细信息,请参阅使用分布式数组运行 MATLAB 函数 (Parallel Computing Toolbox)。
版本历史记录
在 R2023b 中推出
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)




