我从具有20000行的文本文件中读取数据:
0000
1000
0110
0000
0110
1101
1010
0200
0011
....
我想将列拆分为四个20000x1矩阵。 我该怎么做?代码是什么?谢谢!
答案 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"
.