2013-05-03 81 views
1

synchronize()函數只需要2個時間序列參數。如果您需要同步兩個以上的時間序列,那麼標準程序是什麼?我嘗試將同步時間序列1和2的輸出之一與時間序列3同步,但結果未同步(例如,長度相同)(如下所示),因爲它只與時間數據的範圍有關:同步多個時間序列

% Create data set 1 
t1 = rand(10,1); 
data1=rand(10,1); 
ts1=timeseries(data1,t1); 

% Create data set 2 
t2 = rand(8,1); 
data2=rand(length(t2), 1); 
ts2=timeseries(data2,t2); 

% Create data set 3 
t3 = rand(5,1); 
data3=rand(length(t3), 1); 
ts3=timeseries(data3,t3); 

% Sync 1 and 2 
[uniform_ts12_1 uniform_ts12_2] = synchronize(ts1,ts2,'Uniform','Interval',.1); 

% Sync 3 to one of the results of the (sync of 1 and 2) 
[uniform_ts13_1 uniform_ts13_3] = synchronize(uniform_ts12_1,ts3,'Uniform','Interval',.1); 

disp('New sizes:') 
length(uniform_ts12_1.Data) 
length(uniform_ts12_2.Data) 
length(uniform_ts13_1.Data) 
length(uniform_ts13_3.Data) 

任何人都可以提出如何同步3個時間序列,使他們都在一天結束時具有相同的時間數據?

編輯:

的問題是,uniform_ts12_1,uniform_ts12_2,uniform_ts13_1,和長度(uniform_ts13的長度是不相同的它的內部同步2有1個,但這時如果3是外(或孔)的它將它們同步到較小的一個(3),它現在與1和2之間的同步長度不同。

+0

您目前的方法失敗的方式是什麼? – wakjah 2013-05-03 20:46:31

+0

uniform_ts12_1,uniform_ts12_2,uniform_ts13_1和length(uniform_ts13)的長度不一樣,它將2與1同步,但如果3在2的邊界之外(或在內部),則它將它們同步到較小的一個(3 ),它現在與1和2之間的同步長度不相同。 – 2013-05-04 02:30:56

回答

1

您需要將所有可能的對同步,每次使用同步時間序列。我認爲這是簡化,如果你繼續前進,並修改時間序列「你在同步的地方,所以你不必跟蹤通過哪些值。只需保持3個時間序列,因爲它們每個都只是修改你需要對它們全部進行排列,以便所有時間序列對都被同步到一起:

>> [ts1 ts2] = synchronize(ts1, ts2, 'Union'); 
>> [ts1 ts3] = synchronize(ts1, ts3, 'Union'); 
>> [ts2 ts3] = synchronize(ts2, ts3, 'Union'); 
>> all(ts1.Time == ts2.Time) 

ans = 

    1 

>> all(ts1.Time == ts3.Time) 

ans = 

1 

>> 

希望幫助!