MATLAB как разбить столбцы без пробелов или операторов? - PullRequest
0 голосов
/ 11 октября 2018

Я читаю данные из текстового файла с 20000 строками:

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

Я хочу разделить столбцы на четыре матрицы 20000x1.Как мне это сделать?Какой код?Спасибо!

Ответы [ 2 ]

0 голосов
/ 12 октября 2018

Вместо того, чтобы манипулировать данными в MATLAB, я бы прочитал их в том формате, который вы хотите.Используйте текстовое сканирование и используйте спецификацию формата% 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}

Где, например, 2-й столбец

>> data{2}

ans =

  9×1 int32 column vector

   0
   0
   1
   0
   1
   1
   0
   2
   0
0 голосов
/ 12 октября 2018

Я интерпретирую этот вопрос следующим образом:

Данные:

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"
.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...