Чтение значений в столбцах для построения графиков - PullRequest
0 голосов
/ 23 декабря 2011

capture of part of the .txt file Мне нужно создать окно с двумя графиками одновременно.Мне дан файл .txt с некоторыми строками и 3 столбцами со значениями.Первый столбец имеет значения для x, а второй и третий значения для y.

1-й Доступ к файлу с помощью fid = fopen и т. Д.

2-й. Считайте файл и пропустите первые 30 строк (введениелинии), что я и сделал, используя это:

    headlines = fgetl(fid);
     for i = 1:30
         tline = fgetl(fid);
         headlines = char(headlines(1:i-1,:), tline);

3-ий. При создании самого графика я буду использовать удержание (или удерживание), чтобы оба графика попали в одно и то же окно рисунка.Каким-то образом мне нужно сделать так, чтобы столбец соответствовал значениям, которые нужно поместить в график.Я мог бы написать их от руки, но мне нужна программа, чтобы прочитать их сам.Я не могу объяснить это, но я думаю, что вы поняли идею.

И в заключение закройте ее с помощью fclose (fid) и т. Д.

Не могли бы вы помочь мне с третьим и скажите мне, есличего-то не хватает?Заранее спасибо:)

Ответы [ 2 ]

2 голосов
/ 23 декабря 2011

Хорошо, я думаю, что нашел проблему. Я подозревал, что где-то в ваших данных был какой-то неверный текст. Я искал в Интернете, и я думаю, что я нашел копию данных ... http://cdiac.ornl.gov/ftp/trends/temp/hansen/gl_land.txt

Окончание этого набора данных выглядит следующим образом:

 2007      0.75      0.69
 2008      0.56      0.70
 2009      0.72    -99.99
 2010      0.83    -99.99
-------------------------

Строка ---- в конце вызывает ошибку.

Итак, я использовал следующее:

fid = fopen('gl_land.txt','r');
C = textscan(fid,'%f %f %f','headerlines',30,'commentstyle','--');
fclose(fid);
x = C{1}; y1 = C{2} y2 = C{3};
plot(x,[y1 y2])

Я переключился на textcan, потому что textread не поддерживает пользовательские комментарии. Я использовал стиль комментария '-' вместо просто '-', потому что '-' начал бы пропускать отрицательные значения.

Примечание. Эти данные содержат -99,99 для обозначения неверных / отсутствующих данных, поэтому вы можете добавить следующее перед построением графика:

y1(y1==-99.99) = NaN;
y2(y2==-99.99) = NaN;

Data Plot

1 голос
/ 23 декабря 2011

Я не уверен, что это точно решит вашу проблему. Но я бы сделал что-то подобное:

values.txt:

...
...
1 0 0
2 0 1
3 1 0
4 1 1
5 1 2
6 2 4

скрипт Matlab:

[x y1 y2]=textread('values.txt','%f %f %f','headerlines',30)
plot(x,[y1 y2])

результат:

enter image description here

...