matlab读入txt数据_教程合集 | MATLAB文件读写(以nc与txt为例)
? ? 周一到!我們又和大家見面啦!最近幾周的主題是,有了數據,那我們怎么讀寫數據文件呢?氣象中的特殊資料又有哪些處理方法呢?以txt和nc文件做引子,歡迎各位拍磚~
No.1
基礎通用知識
????讀寫文件時有一些由c語言衍生出來的讀取數據的相關知識,它們大都是相通的。
1.1 ?文件打開模式
讀取數據第一步!先打開一個數據文件。文件可以根據自己需要的不同,通過單個或組合使用以下符號的方式,在代碼中使用。
打開模式 | 執行操作 |
'r' | 以只讀方式打開文件(默認) |
'w'? ?? | 以寫入的方式打開文件,會覆蓋已存在的文件 |
'x' | 如果文件已經存在,使用此模式打開將引發異常 |
'a' | 以寫入模式打開,如果文件存在,則在末尾追加寫入 |
'b' | 以二進制模式打開文件 |
't' | 以文本模式打開(默認) |
'+' | 可讀寫模式(可添加到其他模式中使用) |
'U' | 通用換行符支持 |
????例如,小明想以二進制的形式打開一個已存在的文件,在讀入數據后,在文件中再持續寫入數據,則查一查表中相對應的符號,他可以:
f = fopen('write_data.txt','ab+')1.2 ??格式化文本
?在將處理好的數據輸出為其他格式的文件時,尤其要注意文件的寫法。
????要將數據轉換為文本輸出并控制其格式,可以將格式化操作符與常見的轉換函數(如 num2str 、sprintf)結合使用。這些操作符可控制記數法、對齊方式、有效位數以及其他內容。其典型用途包括用于顯示和輸出文件的文本。
轉換說明符:
?占位符,它會被后面表達式(變量、常量、數字、字符串、加減乘除等各種形式)的值代替。
符?? 號 | 說???? 明 |
%c | 格式化字符及其ASCII碼 |
%s | 格式化字符串 |
%d | 格式化整數 |
%o | 格式化無符號八進制數 |
%x | 格式化無符號十六進制數 |
%X | 格式化無符號十六進制數(大寫) |
%f | 格式化定點數,可指定小數點后的精度 |
%e | 用科學計數法格式化定點數 |
%E | 作用同%e,用科學計數法格式化定點數 |
%g? | 根據值的大小決定使用%f或者%e |
%G | 作用同%g,根據值的大小決定使用%F或者%E |
如果沒有子類型字段,轉換字符 %o、%x、%X 和 %u 會將輸入數據按整數進行處理。要將輸入數據按浮點值進行處理,并將它們轉換為八進制、十進制或十六進制表示形式,請使用:
b | 輸入數據為雙精度浮點值,而不是無符號整數。例如,要以十六進制格式輸出雙精度值,請使用類似 %bx 的格式。 |
t | 輸入數據為單精度浮點值,而不是無符號整數。 |
精度與字符寬度設置:
????例如,在操作符%7.2f 中,7表示字段寬度,2表示精度。綜合本部分前述內容,對圓周率pi進行格式轉換:
txt = sprintf('%7.2f',pi)得到結果:
標志
可選項,用于控制輸出文本的其他格式:
字符 | 說明 | 示例 |
減號 (-) | 在字段中左對齊轉換后的參數。 | %-5.2d |
加號 (+)?? | 對于數值,始終輸出前導的符號字符(+ 或 -)。 對于文本值,在字段中右對齊轉換后的參數。 | %+5.2d %+5s |
空格 | 在值之前插入空格。? ? | ?% 5.2f |
零 (0) | 用零而不是空格進行填充。 | %05.2f |
井號 (#) | 改選定的數值轉換:? ?? ·?對于 %o、%x 或 %X,將輸出 0、0x 或 0X 前綴。 ·對于 %f、%e 或 %E,即使精度為零也將輸出小數點。 ·?對于 %g 或 %G,不刪除尾隨零或小數點。 | %#5.0f |
????除此之外,實際編程中還常用轉義字符控制輸出文件的格式:\n為換行符,\t為水平制表符,表示同一行中的間隔,與一般打字時使用的Tap鍵功能類似。
No.2
txt文件的讀寫
????你可能用到的函數:fopen、fwrite、fread、fscanf、importdata、load、save、textread等。(csv、xls等文件的讀取方式均有類似的特殊函數,可用搜索引擎或MATLAB官網文檔查閱~)
讀寫方法一:
load('file.txt','r')save('filename.txt',a)%a為需儲存的變量名讀寫方法二:
fid?=?fopen('filename.txt')[A,COUNT]=fscanf(fid,format,size)其中A用來存放讀取的數據,COUNT返回所讀取的數據元素個數,fid為文件句柄,format用來控制讀取的數據格式,size為可選項,決定矩陣A中數據的排列形式,它可以取下列值:N(讀取N個元素到一個列向量)、inf(讀取整個文件)、[M,N](讀數據到M×N的矩陣中,數據按列存放)
fprintf函數可以將數據按指定格式寫入到文本文件中。其調用格式為:
fprintf(fid,format,A)fcolse(fid) %最后不要忘記關閉文件讀取方法三:
[A,B,C,…] = textread(filename,format,N)括號中變量的個數必須和format中定義的個數相同。如果每N行相同格式的數據,可采用[A,B,C,…] = textread(filename,format,N)的語法,讀取N次。
或
[C,position] = textscan(fid, 'format', N, 'param', value)在掃描結束時返回文件或字符向量中的位置作為第二個輸出參數。對于文件,該值等同于調用 textscan 后再運行 ftell(fileID) 所返回的值。對于字符向量,position 指示 textscan 讀取了多少個字符
或
A = importdata(filename)No.3
nc文件的讀寫
讀入:
A=ncread('filename.nc','Name',[1 1 1 1],[X Y 1 1]);%[1 1 1 1]為起始位置,X、Y為讀取終點位置。寫入:
在寫入nc文件時,要尤其注意在自己定義各項變量名、變量屬性后再給變量進行賦值操作:
例如論壇里小伙伴threetee給出的示例截取(原貼鏈接在后方):
varid2?=?netcdf.defVar(ncid,'lat','double',[dimidx]);%定義新變量netcdf.putAtt(ncid,varid2,'long_name','Latitude');%設定變量屬性netcdf.endDef(ncid);netcdf.putVar(ncid,varid2,lat);%給新變量賦值netcdf.close(ncid);????也可以用read_grib工具包進行讀寫,在這里就不過多展開了,感興趣的小伙伴可以去氣象家園里自行探索:
http://bbs.06climate.com/forum.php?mod=viewthread&tid=47599
其他關于nc文件讀寫的討論如下:
NC文件讀取教學(某一經緯度范圍):(drx)
http://bbs.06climate.com/forum.php?mod=viewthread&tid=89683
分享一個用MATLAB將數據寫nc格式文件的程序:(threetee)
http://bbs.06climate.com/forum.php?mod=viewthread&tid=28875
MATLAB批量讀取nc文件,并進行數據處理,繪圖:(吳東佑)
http://bbs.06climate.com/forum.php?mod=viewthread&tid=52026
關于MATLAB讀取nc數據并繪制風場:(zhangxk14)
http://bbs.06climate.com/forum.php?mod=viewthread&tid=94405
nc數據全解讀-3 數據處理:月數據變季度數據,年數據,數據標準化:(652554221)
http://bbs.06climate.com/forum.php?mod=viewthread&tid=95001
用MATLAB讀取和編寫nc文件:(是兜兜啊)
http://bbs.06climate.com/forum.php?mod=viewthread&tid=94319
nc文件與對應頭文件的生成:(容與)
http://bbs.06climate.com/forum.php?mod=viewthread&tid=37866
?!!手把手教會!!讀取nc文件變量到excel,再輸出數據合成nc:(叮當賣賣貓)
http://bbs.06climate.com/forum.php?mod=viewthread&tid=47365
No.4
關于讀寫文件的其他討論
其他部分文件讀寫方法見下方鏈接內的論壇討論:
微信不能添加外部超鏈接,請復制鏈接至瀏覽器食用!
關于用MATLAB一站式讀取NetCDF, OPeNDAP, HDF5, GRIB, GRIB2, HDF4等等:
http://bbs.06climate.com/forum.php?mod=viewthread&tid=47599
MATLAB對于文本文件(txt)數據讀取的技巧總結:
http://bbs.06climate.com/forum.php?mod=viewthread&tid=626
MATLAB讀取grads數據的函數:(firenix)
http://bbs.06climate.com/forum.php?mod=viewthread&tid=54519
MATLAB處理后的數據寫為二進制用于GrADS畫圖——fwrite函數使用:(Aires)
http://bbs.06climate.com/forum.php?mod=viewthread&tid=20308
MATLAB數據轉grads格點數據函數:(斥鷃)
http://bbs.06climate.com/forum.php?mod=viewthread&tid=12711
分享一個自己編的關于cmip5數據提取以及插值的程序:(lancerv8)
http://bbs.06climate.com/forum.php?mod=viewthread&tid=53380
MATLAB讀取衛星hdf數據步驟總結:(windprofiler)
http://bbs.06climate.com/forum.php?mod=viewthread&tid=10454
MATLAB讀取SA雷達基數據文件并進行顯示:(又是那隻貓)
http://bbs.06climate.com/forum.php?mod=viewthread&tid=14628
MATLAB自動讀取micaps數據并存儲為結構數組程序:(雪お軒漠)
http://bbs.06climate.com/forum.php?mod=viewthread&tid=28016
MATLAB讀取MICAPS數據源程序:(雪お軒漠)
http://bbs.06climate.com/forum.php?mod=viewthread&tid=31259
讀取MICAPS tlogp格式數據:(daveryjl)
http://bbs.06climate.com/forum.php?mod=viewthread&tid=89801
分享一個讀取.he5文件并畫圖的例子:(大物小子)
http://bbs.06climate.com/forum.php?mod=viewthread&tid=95949
MATLAB讀取AWX文件(TBB):(二爺名聲在外)
http://bbs.06climate.com/forum.php?mod=viewthread&tid=51535
利用MATLAB提取圖圖片中的數據:
http://bbs.06climate.com/forum.php?mod=viewthread&tid=5784
參考資料:
[1]MATLAB官網字符串格式化部分:https://ww2.mathworks.cn/help/matlab/matlab_prog/formatting-strings.html
[2]小甲魚教程:https://fishc.com.cn/
本期內容到此結束!意猶未盡?
歡迎到家園MATLAB板塊,一起玩耍吧!
http://bbs.06climate.com/
排版:自古以來沒頭發
總結
以上是生活随笔為你收集整理的matlab读入txt数据_教程合集 | MATLAB文件读写(以nc与txt为例)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021年开什么店好赚钱投资小 没有经
- 下一篇: python中数组的维度_Python数