ドキュメンテーション センター

  • 評価版
  • 製品アップデート

離散データ グラフ

離散データのグラフを作成する関数

棒グラフと円グラフに加えて、特定な MATLAB® グラフィックス関数は離散データを適切に表示します。離散データは、一般的に、月ごとの交通事故や生産工程における生産品または欠陥品などを数えた数を表現します。ここでは、ステム プロットおよび階段状プロットを使って、このタイプのデータを表示する方法について説明します。離散データ グラフを生成する関数は、以下になります。

関数

説明

stem

y データの離散数列を x 軸からのステムとして表示します。

stem3

z データの離散数列を xy 平面からのステムとして表示します。

stairs

y データの離散数列を x 軸からの階段として表示します。

2 次元のステム プロット

ステム プロットは、各データ値にあるマーカー シンボルで終了するライン (ステム) としてデータを表示します。2 次元グラフでは、ステムは x 軸から伸びます。

関数 stem は 2 次元の離散列データを表示します。たとえば、関数 y=e-αtcosβt を次の値で評価すると、

alpha = .02; beta = .5; t = 0:4:200;
y = exp(-alpha*t).*cos(beta*t);

t の与えられた値のときに y の離散値のベクトルが得られます。ライン プロットは、データ点を直線で結んだものです。

plot(t,y)

同じ関数のステム プロットは、曲線上で離散点のみをプロットします。

stem(t,y)

x 軸と y 軸にラベルを加えます。

xlabel('Time in \musecs')
ylabel('Magnitude')

1 つだけ引数を指定する場合、サンプル数はその引数のもつ長さになります。この例では、サンプル数は t の関数で、51 要素を含みます。この長さが y の長さになります。

グラフのカスタマイズ

ステム プロットで使用するライン スタイル、マーカーのタイプ、色を指定することもできます。たとえば、文字列 '--sr' を加えると、破線 (--)、四角形のマーカー (s)、赤色 (r) になります。引数 'fill' は、マーカーの面を色付けます。

stem(t,y,'--sr','fill')

xy 軸の縦横比を 2:1 に設定すると、グラフの有用性が改善されます。pbaspect を使って、プロット ボックスの縦横比の設定をすることもできます。

pbaspect([2,1,1])

これは、PlotBoxApectRatio プロパティを直接設定することと同じです。

set(gca,'PlotBoxAspectRatio',[2,1,1])

ライン スタイルおよびマーカー タイプのリストについては、LineSpec を参照してください。

ステム プロットとライン プロットの組み合わせ

ある結果に到達した経緯を示すために、ステム プロットと同時に複数のプロットを表示すると便利な場合があります。たとえば、60 要素を線形間隔で配置したベクトルを作成し、2 つの関数 ab を定義します。

x = linspace(0,2*pi,60);
a = sin(x);
b = cos(x);

ステム プロットを作成して、2 つの関数の線形結合を示します。

stem_handles = stem(x,a+b);

ライン プロットとして ab を重ね合わせると、関数を可視化できます。2 つの曲線をプロットする前に、holdon にして、ステム プロットが表示されたままにします。

hold on
plot_handles = plot(x,a,'--r',x,b,'--g');
hold off

関数 legend を使って、グラフに注釈を付けることができます。legend に渡されたステムおよびプロット ハンドルは、ラベル付けするラインを識別します。ステム プロットは、2 つのラインで構成されています。一方のラインはマーカーを描画し、他方のラインは垂直ステムを描画します。凡例を作成するには、stem により返された、マーカー ラインを識別する最初のハンドルを使用します。

legend_handles = [stem_handles(1);plot_handles];
legend(legend_handles,'a + b','a = sin(x)','b = cos(x)')

Axes にラベルを付け、タイトルを作成して、グラフは完成です。

xlabel('Time in \musecs')
ylabel('Magnitude')
title('Linear Combination of Two Functions')

3 次元のステム プロット

stem3 は、xy 平面から伸びる 3 次元ステム プロットを表示します。1 つのベクトル引数のみをもつ場合、引数が列ベクトルか行ベクトルかに応じて、x = 1 または y = 1 の位置に 1 行のステムがプロットされます。stem3 は、2 次元表示では可視化できないデータを表示する目的で使用します。

例 - FFT の 3 次元ステム プロット

高速フーリエ変換は、複素平面上の単位円周上の点で計算されます。単位円周上でプロットを可視化することは有意義です。単位円を計算します。

th = (0:127)/128*2*pi;
x = cos(th);
y = sin(th);

そして、ステップ関数の周波数応答を計算します。次のコマンドは、

f = abs(fft(ones(10,1),128));

3 次元ステム プロットを使用してデータを表示し、塗りつぶしたダイヤモンド形のマーカーでステムを終端します。

stem3(x,y,f','d','fill')
view([-65 30])

グラフのラベル付け

次のステートメントでグラフにラベルを付けます。

xlabel('Real')
ylabel('Imaginary')
zlabel('Amplitude')
title('Magnitude Frequency Response')

表示方向を変更するには、マウスベースの 3 次元回転をオンにします。

rotate3d on

例 - ステム プロットとライン プロットの組み合わせ

3 次元ステム プロットは、多数のデータ点を出力せずに、離散関数を可視化する場合に有効です。たとえば、関数 stem3 を使用して、特定の定数値 s に対するラプラス変換基底関数 y=e-st を可視化します。

t = 0:.1:10;	% Time limits
s = 0.1+i;	% Spiral rate
y = exp(-s*t);	% Compute decaying exponential 

時間とともに増大する大きさとして t を使用して、高さが増す螺旋を描画し、ステムの頭の部分を結んでいくことで曲線を描画して定義を改良します。

stem3(real(y),imag(y),t)
hold on
plot3(real(y),imag(y),t,'r')
hold off
view(-39.5,62)

グラフのラベル付け

次のステートメントで Axes ラベルを挿入します。

xlabel('Real')
ylabel('Imaginary')
zlabel('Magnitude')

階段状プロット

階段状プロットは、一定区間の立ち上がりエッジとしてデータを表示します (すなわち、ゼロ次ホールド状態)。このタイプのプロットは、x(i)x(i+1) の間のすべての値に対して、一定の y 値でデータを保持します。ここで、ix データに対するインデックスです。このタイプのプロットは、デジタルにサンプリングしたデータシステムの時系列プロットを行うのに有効です。

例 - 関数の階段状プロット

時間とともに変化する関数 f を定義します。

alpha = 0.01;
beta = 0.5;
t = 0:10;
f = exp(-alpha*t).*sin(beta*t);

stairs を使って、関数を階段状プロットと線形内挿した関数として表示します。

stairs(t,f)
hold on
plot(t,f,'--*')
hold off 

最後に、グラフに注釈を付け加え、Axes の範囲を設定します。

label = 'Stairstep plot of e^{-(\alpha*t)} sin\beta*t';
text(0.5,-0.2,label,'FontSize',14)
xlabel('t = 0:10','FontSize',14)
axis([0 10 -1.2 1.2])

この情報は役に立ちましたか?