2013-01-11 41 views
2

我有兩個數組 - X點和Y點。 X數組有一些空格(例如[0 1 2 6 7 8]),而Y數組僅包含Xes的值。我從小波變換中得到了這個數組作爲局部最大值。我可以用plot(X,Y)在Matlab中從X和Y的數組中獲取列表中的Y的列表

現在我想在linspace上得到Y - Y必須包含從0到8的任何X的值。我想要有與之前的plot(X, Y)相同的圖plot(Y)

我該怎麼做?

回答

2

看起來要進行插值

xPts = [0 1 2 6 7 8]; 
yPts = ... 

xPlot = 0:1:8; 
yPlot = interp1(xPts,yPts,xPlot,'cubic') 

plot(xPlot,yPlot) 

檢查the documentation for interp1針對不同插值方案。

如果有重複的x值,你可以平均對應的y值

xPtsRep = [0 0 1 2 6 7 7 8] 
    yPtsRep = ... 

    [xPts,~,xIdx] = unique(xPtsRep); 
    yPts = accumarray(xIdx,yPtsRep,[],@mean); 
+0

這正是我想要的,但我遇到了一個問題 - 我的兩個X矢量有一些重複的值,我得到關於'stricktly monotonic increase'矢量的錯誤。在我的情況下,矢量正在增加,但不是嚴格的。我能用這個做什麼? – skayred

+0

@skayred:你可以例如平均對應於重複x條目的y值。 – Jonas