matlab 输入 fscanf函数
matlab调用文本文档的数据,是相当简洁的。但是,目前不管是网络上,还是各类教材说的都很简陋。有时候抱着本书看了n次,仍然不知道如何下手。我最近遇到这样一个问题。又一个数据文件,当然后缀名是可以更改的,可以是txt也可以是dat。文件不是帮助中的简单数据形式,仅有一个类似矩阵般的数据排列。为了方便运算,数据体中一定要有文字注释,并且,数据分很多中,有渗透率的,也有井的。数据长度不同。而用matlab中的load要求必须要用行长度相同的数据。比如说:
1 2 3 4 4
2 3 4 5 6
这样的数据很容易读入,用load非常合适,文字注释部分前面加上%,matlab就不会读文字行。但是我的数据是类似下面的
数据
11 11 3 1.00
长度
5050505050505050505050
5050505050505050505050
纵向
4.00 4.00 4.00 4.00 4.00 4.00 4.00 4.00 4.00 4.00
4.00
4.00 4.00 4.00 4.00 4.00 4.00 4.00 4.00 4.00 4.00
4.00
4.00 4.00 4.00 4.00 4.00 4.00 4.00 4.00 4.00 4.00
4.00
4.00 4.00 4.00 4.00 4.00 4.00 4.00 4.00 4.00 4.00
4.00
4.00 4.00 4.00 4.00 4.00 4.00 4.00 4.00 4.00 4.00
4.00
4.00 4.00 4.00 4.00 4.00 4.00 4.00 4.00 4.00 4.00
4.00
4.00 4.00 4.00 4.00 4.00 4.00 4.00 4.00 4.00 4.00
4.00
4.00 4.00 4.00 4.00 4.00 4.00 4.00 4.00 4.00 4.00
这样的话,如果想用load函数,就要把这个数据分成好几份,分别调用,这对于程序的应用非常不便。于是我就考虑用fscanf函数,这个函数的应用与c++中有几分相似,呃,
坦诚的说是非常相似,但是好像不支持换行,比如说遇到注释行然后跳过去,他不支持。也许支持,但我不会,^_^
用fscanf是可以一个一个读入数据,也可以一下读入一个二维数组。非常方便。我找了个中文的帮助资料,但是是繁体的,不过大家凑活看吧。如果遇到注释行,用下面的语句fscanf(fid,’%6s’,1); ,其中的6代表读入的字码长度。本来想多写点,但是好累,休息会,编程不是人干的活。
正式之读取资料函数如下之格式:
A=fscanf(fid,format)
[A, count]=fscanf(fid,format,size) [A, count]=fscanf(fid,format,size)
這個指令可以自fid所標示的檔案中將其資料依format的格式取出,並置於矩陣A中。这个指令可以自fid所标示的档案中将其资料依format的格式取出,并置于矩阵A中。 fid的定義與前述之fprintf指令相同。 fid的定义与前述之fprintf指令相同。 另一種型式則增加count與size兩參數。另一种型式则增加count与size两参数。 count表示已完成的資料筆數。 count表示已完成的资料笔数。 而size則是決定讀入之資料量,可用[m,n]表示,表示讀入之資料可填滿mxn的矩陣。而size则是决定读入之资料量,可用[m,n]表示,表示读入之资料可填满mxn的矩阵。 其中n 可用inf取代,代表EOF(End of File)。其中n可用inf取代,代表EOF(End of File)。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-22134-1.html
我的5代升级了9系统很流畅
哈哈