Считывание массива числовых данных из текстового файла

Форум, посвященный общим вопросам, связанным с MATLAB

Модератор: Admin

perotto94
Пользователь
Сообщения: 3
Зарегистрирован: Ср июн 13, 2018 10:31 am

Считывание массива числовых данных из текстового файла

Сообщение perotto94 » Ср авг 01, 2018 4:07 pm

Имеется текстовый файл *.txt вида

sample_text
4.0e3 0.0 6e-5
4.0e3 0.0 6e-5
4.0e3 0.0 6e-5

bla bla bla

4.0e3 0.0 6e-5
4.0e3 0.0 6e-5


Как считать из этого файла числа в массив? Есть ли функция (по типу READPRN в Mathcad), которая, игнорируя все пустые строки или текст, считает только числа? При этом число строк заранее неизвестно, специального выделения строк с текстом (типа % или # в начале строки) нет.
Функции dlmread и textscan не помогают, либо я их неправильно использую, а до программирования методами C++ опускаться неохота ><
Пока что извращаюсь, считывая данные в Mathcad и записывая их там же в EXCEL файл, а потом читаю EXCEL в MATLAB через xlsread.

Sniper53
Пользователь
Сообщения: 51
Зарегистрирован: Пн ноя 09, 2015 7:30 pm

Re: Считывание массива числовых данных из текстового файла

Сообщение Sniper53 » Чт авг 02, 2018 8:32 am

Data = dlmread(Имеется текстовый файл *.txt)
С наилучшими пожеланиями, Федоров Д.А.

perotto94
Пользователь
Сообщения: 3
Зарегистрирован: Ср июн 13, 2018 10:31 am

Re: Считывание массива числовых данных из текстового файла

Сообщение perotto94 » Вс авг 05, 2018 9:42 am

Sniper53 писал(а):Data = dlmread(Имеется текстовый файл *.txt)


Этот код не работает. Вот мой текстовый файл:

Код: Выделить всё

   dfojvnxdfknvl


 4   8    1.3e-7
   6.0    7e4   9.0
  5.9737 6767 909

   dvlkdklv


Вот мой код:

Код: Выделить всё

DATA = dlmread('test.txt');


А вот результат:

Код: Выделить всё

Error using dlmread (line 147)
Mismatch between file and format character vector.
Trouble reading 'Numeric' field from file (row number 1, field number 1) ==> dfojvnxdfknvl\n

Error in dlmtest (line 1)
DATA = dlmread('test.txt');

CrabAlexey
Пользователь
Сообщения: 11
Зарегистрирован: Ср май 23, 2018 4:02 pm

Re: Считывание массива числовых данных из текстового файла

Сообщение CrabAlexey » Пн авг 06, 2018 5:31 pm

Я не супер-программист, но если ты знаешь число столбцов( именно 3), попробуй такой код

Код: Выделить всё

a=importdata('qw.txt','\t'); % загружает текстовый файл под именем "qw"
s=length(a);% определяет число строк в файле
c=cell(s,3);% создает массив "с" с соответсвтующим числом столбцов и строк(на случай если везде будут числа)
j=1;% счетчик строк с цифрами
for i=1:s%счетчик всех строк
    c{j,1}=str2num(a{i,1});%считывает i-строку массива "а" и переводит его в числовой формат. Загоняет с j-ю строку массива "с"
    d=c{j,1};%целоцисленный массив разбивает по строкам массива "d"
    si=size(c{j,1});%проверяет размерность массива в текущей ячейке
    null=si(1,1);%снимает первое значение из размерности.(Если там был текст или пустая строка, покажет 0)
    if null==0;% проверка нуля
    else% если не нуль, то:
    c{j,1}=d(1,1);%вписывает 1 столбцы чисел из массива "d" в массив "с"
    c{j,2}=d(1,2);%вписывает 2 столбцы чисел из массива "d" в массив "с"
    c{j,3}=d(1,3);%вписывает 3 столбцы чисел из массива "d" в массив "с"
    j=j+1;%переходит на следующую строку массива "c"
    end
end
z=cell2mat(c);% cоздание массива из целочисленного массива


Итоговый массив z