读取列中的值以绘制图表

时间:2011-12-23 11:06:05

标签: matlab window plot figure

capture of part of the .txt file我需要同时创建一个包含两个图的图形窗口。我给了一个带有一些引入行和带有值的3列的.txt文件。第一列具有x的值,y的第二和第三值。

1st使用fid = fopen等访问文件

2nd阅读文件并跳过前30行(引言行),我用它做了:

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

第3个制作剧情本身,我将使用hold(或hold on)来使两个图都进入同一个图形窗口。不知怎的,我需要把一个列作为值的gadering放在情节上。我可以手工编写它们,但是我需要程序来自己阅读它们。我无法解释它,但我认为你有这个主意。

最后用fclose(fid)等关闭它。

请你帮我解决第3个问题并告诉我是否缺少某些内容?提前谢谢你:)

2 个答案:

答案 0 :(得分:2)

好的,我想我发现了这个问题。我怀疑你的数据在某处有一些无效的文字。我搜索了互联网,我想我找到了数据的副本...... 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])

我切换到文本扫描,因为textread不支持自定义评论方式。我使用了评论风格' - '而不仅仅是' - ',因为' - '会开始跳过负面的值。

注意:此数据包含-99.99表示无效/缺失数据,因此您可能需要在绘图之前添加以下内容:

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

Data Plot

答案 1 :(得分:1)

我不确定它是否能完全解决您的问题。但我会做那样的事情:

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