1

私は私の特定の問題の助けを探しています。

XYZデータから作成された等高線図があります。このプロットには、一方が他方よりも強い2つの広いピークが含まれています。

最も強いピークがY軸に位置合わせされると、各X値ですべてのYZ曲線のフィッティングを実行できます。私は通常、同じグラフにピークの中心をプロットするためにガウスフィットを行います。

場合によっては、同じフィッティングを実行する必要がありますが、Y軸方向に沿ってではなく(この場合、異なるX値ごとにYZスキャンをプロットするだけです)、別の任意の方向に沿って実行する必要があります。

今のところ、私が見つけた唯一の方法は次のとおりです。-等高線図をプロットし、最も強いピークの位置を見つけます-位置がY軸と整列していない場合は、すべてのデータを回転させて、等高線を再度プロットします-すべてのX値に対してYZガウスフィットを実行します-結果のXY位置を回転して元のプロットに戻します-XY位置を元の等高線プロットに線としてプロットします

これは非常に長く、大量のメモリを必要とします。もっとエレガントで速い方法があるかどうか知りたいのですが。

ご協力いただきありがとうございます

デビッド

4

1 に答える 1

0

フィットさせるために、任意の線に沿って(x、y、z)データからデータを抽出したいと思います。等高線図にはデータの一部のみが表示され、完全なz(x,y)データはimagescなどで表示できます。2点で定義された線に沿ったデータが必要だとします(x1,y1) -> (x2,y2)。直線の式によると、直線y=a*x+bの傾きはとaです。たとえば、次の輪郭で(x、y)座標を選択します。(y2-y1)/(x2-x1)b=y1-a*x1

データとエンドポイントを作成します。

m=peaks(100);
x1=11 ; x2=97;
y1=66; y2=40;

したがって、ラインパラメータは次のとおりです。

a=(y2-y1)/(x2-x1);
b=y1-a*x1;

行は次のとおりです。

x=x1:x2;
y=round(a*x+b);

線形インデックスを使用して適切な(x、y)要素を選択します。

ind=sub2ind(size(m),y,x)

プロット:

subplot(2,1,1)
contour(m,10); hold on
line([x1 x2],[y1 y2],'Color',[1 0 0]);

subplot(2,1,2)
plot(m(ind))

ここに画像の説明を入力してください

vec=m(ind)これで、を使用して関数を適合させることができます。

于 2013-03-19T05:18:31.280 に答える