2016-04-25 218 views
0

我有一個大小爲11490x1的數據集。每0.25秒記錄一次數據(即4hz)。所以,1秒就佔了4個數據點。這裏的目標是每3秒進一步創建子集,這意味着我想每3秒查看一次數據並分析它。例如:如果我有[1 2 3 4 5 6 8 2 4 2 4 3 2 4 2 5 2 5 24 2 5 1 5 1]等數據,我希望有一個子集[1 2 3 4 5 6 8 2 4 2 4 3]等等...將數據集劃分爲大小爲n的分箱matlab

任何幫助將不勝感激。

+1

我認爲你正在尋找'reshape'命令,它將允許你將你的向量重塑成矩陣(記住用零填充你的向量或截斷以確保該矩陣將適合)。 – GameOfThrows

+0

我試圖重塑,它給出了一個錯誤,說數據不應該有小數,我使用的數據有點像0.2,0.1等等 – DashD

+0

重塑做小數,也許你沒有填充你的載體?看看丹的回答,他已涵蓋:D – GameOfThrows

回答

2

這實際上取決於你打算如何「分析」你的數據。最簡單的方法是使用一個循環:

n = 4*3; 
breaks = 0:n:numel(data) 
for i = 1:numel(breaks)-1 
    sub = data(breaks(i)+1:breaks(i+1)); 
    %// do analysis 
    %// OR sub{i} = data(breaks(i)+1:breaks(i+1)); 
end 

一個量化的方法可以使用reshape(data,[],12)填充data後使mod(numel(data),12)==0

的第三種方式可能會打破你的矩陣成使用mat2cell或在單元陣列一個for循環像上面,而不是sub=...寧願使用sub{i}=...

+0

是否有一個原因輸出小尺寸爲1x13?當我試圖使用索引爲子它運行在一個錯誤。我在for循環中使用了sub(1,i) – DashD

+0

編輯過的版本給出了正確的索引,現在,代碼覆蓋了sub的每個值,每次如何保存輸出'sub'? – DashD

+0

如前所述,使用'sub {i} = ...'或使用'reshape'而不是循環。注意我再次編輯循環,以便你可以調用'sub {i} = ...'而不是'sub {i-1} = ...' – Dan

相關問題