2013-04-25 94 views
2

我有兩列數據。第一列是時間,第二列是時間的函數。但是有些時間值會丟失,所以函數值。我不知道丟失行的索引(數據量太大)。例如,我有這樣的:Matlab:可擴展陣列,丟失數據

t x+w 
2t 2x+w 
3t 3x+w 
6t 6x+w 
7t 7x+w 

但是,它應該是這樣的:

t x+w 
2t 2x+w 
3t 3x+w 
4t 4x 
5t 5x 
6t 6x+w 
7t 7x+w 

我要展開的時間序列,並添加相應的函數值。實際上f(t)是隨機的,但具有線性增長的確定性行爲。因此,如果我在數千中增加兩個值,那並不重要。那麼我怎樣才能在Matlab中做到這一點?

對不起,我的英文。我希望我能解釋一下自己。 謝謝。

回答

3

如果你的數據是這樣的:

t = [1 2 3 6 7]; 
x = 2; 
w = 10; 
X = t*x + w; 

現在你可以interpolate得到缺少的X值:

ti = 1:7; 
Xi = interp1(t, X, ti); 

,或者如果你說你有這樣的:

t = [1 2 3 6 7]; 
X = rand(size(t)); 

然後填寫隨機值:

Xi(t) = X; %Space out the origianl random value according to t 
Xi(setdiff(1:7,t)) = rand() %Find the missing vlaues using setdiff and replace them with new random values 
ti = 1:7; 
+1

非常感謝。第一個將工作,我猜。 – newzad 2013-04-25 07:35:47

+0

沒問題,歡迎來到SO。如果它是正確的,請點擊答案右上角的勾號來標記。 – Dan 2013-04-25 07:37:02