Импорт данных сигнала текстового файла в Matlab

#matlab

Вопрос:

Попытались понять, как импортировать данные текстового файла (сигнал времени) в Matlab, пожалуйста, помогите. Структура файла .txt выглядит следующим образом:

0,0006 0,0835
0,0013 0,0016
0,0019 0,0082
0,0026 -0,0193
0,0032 0,1115
0,0039 -0,1169
0,0045 0,0461
0,0052 -0,1185
0,0058 0,0048
0,0065 0,0087
0,0071 -0,1163
0,0078 0,0913
0,0084 0,022
0,0091 0,0072
0,0097 -0,0829

в исходном файле это выглядит как столбец, разделенный пробелом:

введите описание изображения здесь

Комментарии:

1. Я предполагаю, что вы используете запятые, а не десятичные точки, поэтому у вас есть 2 поля в каждой строке, и первое из них-время с частотой дискретизации 600 микросекунд?

2. Я считаю, что так оно и есть, он не знает, как хранятся данные. Я считаю, что частота дискретизации составляет 1600.

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

Ответ №1:

Просто замените запятые точками и используйте функцию dlmread:

 cat signal.txt
0.0006 0.0835
0.0013 0.0016
0.0019 0.0082
0.0026 -0.0193
0.0032 0.1115
0.0039 -0.1169
0.0045 0.0461
0.0052 -0.1185
0.0058 0.0048
0.0065 0.0087
0.0071 -0.1163 
0.0078 0.0913 
0.0084 0.022
0.0091 0.0072
0.0097 -0.0829
 
 format long
data=dlmread('signal.txt',' ',0,0)
data =

   5.999999999999999e-04   8.350000000000000e-02
   1.300000000000000e-03   1.600000000000000e-03
   1.900000000000000e-03   8.200000000000001e-03
   2.600000000000000e-03  -1.930000000000000e-02
   3.200000000000000e-03   1.115000000000000e-01
   3.900000000000000e-03  -1.169000000000000e-01
   4.500000000000000e-03   4.610000000000000e-02
   5.200000000000000e-03  -1.185000000000000e-01
   5.800000000000000e-03   4.800000000000000e-03
   6.500000000000000e-03   8.699999999999999e-03
   7.100000000000000e-03  -1.163000000000000e-01
   7.800000000000000e-03   9.130000000000001e-02
   8.399999999999999e-03   2.200000000000000e-02
   9.100000000000000e-03   7.200000000000000e-03
   9.700000000000000e-03  -8.290000000000000e-02

 

Отказ от ответственности: У меня нет MATLAB на моем компьютере, и поэтому я использовал Octave. Основываясь на моем предыдущем опыте, он также должен работать в MATLAB.

Комментарии:

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

2. Это можно легко сделать — просто требуется некоторое усилие.

Ответ №2:

Это можно сделать с помощью трех шагов:

 file_string = fileread('my_file.txt');       % Read file contents to string.

file_string = strrep(file_string, ',', '.'); % Replace commas in string to periods.

file_mat = str2num(file_string);             % Convert contents to a matrix.
 

В исходных вопросах указано, что столбцы разделены вкладками, и на рисунке строки разделены строкой, но в тексте строки также разделены вкладками. Если файл использует каналы строк для разделения строк, то результат file_mat уже будет отформатирован в строки и столбцы. Если вкладки используются для разделения всех элементов (столбцов и строк), то file_mat они будут содержать только вектор. Если это так, то file_mat можно изменить форму, используя следующее:

 file_mat = reshape(file_mat, [2 length(file_mat)/2])'; % Convert vector to array with two columns.
 

Это было проверено, как показано ниже:
результат теста

Комментарии:

1. Спасибо, после file_mat = str2num(строка файла); матрица создается без значений в ней.

2. Я добавил результаты теста к ответу. Вы можете видеть, что входной файл my_file.txt содержит те же значения, разделенные вкладками, что и выше. Возможно, было бы полезно указать точный файл, используемый для теста.

Ответ №3:

У меня есть решение:

 A = importdata ('text_file_neme.txt');

M = A(:,2);