【问题标题】:How can I split a large column of data into multiple columns of data in MATLAB? [duplicate]如何在 MATLAB 中将一大列数据拆分为多列数据? [复制]
【发布时间】:2014-07-10 13:44:00
【问题描述】:

我从文本文件中导入了大量数据(超过 400,000 个数据点)。我需要将列分为长度为 7,000 的多个列。它已经按顺序排列,因此前 7,000 个数据点将保留在第一列,接下来的 7,000 个数据点将进入下一列,依此类推...

【问题讨论】:

  • 好的,谢谢!

标签: matlab multiple-columns


【解决方案1】:

您可以将数据重新整形为二维矩阵,但所有列的长度必须相同 (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;

【讨论】:

    【解决方案2】:

    使用buffer 命令:

    x = rand(400000,1);
    [out,z]=buffer(x,7000);
    

    这里的out 对应于每列中有7000 元素的二维矩阵。如果向量的长度不能被7000整除,则将最后一列长度小于7000的数据存储在z中。

    【讨论】:

    • 小注:使用此方法需要信号处理工具箱。 reshape 是 MATLAB 原生的。
    • @rayryeng 非常感谢,我会记下的。
    • 没问题。仍然给你+1,因为这是一种很好的使用方法。
    【解决方案3】:

    使用重塑功能可以做到这一点

    A = reshape(B,7000,[]);
    

    【讨论】:

    • 您已选择编写自己的答案。因此,要么接受你自己的答案,以表明你不再需要帮助,要么接受上述答案之一。
    • 根据 SO 规则,您必须在最初提出问题后等待 48 小时,然后才能接受自己的答案。所以煨一下rayryeng,到时候我会去的
    • 抱歉,我忘了有 48 小时的限制。不知道你为什么让我冷静下来,因为我不生气。只是想确保人们知道这个问题已经解决。另一方面,您可以继续接受任何其他答案,以给他们一些代表点:) 接受自己的答案不会得到任何东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-27
    • 2013-08-04
    • 1970-01-01
    • 2022-07-06
    • 2017-03-29
    相关资源
    最近更新 更多