Импорт данных из файла.txt в Matlab

Прежде всего, спасибо за чтение моего вопроса.
Я пытаюсь импортировать данные из файла в следующем формате в Matlab:

#Text  
#Text: Number  
...  
#Text: Number  
Set1:  
1 2  
3 4   
Set2:  
5 6  
7 8   
...  

Я хотел бы получить эти числа в две матрицы вида:
(1 5
3 7)
а также
(2 6
4 8)

Я начал с построения только первой из этих двух матриц.

 Winkel = 15;
 xp = 30;

 M = readtable('Ebene_1.txt')
 M([1:4],:) = [];
 M(:,3) = [];

for i=0:Winkel-1
   A = table2array(M((2+i*31:31+i*31),1))
end

Но это решение дало мне только клеточные массивы, которые я не мог преобразовать в нормальные векторы.

Я также пытался использовать importdata команда, но не смог найти способ заставить это работать. Я знаю, что есть много других вопросов, похожих на мои, но я не смог найти тот, где все данные были бы в одном столбце. Кроме того, есть много команд Matlab для импорта данных в Matlab, и я не уверен, что будет лучше.
Впервые задаю такой вопрос онлайн, поэтому не стесняйтесь спрашивать меня для более подробной информации.

1 ответ

Решение

Вы можете импортировать данные, которые вы предоставили в вашем образце, используя readtable, однако из-за формата вашего файла вам нужно будет немного подправить функцию.

Вы можете использовать detectImportOptions, чтобы сообщить функции, как импортировать данные.

%Detect import options for your text file.
opts = detectImportOptions('Ebene_1.txt')

%Specify variable names for your table.
opts.VariableNames = {'Text','Number'};

%Ignore last column of your text file as it does not contain data you are interested in.
opts.ExtraColumnsRule = 'ignore';

%You can confirm that the function has successfully identified that the data is numeric by inspecting the VariableTypes property.
%opts.VariableTypes

%Read your text file with detectImportOptions.
M = readtable('Ebene_1.txt',opts)

Теперь, когда у вас есть стол M, просто примените основные операции Matlab, чтобы получить матрицы, как вы указали.

%Find numerical values in Text and Number variables. Ignore NaN values.
A = M.Text(~isnan(M.Text));
B = M.Number(~isnan(M.Number));

%Build matrices.
A = [A(1:2:end)';A(2:2:end)']
B = [B(1:2:end)';B(2:2:end)']

Выход:

A =

     1     5
     3     7

B =

     2     6
     4     8
Другие вопросы по тегам