非單調函式的插值問題

2022-09-23 10:27:05 字數 1130 閱讀 5627

我在從非單調函式進行插值時遇到問題。

x=[34,35,36,37,38,39,41,42,43,44,45,46

]y=[0.33

0.166

0.25

0.33

0.50.58

0.66

0.66

0.50.58

0.80.66]

我希望能夠插入對應於 0.25 的 y 值的 x 值。

繪圖時(x,y)我可以看到有兩個點對應於 0.25 的 y 值,因此正常插值(使用interp1)不起作用。

error: "the grid vectors are not strictly monotonic increasing."

有沒有辦法插入兩個點然後計算它們的平均值,我找不到任何適合我的問題的東西

您可以先計算重複項的平均值,然後進行插值:

%test data

x=[34,35,36,37,38,39,41,42,43,44,45,46

];y=[0.33

0.166

0.25

0.33

0.50.58

0.66

0.66

0.50.58

0.80.66

];%sort values

[~,idx] =sort(y);

x =x(idx);

y =y(idx);

%use all values only once. **erage the values

y_unique =unique(y);

x_unique =zeros(size(y_unique));

for i = 1

:length(y_unique)

x_unique(i) = mean(x(y==y_unique(i)));

end%test

interp1(y_unique,x_unique,

0.33)

關於matlab:非單調插值,我們在stack overflow上找到乙個類似的問題:

matlab 插值函式

matlab中的插值函式為interp1,其呼叫格式為 yi interp1 x,y,xi,method 其中x,y為插值點,yi為在被插值點xi處的插值結果 x,y為向量,method 表示採用的插值方法,matlab提供的插值方法有幾種 method 是最鄰近插值,linear 線性插值 spl...

Matlab插值函式

x 0 2 pi y sin x xx 0 0.5 2 pi interp1對sin函式進行分段線性插值,呼叫interp1的時候,預設的是分段線性插值 y1 interp1 x,y,xx figure plot x,y,o xx,y1,r title 分段線性插值 臨近插值 y2 interp1 ...

插值查詢的問題

對於插值查詢的效率很高,但是我發現乙個問題,就是在不連續的情況下,找 arrarr之間的數時應該是返回 1,但是出現了堆疊溢位異常 以下是 public static void main string args int i insertvalue arr,0,arr.length 1,50 syst...