2016-05-12 19 views
2

のは、我々は次のようなデータを持っているとしましょう:スムーズなプロット

A1= [41.3251 
    18.2350 
    9.9891 
    36.1722 
    50.8702 
    32.1519 
    44.6284 
    60.0892 
    58.1297 
    34.7482 
    34.6447 
    6.7361 
    1.2960 
    1.9778 
    2.0422]; 

A2=[86.3924 
    86.4882 
    86.1717 
    85.8506 
    85.8634 
    86.1267 
    86.4304 
    86.6406 
    86.5022 
    86.1384 
    86.5500 
    86.2765 
    86.7044 
    86.8075 
    86.9007]; 

私はplot(A1,A2);を使用して上記のデータをプロットすると、私はこのグラフを得る:

enter image description here

ですグラフを立方体のように滑らかに見せる方法はありますか?

答えて

3

はいできます。キーポイントの間を補間できます。これは少しトリッキーが必要です。 MATLABのコマンドを使用してブラインドで補間を使用すると、独立軸(あなたのケースではx軸)が増加する必要があるため、機能しません。あなたは現在、少なくともあなたのデータでこれを行うことはできません。したがって、独立した軸を作成し、補間するために、A1(またはA2は等しいサイズ)の1から最大の要素にまたがるダミーのリストを作成して両方を独立して配列しなければなりません。解像度の細かい間隔でダミーリストを指定します。この細かい間隔は、プロットに導入したい新しい点の総数によって制御されます。これらのポイントはダミーリストの範囲内で定義されますが、新しいポイントの合計数を増やすと、各ポイント間の間隔は減少します。一般的なルールとして、より多くのポイントを追加するとスペースが少なくなるため、プロットはよりスムーズになります。一度それを行うと、最終的な値を一緒にプロットします。

実行するコードは次のとおりです。私たちは補間を行うためにinterp1を使用し、ほとんどの作業を行います。関数linspaceは、補間を容易にするために、ダミーリストに点の細かいグリッドを作成します。 Nは、プロットしたい点の総数です。私はこれを500にしました。元のデータを使って補間に500ポイントが使用されます。ポイントの総数を増やし(または減らして)、データの滑らかさにどのような影響があるかを見て試してみてください。

補間の方法として、Piecewise Cubic Hermite Interpolating Polynomialまたはpchipを使用します。これは、技術的な場合は、基本的に3次スプライン補間です。 A1A2がすでに作成されていると仮定すると:

%// Specify number of interpolating points 
N = 500; 

%// Specify dummy list of points 
D = 1 : numel(A1); 

%// Generate finer grid of points 
NN = linspace(1, numel(A1), N); 

%// Interpolate each set of points independently 
A1interp = interp1(D, A1, NN, 'pchip'); 
A2interp = interp1(D, A2, NN, 'pchip'); 

%// Plot the data 
plot(A1interp, A2interp); 

私は今、次のGET:

enter image description here

+0

それが働いています!どうもありがとうございます!それは私のために多くの仕事を保存しました! –

+0

@Jdaneよろしくお願いします:)幸運を! – rayryeng

関連する問題