3

我需要內插數據。爲浮點數我通常使用如何對分類數據進行插值

interp1(given_time,given_data,uniform_time) 

然而,在這種情況下,我的given_data是一個字符串數組細胞:

time=[1,5,18,30,40,42,47,54,64] 

season=[{'winter'},{'winter'},{'winter'}, {'spring'}, {'spring'}, {'spring'}, {'summer'}, {'summer'}, {'summer'} ] 

uniform_time=1:5:64 

uniform_season= ???? 

輸出的每個單元必須根據uniform_time

最接近的值的字符串

如何在matlab中實現它?

萬一uniform_time(i)正是之間time(j)time(k)和,的season(j)season(k)是可接受的任一值。

在上述情況下,我期望能獲得:

uniform_season= [{'winter'}, {'winter'}, {'winter'}, {'winter'}, {'winter'}, {'spring'}, {'spring'}, {'spring'}, {'spring/summer'}, {'summer'}, {'summer'}, {'summer'}, {'summer'}] 

通過{'spring/summer'}我的意思是要麼{'spring'}{'summer'}但不能同時喜歡{'spring/summer'}

new data: 1 6 11 16 21 26 31 36 41 46 51 56 61 
closest old data: 1 5 18 18 18 30 30 40 41/42 47 54 54 64 
string of old data: 'winter' 'winter' 'winter' 'winter' 'winter' 'spring' 'spring' 'spring' spring/summer' 'summer' 'summer' 'summer' 'summer' 
+0

可不可以給您所期望的輸出看起來像一個例子

我根據這個表來計算呢? – rlbond

+0

@rlbond查看我的更新。 – zahmati

+1

嘗試用像[[1,1,1,2,2,2,3,3,3]]這樣的數字的索引向量來替換季節(其他的'unique'輸出將會有所幫助),然後使用'interp1'與最近的鄰居標誌,並使用結果索引回'獨特'的第一個輸出# – Dan

回答

2

嘗試以下操作:

%// Inputs: 
time=[1,5,18,30,40,42,47,54,64] 
season=[{'winter'},{'winter'},{'winter'}, {'spring'}, {'spring'}, {'spring'}, {'summer'}, {'summer'}, {'summer'} ] 
uniform_time=1:5:64 

%// Change season to an ordinal list 
[season_unique,~,season_int] = unique(season, 'stable') 
idx = interp1(time, season_int, uniform_time, 'nearest-neighbour') %// Good chance you'll want to add the 'extrap' flag here as well 
season_unique(idx) 
+0

非常好..不知道'最近鄰居'存在。 :)我想知道它還不算太晚:P +1 –

相關問題