主要内容

paddata

通过添加元素来填充数据

自 R2023b 起

说明

B = paddata(A,m) 通过向 A 的尾部侧添加元素,将 A 填充到大小 m。例如,对于标量大小 m

  • 如果 A 是向量,则 paddata(A,m)A 填充到长度 m

  • 如果 A 是矩阵、表或时间表,则 paddata(A,m)A 填充为具有 m 行。

  • 如果 A 是多维数组,则 paddata(A,m)A 沿其大小不等于 1 的第一个维度填充为由 m 指定的大小。

如果 m 小于或等于 A 在运算维度上的大小,则 paddata 返回 A 的全部元素。

示例

B = paddata(A,m,Name=Value) 使用一个或多个名称-值参量指定用于填充的其他参数。例如,paddata(A,m,Pattern="circular") 通过循环重复输入数据进行填充。

示例

示例

全部折叠

创建一个四元素列向量,并将该向量填充到六个元素。默认情况下,paddata 函数向数值向量的尾部大小添加零。

A = [1; 3; 5; 7];
B = paddata(A,6)
B = 6×1

     1
     3
     5
     7
     0
     0

将一个行向量填充到六个元素。

A2 = [2 4 6 8];
B2 = paddata(A2,6)
B2 = 1×6

     2     4     6     8     0     0

创建两个长度不同的向量。

A1 = [2; 8; 3; 5];
A2 = [9; 4; 6; 2; 7; 7; 0];

确定较长向量的长度。

szA1 = size(A1,1);
szA2 = size(A2,1);
[m,idx] = max([szA1 szA2])
m = 
7
idx = 
2

填充较短向量以匹配较长向量的长度。

B1 = paddata(A1,m)
B1 = 7×1

     2
     8
     3
     5
     0
     0
     0

您可以串联具有相同长度的向量。使用这两个向量创建一个矩阵。

C = [B1 A2]
C = 7×2

     2     9
     8     4
     3     6
     5     2
     0     7
     0     7
     0     0

创建一个 3×3 矩阵。通过向每列添加一个元素,将列填充到长度为 4。通过向每行添加三个元素,将行填充到长度为 6。

A = [1 3 5; 2 4 6; 7 8 10]
A = 3×3

     1     3     5
     2     4     6
     7     8    10

B = paddata(A,[4 6])
B = 4×6

     1     3     5     0     0     0
     2     4     6     0     0     0
     7     8    10     0     0     0
     0     0     0     0     0     0

创建一个 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 = paddata(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"

填充每个时间表变量。paddata 对每个变量的数据类型使用默认填充值。每种数据类型的默认填充值与 MATLAB® 在为表的最后一行之外赋值时创建的元素的值相同。

B1 = paddata(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>

为要添加到每个时间表变量的元素指定自定义填充值。paddata 会扩展行时间,因此无需为行时间指定填充值。

B2 = paddata(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     ""      

创建一个列向量,并通过重复前导元素来填充该向量。

A = [1; 3; 5; 7];
B = paddata(A,7,Pattern="edge",Side="leading")
B = 7×1

     1
     1
     1
     1
     3
     5
     7

输入参数

全部折叠

输入数据,指定为向量、矩阵、多维数组、表、时间表、元胞数组或结构体数组。

注意

如果 A 是元胞数组,则 paddata 更改整个数组的大小。它不会更改数组中每个元胞的大小。使用 cellfun 函数将 paddata 应用于元胞数组中的每个元胞。

沿运算维度填充后的数据大小,指定为非负整数标量或非负整数向量。每个元素表示填充后的数据在运算维度中的大小。

  • 如果 m 大于 A 在运算维度中的大小,则 paddata 添加元素。

  • 如果 m 小于或等于 A 在运算维度上的大小,则 paddata 返回输入数据而不添加元素。

名称-值参数

全部折叠

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

示例: B = paddata(A,m,Pattern="circular")

沿其运算的维度,指定为 "auto"、正整数标量或正整数向量。每个元素代表输入数据的一个维度。

如果 Dimension"auto",则运算维度取决于输入参量:

  • 如果 m 是标量且 A 是数组,则运算维度是其大小不等于 1 的第一个维度。

  • 如果 m 是向量,则运算维度是 1:numel(m)

  • 如果 A 是表或时间表,则运算维度是 1,并且运算对每个表或时间表变量分别进行。

添加元素的填充值,指定为标量、元胞数组或标量结构体。

每个类的默认填充值与 MATLAB® 在向量末尾之外赋值时创建的元素值相同。例如,数值输入数据的默认填充值为 0。

  • 如果 A 是数组,则标量 FillValue 指示在填充期间添加到 A 的所有元素的值。

  • 如果 A 是表或时间表,则元胞数组 FillValue 指示添加到每个表或时间表变量的元素的不同填充值。元胞数组中的元胞数量必须与表或时间表变量的数量匹配。如果 A 是具有行名称的表,则 paddata 使用默认行名称(如 RowN)扩展行名称;它不使用 FillValue 填充行名称。如果 A 是带行时间的时间表,则 paddata 扩展行时间;它不使用 FillValue 填充行时间。

  • 如果 A 是结构体数组,则标量结构体 FillValue 指示输入数据中每个字段的不同填充值。FillValue 中的字段数量和名称必须与输入数据中的字段数量和名称匹配。

如果指定 FillValue,则无法指定 Pattern

添加元素的模式,指定为表中的模式名称之一。该模式会重复进行,直到调整大小后的数据具有 m 大小。

  • 如果 A 是带行名称的表,则 paddata 使用默认行名称(如 RowN)扩展行名称;它不使用 Pattern 添加到行名称。

  • 如果 A 是带行时间的时间表,则 paddata 扩展行时间;它不使用 Pattern 添加到行时间。

如果指定 Pattern,则无法指定 FillValue

下表列出了模式名称及其描述,以及用示例说明每个模式如何填充输入数据 A = [1 2 3]

模式名称描述 填充后的数据
"constant"使用由 A 的数据类型确定的默认值填充数据。

Sample of padding data using the "constant" pattern

"edge"通过将前导和尾随端点复制为常量填充值来填充数据。

Sample of padding data using the "edge" pattern

"circular"通过循环重复输入数据来填充数据。

Sample of padding data using the "circular" pattern

"flip"通过对称翻转输入数据来填充数据。端点会被复制。

Sample of padding data using the "clip" pattern

"reflect"通过反射输入数据来填充数据。端点不会被复制。

Sample of padding data using the "reflect" pattern

用于填充的输入数据的一侧,指定为以下值之一:

  • "trailing" - 用尾部元素填充 A

  • "leading" - 用前导元素填充 A

  • "both" - 在两侧填充 A。如果在运算维度中要添加的元素数为偶数,则在 A 的尾部和前导侧均匀地填充元素。如果在运算维度中要添加的元素数为奇数,则在 A 的尾部侧填充剩余元素。

提示

  • paddata 仅向输入数据添加元素。如果您不想从数据中删除元素并且不要求调整大小后的数据匹配目标大小,则推荐使用 paddata。如果您要求调整大小后的数据遵循 m 中的大小,则考虑使用 resize 函数,它也可以从您的数据中删除元素。

扩展功能

全部展开

版本历史记录

在 R2023b 中推出

另请参阅

| | | |