我在從非單調函式進行插值時遇到問題。
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 datax=[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...