MATLAB如何在没有空间或运算符的情况下拆分列?

时间:2018-10-11 14:02:24

标签: matlab

我从具有20000行的文本文件中读取数据:

0000
1000
0110
0000
0110
1101
1010
0200
0011
....

我想将列拆分为四个20000x1矩阵。 我该怎么做?代码是什么?谢谢!

2 个答案:

答案 0 :(得分:1)

我将以您想要的格式读取数据,而不是在MATLAB中操作数据。使用textscan并使用格式规范%1d来指定一个宽度的整数。

如果每行有4个整数,则应该可以。

   data = textscan(fid,'%1d%1d%1d%1d')

结果数据变量应为4x1单元格数组,每个单元格均具有所需的数据列。

使用您提供的数据我得到

data =

  1×4 cell array

    {9×1 int32}    {9×1 int32}    {9×1 int32}    {9×1 int32}

例如第二列是

>> data{2}

ans =

  9×1 int32 column vector

   0
   0
   1
   0
   1
   1
   0
   2
   0

答案 1 :(得分:0)

我对这个问题的解释如下:

数据:

Data = ...
["0000"
"1000"
"0110"
"0000"
"0110"
"1101"
"1010"
"0200"
"0011"];

您的代码建议:

% Initializing variables
Colomn1 = string(zeros(length(Data),1));
Colomn2 = string(zeros(length(Data),1));
Colomn3 = string(zeros(length(Data),1));
Colomn4 = string(zeros(length(Data),1));
% Looping trough Data and extracting the columns
for i = 1:length(Data)
   DataPerRow = Data(i);
   Colomn1(i) = extractBetween(DataPerRow,1,1);
   Colomn2(i) = extractBetween(DataPerRow,2,2);
   Colomn3(i) = extractBetween(DataPerRow,3,3);
   Colomn4(i) = extractBetween(DataPerRow,4,4);
end

结果:

Column1 =
"0"
"1"
"0"
"0"
.

Column2 =   
"0"
"0"
"1"
"0"
.

Column3 =
"0"
"0"
"1"
"0"
.

Column4 =   
"0"
"0"
"0"
"0"
.