2011-09-05 74 views
3

般的插值這是一個很小的事情,但現在已經被困擾了我一段時間,所以我想我應該讓羣衆解決開始:)「近鄰」,在MATLAB

我有時間戳矩陣和相應的邏輯值(或1/0),即

of = [-inf 0 10 15 190 inf; 1 0 0 1 1 0]' 

和另一個時間向量,例如

t = 0:0.1:1e3; 

或什麼的,你明白了吧:)

現在我該怎樣(讀:你會)間/推斷在of邏輯信息來源,因此在t時間戳相匹配,但與插值邏輯總是假設最後的或當前的值,而不是未來的值?

不知道如果是有道理的,但這裏是給oft2

t2 = [0 5 14 16] 
output = [0 0 10 15; 0 0 0 1]' 

其中output第一列是插中所使用的of的預期時間輸出。如果我使用interp1和「最近」的算法,它會給

interp1(of(:,1), of, t2, 'nearest') 
output = [0 10 15 15; 0 0 1 1]' 

這不正是我想要的。

回答

4

假設你的向量進行排序,你可以試試,這似乎與你的榜樣的工作,雖然我並沒有廣泛的測試吧:

of=[-inf 0 10 15 190 inf; 1 0 0 1 1 0]'; 
t2 = [0 5 14 16]; 
index=floor(interp1(of(:,1),(1:size(of,1))',t2')); 
output=of(index,:); 

希望它能幫助。

interp1使用的默認方法是linear,它適合您的條件,因爲您不希望「最近」的鄰居,但第一個較低或相同的鄰居(據我瞭解)。因此,內插時間戳索引的簡單截斷會給出結果。

+0

F ***我是多數民衆贊成的東西! :D 有些時候你可能只是迷失在複雜性中,我想這就是發生在這裏:) 此外,如果重新考慮問題,infs可以忽略,所以這將起作用。 – Juhl