2013-08-01 31 views
1

我想使用相應的隨機Y值生成X值,這些隨機值在Y的範圍內,從我使用pchip函數創建的圖形,但我希望生成的X值保持在一個特定的範圍。從給出Y值的使用pchip創建的圖形中查找X值。 MATLAB

我的代碼:

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 article和其他MathWorks的文章,但他們似乎並沒有解決我的問題,又看了看這個計算器文章How can I ask matlab to give me the value of y if I input the value of x?,這WASN所需的解決方案。

感謝您的時間和幫助,您可以提供。

編輯1 - 阿多一點信息

我認爲會解決我的問題是,如果我能得到pchip功能只是爲了我的內插數據之間設置點最大值和最小值。正如TryHard所指出的那樣,數據可能被插值在已定義的數據之外導致不穩定性。 我知道我可以在一定範圍內插正如我上面證實,但我希望能夠做到這一點,併產生X值給出的Y值矢量r

+0

在你最後的代碼片段,使用'角= pchip(X,Y,XI);'對我的作品......究竟是什麼錯的結果呢?你確實意識到'x'必須在參數中的''y之前? – Dan

+0

我最好的猜測是你正在應用一個插值函數來*推斷*:注意值r> Y。這可能導致不穩定。你想從你的(x,y)數據推斷嗎?也許如果你能更清楚地解釋你的總體目標? –

+0

@Dan是使用'angle = pchip(x,Y,xi);'工作正常,但不會給我輸出我需要,因爲我希望它給出一個樣本結果大小'r',如我的第一個代碼段所示。另外我還按照我需要的順序編寫了'X'和'Y',以獲得正確的結果。 – user2519890

回答

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); 
相關問題