1

X対応するランダム値を使用して値を生成したいと思いYます。これらのランダム値は、関数Yを使用して作成したグラフからの範囲内にありますが、生成された値を特定の範囲内にとどめたいです。pchipX

私のコード:

samples=10
r=rand(samples,1)
Y=[0.93 0.94 0.95 0.96 0.97 0.98 0.99 1];
x=12.5:45:327.5;
angle=pchip(y,x,r);

出力:

angle = 

1.0e+03 *

   -0.1392
   -3.3718
   -3.4856
   -3.2264
   -0.5284
   -0.8114
   -2.2368
   -0.0804
   -2.9240
   -1.9510

値が -12.5-360 の間にあることを望みます。次のようなものを使用できると思います。

Y=[0.93 0.94 0.95 0.96 0.97 0.98 0.99 1];
x=12.5:45:327.5;
xi=-12.5:360;
angle=pchip(y,xi,x);

Xしかし、指定された値から必要な値を生成することはできませんY。私は次のことを試しましたが、うまくいきません:

samples=10
r=rand(samples,1)
Y=[0.93 0.94 0.95 0.96 0.97 0.98 0.99 1];
xi=-12.5:360;
x=12.5:45:327.5;
angle=pchip(y,xi,x,r);

mathworks pchip の記事と他の mathworks の記事を見てきましたが、私の問題を解決していないようで、このスタックオーバーフローの記事も見ました、これは必要なソリューションではありませんでした。

お時間を割いていただき、ありがとうございます。

編集 1 - もう少し情報

私の問題を解決するのはpchip、データを補間して最大値と最小値を設定するだけの関数を取得できる場合だと思います。TryHard が指摘したように、データは定義されたデータの外側で補間され、不安定性を引き起こしている可能性があります。上記で示したように、特定の範囲内で補間できることはわかっていますが、これを実行して、ベクトルXの値を指定して値を生成できるようにしたいと考えていますYr

4

1 に答える 1

1

rの値を の観測範囲に制限してみてくださいy:

samples=10;
y=[0.93 0.94 0.95 0.96 0.97 0.98 0.99 1];
x=12.5:45:327.5;

r=rand(samples,1)*(max(y)-min(y)) + min(y);
angle=pchip(y,x,r);
于 2013-08-01T11:32:35.163 に答える