resize
Description
resizes B
= resize(A
,m
)A
to size m
by adding elements to or removing
elements from the trailing side of A
. For example, if
m
is a scalar:
If
A
is a vector, thenresize(A,m)
pads or trimsA
to lengthm
.If
A
is a matrix, table, or timetable, thenresize(A,m)
pads or trimsA
to havem
rows.If
A
is a multidimensional array, thenresize(A,m)
pads or trimsA
to the size specified bym
along the first dimension whose size does not equal 1.
If m
is a vector, then each element in m
represents the size of the corresponding dimension in B
.
specifies additional parameters for resizing using one or more name-value arguments. For
example, B
= resize(A
,m
,Name=Value
)resize(A,m,Pattern="circular")
, where m
is
greater than the size of A
in the operating dimension, resizes by
repeating the input data circularly.
Examples
Resize Vector
Create a four-element column vector, and resize the vector to six elements. By default, the resize
function adds zeros to the trailing side of the numeric vector.
A = [1; 3; 5; 7]; B1 = resize(A,6)
B1 = 6×1
1
3
5
7
0
0
Resize the vector to two elements. By default, resize
removes elements from the trailing side.
B2 = resize(A,2)
B2 = 2×1
1
3
Match Length of Another Vector
Create three vectors with different lengths.
A1 = [2; 8; 3]; A2 = [9; 4; 6; 2; 7]; A3 = [9; 2; 6; 1; 9; 3];
Determine the length of the second vector.
m = length(A2)
m = 5
Resize the first and third vectors to match the length of the second vector. resize
adds elements to the end of A1
and removes an element from the end of 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
You can concatenate vectors of the same length. Create a matrix using the resized vectors.
C = [B1 A2 B3]
C = 5×3
2 9 9
8 4 2
3 6 6
0 2 1
0 7 9
You can also resize data using the paddata
and trimdata
functions. Use the paddata
function to resize the vector shorter than the target length, and use the trimdata
function to resize the vector longer than the target length.
D1 = paddata(A1,m)
D1 = 5×1
2
8
3
0
0
D3 = trimdata(A3,m)
D3 = 5×1
9
2
6
1
9
Resize Matrix
Create a 3-by-3 matrix. Resize the columns to a length of 2 by removing one element from each column. Resize the rows to a length of 9 by reflecting the data in each row until the row contains nine elements. Pattern
applies only to the dimension for which resize
adds elements.
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
Add Array Page
Create a 3-by-3 matrix as the first page in a 3-D array. Add a second page to the array by resizing along the third dimension.
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
Specify Fill Values for Table Variables
Create a timetable with variables of different data types.
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 each timetable variable to six elements. resize
uses the default fill value for the data type of each variable. The default fill value for each data type is the same as the value of elements that MATLAB® creates when assigning a value beyond the last row of the table.
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>
Specify a custom fill value for the elements to add to each timetable variable. resize
extends the row times, so you do not need to specify a fill value for the row times.
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 ""
Trim Both Sides of Vector
Create a vector in which the first few and last few elements are unneeded. Resize the vector by removing elements from the leading and trailing sides. Because the number of elements to remove is odd, resize
removes one more element from the trailing side of the vector than the leading side.
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
Input Arguments
A
— Input data
vector | matrix | multidimensional array | table | timetable | cell array | structure array
Input data, specified as a vector, matrix, multidimensional array, table, timetable, cell array, or structure array.
Note
If A
is a cell array, then resize
changes the size of the entire array. It does not change the size of each cell in
the array. Use the cellfun
function to apply
resize
to each cell in a cell array.
m
— Size of resized data along operating dimension
nonnegative integer scalar | vector of nonnegative integers
Size of resized data along operating dimension, specified as a nonnegative integer scalar or vector of nonnegative integers. Each element represents the size of the resized data in an operating dimension.
If
m
is greater than the size ofA
in the operating dimension, thenresize
adds elements.If
m
is less than the size ofA
in the operating dimension, thenresize
removes elements.
Name-Value Arguments
Specify optional pairs of arguments as
Name1=Value1,...,NameN=ValueN
, where Name
is
the argument name and Value
is the corresponding value.
Name-value arguments must appear after other arguments, but the order of the
pairs does not matter.
Example: B = resize(A,m,Pattern="circular")
Dimension
— Dimensions to operate along
"auto"
(default) | positive integer scalar | vector of positive integers
Dimensions to operate along, specified as "auto"
, a positive
integer scalar, or a vector of positive integers. Each element represents a dimension
of the input data.
If Dimension
is "auto"
, then the operating
dimension depends on the input arguments:
If
m
is a scalar andA
is an array, then the operating dimension is the first dimension whose size does not equal 1.If
m
is a vector, then the operating dimensions are1:numel(m)
.If
A
is a table or timetable andresize
is adding elements, then the operating dimension is1
, and operation is along each table or timetable variable separately.If
A
is a table or timetable andresize
is removing elements, then the operating dimension is1
or[1 2]
, depending on the number of elements inm
.
FillValue
— Fill value
[]
(default) | scalar | cell array | scalar structure
Fill value for added elements, specified as a scalar, cell array, or scalar structure.
The default fill value for each class is the same as the value of elements that MATLAB® creates when assigning a value past the end of a vector. For example, the default fill value for numeric input data is 0.
If
A
is an array, then a scalarFillValue
indicates the value for all elements added toA
during resizing.If
A
is a table or timetable, then a cell arrayFillValue
indicates a different fill value for elements added to each table or timetable variable. The number of cells in the cell array must match the number of table or timetable variables. IfA
is a table with row names, thenresize
extends the row names with the default row name, such asRowN
; it does not resize the row names usingFillValue
. IfA
is a timetable with row times, thenresize
extends the row times; it does not resize the row times usingFillValue
.If
A
is a structure array, then a scalar structureFillValue
indicates a different fill value for each field in the input data. The number and names of fields inFillValue
must match the number and names of fields in the input data.
If you specify FillValue
, you cannot specify
Pattern
.
Pattern
— Pattern for adding elements
"constant"
(default) | "edge"
| "circular"
| "flip"
| "reflect"
Pattern for adding elements, specified as one of the pattern names in the table.
The pattern is repeated until the resized data has size m
.
If
A
is a table with row names, thenresize
extends the row names with the default row name, such asRowN
; it does not add to the row names usingPattern
.If
A
is a timetable with row times, thenresize
extends the row times; it does not add to the row times usingPattern
.
If you specify Pattern
, you cannot specify
FillValue
.
This table lists the pattern names with a description and a sample of how each
pattern resizes the input data A = [1 2 3]
.
Pattern Name | Description | Resized Data |
---|---|---|
"constant" | Pad data with the default value determined by the data type of
A . |
|
"edge" | Pad data by replicating the leading and trailing endpoints as constant fill values. |
|
"circular" | Pad data by repeating the input data circularly. |
|
"flip" | Pad data by flipping the input data symmetrically. Endpoints are duplicated. |
|
"reflect" | Pad data by reflecting the input data. Endpoints are not duplicated. |
|
Side
— Side of input data for resizing
"trailing"
(default) | "leading"
| "both"
Side of input data for resizing, specified as one of these values:
"trailing"
— PadA
with trailing elements, or trim the trailing elements ofA
."leading"
— PadA
with leading elements, or trim the leading elements ofA
."both"
— ResizeA
on both sides. If the number of elements to add or remove in the operating dimension is even, then pad or trim the trailing and leading sides ofA
evenly. If the number of elements to add or remove in the operating dimension is odd, then pad or trim the remaining element on the trailing side ofA
.
Tips
resize
returns resized data with a size that respects the specified sizes inm
.resize
is recommended if you require resized data that matches the target size. If you want only to add elements to your data, consider using thepaddata
function, which does not trim data. If you want only to remove elements from your data, consider using thetrimdata
function, which does not pad with additional data.The
resize
function adds or removes elements from the input data. To rearrange existing elements, use thereshape
function.
Extended Capabilities
C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™. (since R2024b)
Usage notes and limitations:
Code generation supports these:
numeric
,logical
,char
,struct
,duration
,table
, andtimetable
.Sparse inputs are not supported.
If the input is a
table
ortimetable
, then the number of variables in the output table must remain constant during code generation.All string or character vector inputs must be constant during code generation.
The input argument
m
must have a fixed size.Empty values are allowed only for
numeric
,logical
, andchar
inputs.Using a default
FillValue
is not supported forstruct
inputs.Timetables with custom values for the
userDataproperty
are not supported.If you specify
dim
, then it must be a constant.See Variable-Sizing Restrictions for Code Generation of Toolbox Functions (MATLAB Coder).
GPU Arrays
Accelerate code by running on a graphics processing unit (GPU) using Parallel Computing Toolbox™. (since R2024a)
The resize
function
fully supports GPU arrays. To run the function on a GPU, specify the input data as a gpuArray
(Parallel Computing Toolbox). For more information, see Run MATLAB Functions on a GPU (Parallel Computing Toolbox).
Distributed Arrays
Partition large arrays across the combined memory of your cluster using Parallel Computing Toolbox™. (since R2024a)
This function fully supports distributed arrays. For more information, see Run MATLAB Functions with Distributed Arrays (Parallel Computing Toolbox).
Version History
Introduced in 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.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)