メインコンテンツ

resize

要素の追加または削除によるデータのサイズ変更

R2023b 以降

説明

B = resize(A,m) は、A の末尾側に要素を追加または削除することで、A をサイズ m にサイズ変更します。たとえば、m がスカラーの場合、次のようになります。

  • A がベクトルの場合、resize(A,m)A を長さ m にパディングまたはトリミングします。

  • A が行列、table、または timetable の場合、resize(A,m)Am 行にパディングまたはトリミングします。

  • A が多次元配列である場合、resize(A,m) は、サイズが 1 でない最初の次元に沿って、m で指定されたサイズに A をパディングまたはトリミングします。

m がベクトルの場合、m の各要素は B の対応する次元のサイズを表します。

B = resize(A,m,Name=Value) は、名前と値の引数を 1 つ以上使用して、サイズ変更に関する追加のパラメーターを指定します。たとえば、resize(A,m,Pattern="circular") の場合、m が操作次元の A のサイズより大きいと、入力データを循環的に繰り返してサイズ変更します。

すべて折りたたむ

4 要素の列ベクトルを作成して、そのベクトルを 6 要素にサイズ変更します。既定で、resize 関数は数値ベクトルの末尾側にゼロをパディングします。

A = [1; 3; 5; 7];
B1 = resize(A,6)
B1 = 6×1

     1
     3
     5
     7
     0
     0

ベクトルを 2 要素にサイズ変更します。既定では、resize は末尾側の要素を削除します。

B2 = resize(A,2)
B2 = 2×1

     1
     3

異なる長さの 3 つのベクトルを作成します。

A1 = [2; 8; 3];
A2 = [9; 4; 6; 2; 7];
A3 = [9; 2; 6; 1; 9; 3];

2 番目のベクトルの長さを確認します。

m = length(A2)
m = 
5

1 番目と 3 番目のベクトルをサイズ変更して、2 番目のベクトルの長さに合わせます。resizeA1 の末尾に要素を追加し、A3 の末尾から要素を 1 つ削除します。

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 列の行列を作成します。各列から要素を 1 つ削除して、列の長さが 2 になるようにサイズ変更します。各行のデータを反映させて行に含まれる要素が 9 つになるまで繰り返し、行の長さが 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 列の行列を 3 次元配列の最初のページとして作成します。3 番目の次元に沿ってサイズ変更し、配列に 2 ページ目を追加します。

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

さまざまなデータ型の変数が存在する timetable を作成します。

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"

各 timetable 変数を 6 つの要素にサイズ変更します。resize は、各変数のデータ型に応じた既定の埋め込み値を使用します。各データ型の既定の埋め込み値は、table の最後の行を超えて値を代入するときに 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>

各 timetable 変数に追加する要素のカスタム埋め込み値を指定します。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 はベクトルの末尾側から先頭側よりも 1 つ多く要素を削除します。

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

入力引数

すべて折りたたむ

入力データ。ベクトル、行列、多次元配列、table、timetable、cell 配列、または構造体配列として指定します。

メモ

A が cell 配列である場合、resize は配列全体のサイズを変更します。配列内の各 cell のサイズは変更しません。cellfun 関数を使用して、cell 配列内の各 cell に 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 が table または timetable で、resize が要素を追加している場合、操作次元は 1 であり、演算は各 table 変数または timetable 変数に沿って個別に行われます。

  • A が table または timetable で、resize が要素を削除している場合、操作次元は m 内の要素の数に応じて 1 または [1 2] です。

追加された要素の埋め込み値。スカラー、cell 配列、またはスカラー構造体として指定します。

各クラスの既定の埋め込み値は、ベクトルの末尾を超えて値を代入するときに MATLAB® が作成する要素の値と同じです。たとえば、数値入力データの既定の埋め込み値は 0 です。

  • A が配列の場合、スカラー FillValue は、サイズ変更時に A に追加されるすべての要素の値を示します。

  • A が table または timetable の場合、cell 配列 FillValue は、各 table 変数または timetable 変数に追加される要素に対して、異なる埋め込み値を示します。cell 配列内の cell 数は、table 変数または timetable 変数の数と一致しなければなりません。A が行名をもつ table の場合、resizeRowN などの既定の行名で行名を拡張しますが、FillValue を使用して行名をサイズ変更することはありません。A が行時刻をもつ timetable の場合、resize は行時刻を拡張しますが、FillValue を使用して行時刻をサイズ変更することはありません。

  • A が構造体配列の場合、スカラー構造体 FillValue は、入力データ内の各フィールドの異なる埋め込み値を示します。FillValue のフィールド数とフィールド名は、入力データ内のフィールド数とフィールド名と一致しなければなりません。

FillValue を指定した場合、Pattern は指定できません。

要素を追加するためのパターン。次の表内のいずれかのパターン名として指定します。このパターンは、サイズ変更されたデータのサイズが m になるまで繰り返されます。

  • A が行名をもつ table の場合、resizeRowN などの既定の行名で行名を拡張しますが、Pattern を使用して行名に追加することはありません。

  • A が行時刻をもつ timetable の場合、resize は行時刻を拡張しますが、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 を末尾の要素でパディングするか、A の末尾の要素をトリミングします。

  • "leading"A を先頭の要素でパディングするか、A の先頭の要素をトリミングします。

  • "both" — 両側で A をサイズ変更します。操作次元で追加または削除する要素数が偶数の場合、A の末尾側と先頭側を均等にパディングまたはトリミングします。操作次元で追加または削除する要素数が奇数の場合、A の末尾側で残りの要素をパディングまたはトリミングします。

ヒント

  • resize は、m で指定されたサイズを考慮に入れたサイズで、サイズ変更されたデータを返します。ターゲット サイズに一致するサイズ変更されたデータが必要な場合、resize が推奨されます。データに要素を追加するだけの場合は、データをトリミングしない paddata 関数の使用を検討してください。データから要素を削除するだけの場合は、追加データでパディングしない trimdata 関数の使用を検討してください。

  • resize 関数は、入力データから要素を追加または削除します。既存の要素を再配置するには、reshape 関数を使用します。

拡張機能

すべて展開する

バージョン履歴

R2023b で導入