Main Content

animationToFrame

フレームの構造体をアニメーション オブジェクトから返す

説明

frames = animationToFrame は、フレームの構造体配列をアニメーション オブジェクトから返します。アニメーション オブジェクトは関数 fanimator を使用して作成しなければなりません。

frames = animationToFrame(fig) は、フレームの構造体配列を Figure fig のアニメーション オブジェクトから返します。

frames = animationToFrame(___,Name,Value) は指定された Name,Value のペアの引数を使用します。このオプションは、前述の構文のすべての入力引数の組み合わせで使用できます。

すべて折りたたむ

移動する円のアニメーションを作成して、アニメーションの特定のフレームを返します。

まず、2 つのシンボリック変数 t および x を作成します。変数 t はアニメーションの時間パラメーターを定義します。t を使用して円の中心を (t,1) に設定し、x を使用して [-pi pi] の範囲内で円の周囲長をパラメーター化します。fanimatorを使用して、円のアニメーション オブジェクトを作成します。x 軸と y 軸が同じ長さになるように設定します。

syms t x
fanimator(@fplot,cos(x)+t,sin(x)+1,[-pi pi])
axis equal

既定では、fanimator は、t の 0 から 10 までの範囲で、単位時間あたり 10 フレームを生成してアニメーション オブジェクトを生成します。既定のアニメーション オブジェクトには合計 101 のフレームが含まれます。コマンドplayAnimationを使用してアニメーションを再生します。

次に、animationToFrame を使用して、アニメーション オブジェクトからフレームの構造体配列を返します。

frames = animationToFrame

frames=1×101 struct array with fields:
    cdata
    colormap

frames 構造体には 2 つのフィールドがあります。cdata フィールドは uint8 値の配列としてイメージ データを格納します。

関数imshowを使用してアニメーション フレームを再構築します。たとえば、アニメーションの 50 番目のフレームと最後のフレームを表示します。

imshow(frames(50).cdata)

imshow(frames(101).cdata)

移動する円のアニメーション オブジェクトとタイマー アニメーション オブジェクトを作成します。生成されたアニメーション フレームを逆の順序で返します。

まず、2 つのシンボリック変数 t および x を作成します。変数 t はアニメーションの時間パラメーターを定義します。アニメーションの Figure ウィンドウを作成します。

syms t x
fig1 = figure;

fanimatorを使用して、円のアニメーション オブジェクトを作成します。t を使用して円の中心を (t,1) に設定し、x を使用して [-pi pi] の範囲内で円の周囲長をパラメーター化します。x 軸と y 軸が同じ長さになるように設定します。

fanimator(@fplot,cos(x)+t,sin(x)+1,[-pi pi])
axis equal

次に、関数textを使用して、経過時間をカウントするテキストを追加します。num2strを使用して時間パラメーターを文字列に変換します。

hold on
fanimator(@(t) text(8,3,"Timer: "+num2str(t,2)))
hold off

既定では、fanimator を使用すると、単位時間あたりのフレーム数を 10 として t の範囲が 0 から 10 までのストップモーション フレームが作成されます。既定のアニメーション オブジェクトには合計 101 のフレームが含まれます。コマンドplayAnimationを使用してアニメーションを再生します。

次に、animationToFrame を使用して、Figure fig のアニメーションからフレームの構造体配列を返します。'Backwards' オプションを true に設定することで、アニメーション フレームを逆の順序で返します。単位時間あたりのフレーム レートを 2 に設定して、合計 21 のフレームを返します。

frames = animationToFrame(fig1,'Backwards',true,'FrameRate',2)

frames=1×21 struct array with fields:
    cdata
    colormap

frames 構造体には 2 つのフィールドがあります。cdata フィールドは uint8 値の配列としてイメージ データを格納します。

関数imshowを使用してアニメーション フレームを再構築します。たとえば、新しい Figure ウィンドウでアニメーションの最初のフレームと 11 番目のフレームを表示します。

fig2 = figure;
imshow(frames(1).cdata)

imshow(frames(11).cdata)

入力引数

すべて折りたたむ

ターゲット Figure。Figure オブジェクトとして指定します。Figure オブジェクトの詳細については、figure を参照してください。

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名、Value は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は関係ありません。

R2021a より前では、コンマを使用して名前と値の各ペアを区切り、Name を引用符で囲みます。

例: 'Backwards',true,'AnimationRange',[-2 5]

アニメーションの時間パラメーターの範囲。2 要素の行ベクトルとして指定します。2 要素は増加する実数値でなければなりません。

例: [-2 4.5]

フレーム レート。正の値で指定します。フレーム レートは、アニメーション フレームを構造体配列として返す場合の単位時間あたりのフレーム数を定義します。

例: 20

逆方向オプション。logical 値 (boolean) として指定します。true を指定した場合、関数はアニメーション フレームを逆方向、つまり逆の順序で返します。

例: true

出力引数

すべて折りたたむ

アニメーション フレーム。次の 2 つのフィールドがある構造体配列として返されます。

  • cdatauint8 値の配列として格納されるイメージ データ。イメージ データ配列のサイズは画面の解像度により異なります。

  • colormap — カラーマップ。トゥルーカラー システムでは、このフィールドは空です。

関数 animationToFrame は、アニメーション フレームの構造体を関数 getframe によって返される出力と同じ形式で返します。

バージョン履歴

R2019a で導入