【发布时间】:2014-07-10 13:44:00
【问题描述】:
我从文本文件中导入了大量数据(超过 400,000 个数据点)。我需要将列分为长度为 7,000 的多个列。它已经按顺序排列,因此前 7,000 个数据点将保留在第一列,接下来的 7,000 个数据点将进入下一列,依此类推...
【问题讨论】:
-
好的,谢谢!
我从文本文件中导入了大量数据(超过 400,000 个数据点)。我需要将列分为长度为 7,000 的多个列。它已经按顺序排列,因此前 7,000 个数据点将保留在第一列,接下来的 7,000 个数据点将进入下一列,依此类推...
【问题讨论】:
您可以将数据重新整形为二维矩阵,但所有列的长度必须相同 (7,000)。
您可以只选择完整的列:
x = rand(1,400000);
N = 7000;
cols = floor(length(x)/N);
y = reshape(x(1:N*cols), [N,cols]);
或者,您可以填充最后一列(例如用零):
x = rand(1,400000);
N = 7000;
cols = ceil(length(x)/N);
y = zeros(N, cols);
y(1:length(x)) = x;
【讨论】:
使用buffer 命令:
x = rand(400000,1);
[out,z]=buffer(x,7000);
这里的out 对应于每列中有7000 元素的二维矩阵。如果向量的长度不能被7000整除,则将最后一列长度小于7000的数据存储在z中。
【讨论】:
reshape 是 MATLAB 原生的。
使用重塑功能可以做到这一点
A = reshape(B,7000,[]);
【讨论】: