#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);