Я не думаю, что вам нужно создавать свой собственный анализатор, и при этом это не так уж ненормально.Использование текстов может быть вашим лучшим вариантом здесь.
fid = fopen('input.txt', 'rt');
data = textscan(fid, '%f %u', 'Headerlines', 1);
fclose(fid);
mass = data{1};
intensity = data{2};
Выход:
mass =
350.8578
350.8925
350.9869
351.8790
352.1771
352.2845
intensity =
238
3094
2762
468
569
426
Для вашего 1-го файла и:
mass =
Empty matrix: 0-by-1
intensity =
Empty matrix: 0-by-1
Для вашего пустого.
По умолчанию при сканировании текста пробел читается как разделитель, и он читает только то, о чем вы говорите, до тех пор, пока он не сможет это сделать;таким образом, он игнорирует последние строки в вашем файле.Вы также можете запустить второй текстовый скан после этого, если вы хотите подобрать эти дополнительные поля:
fid = fopen('input.txt', 'rt');
data = textscan(fid, '%f %u', 'Headerlines', 1);
mass = data{1};
intensity = data{2};
data = textscan(fid, '%*s %u %*c %f %*c %*s %u %*s', 'Headerlines', 1);
scan = data{1};
level = data{2};
points = data{3};
fclose(fid);
Наряду с данными о массе и интенсивности вы получите:
scan =
3763
level =
81.9500
points =
1000