我有一个大小为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
任何帮助将不胜感激。
我有一个大小为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
任何帮助将不胜感激。
这实际上取决于你打算如何“分析”你的数据。最简单的方法是使用一个循环:
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}=...
我认为你正在寻找'reshape'命令,它将允许你将你的向量重塑成矩阵(记住用零填充你的向量或截断以确保该矩阵将适合)。 – GameOfThrows
我试图重塑,它给出了一个错误,说数据不应该有小数,我使用的数据有点像0.2,0.1等等 – DashD
重塑做小数,也许你没有填充你的载体?看看丹的回答,他已涵盖:D – GameOfThrows