Main Content

coder.resize

调整 coder.Type 对象的大小

说明

示例

t_out = coder.resize(t,sz)t 的大小调整为 sz

示例

t_out = coder.resize(t,sz,variable_dims) 返回 coder.Type t 的修改副本,其大小(上界)为 sz,变量维度为 variable_dims。如果 variable_dimssz 是标量,该函数会将这些标量应用于 t 的所有维度。默认情况下,variable_dims 不应用于 sz01(表示固定)的维度。要覆盖此默认值并允许大小为 01 的维度改变,请将 uniform 参量设置为 true。对于大小为 inf 的维度,coder.resize 函数会忽略 variable_dims,因为这些维度被定义为可变大小维度。如果 t 是由类型组成的元胞数组,则 coder.resize 会调整元胞数组中所有元素的大小。

示例

t_out = coder.resize(t,[],variable_dims) 允许 variable_dims 指定的 t 的维度为可变维度,同时保持 t 的大小不变。

示例

t_out = coder.resize(___,Name=Value) 支持上述语法中的输入参量,且可使用一个或多个名称-值参量指定用于调整大小的选项。例如,要以递归方式调整 tt 中所有类型的大小,请将 recursive 设置为 true

示例

全部折叠

使用 coder.typeof 创建一个固定大小的 3x3 数组。

T = coder.typeof(ones(3,3)) 
T = 

coder.PrimitiveType
   3×3 double

T 更改为无界可变大小数组。代码生成器使用冒号前缀 (:) 来表示可变大小维度。

T = coder.resize(T,inf)           
T = 

coder.PrimitiveType
   :inf×:inf double

使用 coder.typeof 创建一个固定大小的 3x3 数组。

T = coder.typeof(ones(3,3))     
T = 

coder.PrimitiveType
   3×3 double

T 更改为有界可变大小数组,其上界为 45。代码生成器使用冒号前缀 (:) 来表示可变大小维度。

T = coder.resize(T,[4 5],true)           
T = 

coder.PrimitiveType
   :4×:5 double

使用 coder.typeof 创建一个固定大小的 3x3x3x3 数组。

T = coder.typeof(ones(3,3,3,3))
T = 

coder.PrimitiveType
   3×3×3×3 double

修改 T,使第一个和第四个维度的大小可变,而第二个和第三个维度的大小保持不变。代码生成器使用冒号前缀 (:) 来表示可变大小维度。

coder.resize(T,[],[true false false true])
ans = 

coder.PrimitiveType
   :3×3×3×:3 double

创建一个 1x1 struct,其中包含两个字段:f1(一个 3x3 数组)和 f2(一个 4x4 数组)。

T = coder.typeof(struct('f1',zeros(3,3),'f2',ones(4,4))) 
T = 

coder.StructType
   1×1 struct
      f1: 3×3 double
      f2: 4×4 double

以递归方式更改 T,将 T 的所有字段更改为 5x5 数组。

coder.resize(T,[5,5],recursive=true))   
ans = 

coder.StructType
   5×5 struct
      a: 5×5 double
      b: 5×5 double

使用 uniform=true 选项强制代码生成器将大小为 01 的维度(默认情况下是固定的)视为可变大小。

使用 coder.typeof 创建一个固定大小的 3x1x4 数组,并强制代码生成器允许所有维度的大小不同。代码生成器使用冒号前缀 (:) 来表示可变大小维度。

T = coder.typeof(ones(3,1,4));
T = coder.resize(T,[],true,uniform=true)
T = 

coder.PrimitiveType
   :3×:1×:4 double

使用 sizelimits=[min max] 选项设置数组维度的上界。

使用 coder.typeof 创建一个固定大小的 5x10x20 数组。

T = coder.typeof(ones(5,10,20))
T = 

coder.PrimitiveType
   5×10×20 double

调整 T 的大小,将 sizelimits 的最小值设置为 7,最大值设置为 15coder.resize 不修改大小小于 7 的维度,将大小在 7 到 15 之间的维度设置为有界可变大小,将大小大于 15 的维度设置为无界。代码生成器使用冒号前缀 (:) 来表示可变大小维度。

T = coder.resize(T,[],sizelimits=[7,15])
T = 

coder.PrimitiveType
   5×:10×:inf double

输入参数

全部折叠

要调整大小的对象,指定为 coder.Type 对象。如果 tcoder.CellType 对象,则 coder.CellType 对象必须为同构对象。

示例: coder.resize(T,inf);

数据类型: coder.CellType | coder.ClassType | coder.Constant | coder.EnumType | coder.FiType | coder.OutputType | coder.PrimitiveType | coder.StructType

coder.Type 对象的新大小,指定为整数标量或由整数组成的行向量。

示例: coder.resize(T,[3,4]);

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

coder.Type 对象的可变维度,指定为逻辑值标量或由逻辑值组成的行向量。如果 variable_dims 是标量,则 variable_dims 适用于 coder.Type 对象的所有维度。

示例: coder.resize(T,[4,5],[true false]);

数据类型: logical

名称-值参数

将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量后,但参量对组的顺序无关紧要。

示例: coder.resize(T,[5,5],recursive=true)

以递归方式调整 coder.Type 对象及其中包含的所有类型的大小,指定为 falsetrue

数据类型: logical

强制 coder.Type 对象的所有维度为可变大小,指定为 falsetrue。如果未将 uniform 设置为 true,则大小为 01 的维度将保持固定大小,即使 variable_dims 设置为 true 也是如此。但是,如果将 variable_dims 指定为非标量逻辑向量,则 uniform 设置将不起作用。

示例: coder.resize(T,[1,7],true,uniform=true)

数据类型: logical

coder.Type 对象的最小和最大维度,指定为由不超出两个整数值组成的行向量。

  • 如果 sizelimits 有两个元素,则这些值对应于 [min max],其中 max 必须大于或等于 min

  • 如果 sizelimits 只有一个元素,则 minmax 都设置为该值

对于大小为 scoder.Type 对象的每个维度:

  • 如果 s 大于或等于 max,代码生成器会将维度更改为无界可变大小 (:inf)

  • 如果 s 大于或等于 min 且小于 max,代码生成器会将维度更改为可变大小,其上界为 s (:s)

  • 如果 s 小于 min,则代码生成器不会修改维度大小

示例: coder.resize(T,[],sizelimits=[5,20])

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

输出参量

全部折叠

调整大小后的 coder.Type 对象

数据类型: coder.CellType | coder.ClassType | coder.Constant | coder.EnumType | coder.FiType | coder.OutputType | coder.PrimitiveType | coder.StructType

限制

  • 对于稀疏矩阵,coder.resize 删除可变大小维度的上界。

版本历史记录

在 R2011a 中推出