【午夜搞科研】matlab之讀寫asc文件小技巧

2021-03-02 午夜研究院

最近剛考完六級,學習之心日漸衰落

室友看到我如此頹廢

於是給我找了個活,讓我幫他處理一些數據

...

(這是親舍友嗎?)

於是我經過了一下午的努力,終於完成了!

完成之餘,感覺就是

查資料查了99%的時間,寫程序只用了那麼一丟丟

(有人帶路走的才真的快)

所以直接總結一下這次遇到的問題和解決辦法,以供後續感興趣有需要的小夥伴查閱和參考
先介紹一下cell,cell是一個類似數組的變量格式,將類型不同的相關數據集成到一個單一的變量中,使得大量相關數據的引用和處理變得簡單方便。

ps:1. 建立一個空的cell

a = cell2mat(a); #得到的就是文本格式 也就是char

Q1:如何遍歷文件夾下所有文件?

path=[];  #文件bai路徑 suffix='_new2.asc'; #文件後綴files=dir(['*',suffix]); #得到這個路du徑下所有的asc文件名

dir得到的是一個包括:"文件名"、"路徑"、"創建時間"、"大小"等六個類別的信息。
dircell=struct2cell(files);  #對讀取信息的格式轉換filename=dircell(1,:);     #提取文件名

通過上述代碼就可以把file文件中的name列單獨取出來。這樣我們就得到了含有文件夾下含有所有文件名字了。

Q2:如何對文件列表進行排序?

A:一般的只包含數字的文件名可以直接用官方的sort函數就可以進行排序了,但是我們在實際運用時總會遇到項目類含有很多字符中間帶有數字的項目文件。比如:"abcd_01_name.dat"。
在網上苦苦追尋,總算在matlab中文論壇上找到了解決辦法,已經有大佬只做了相應的子函數——sort_nat

(既然有現成的還是白嫖舒服...如果好奇裡面的原理的可以下載他的函數哦)

Matlab官方連結:https://www.mathworks.com/matlabcentral/fileexchange/10959-sort_nat-natural-order-sort

連結:https://pan.baidu.com/s/10Ia71ZrCvGaFrQ6i07D9aw

例如,輸入

{'file1.txt','file2.txt','file10.txt'}

正常的排序會給你

{'file1.txt','file10.txt','file2.txt'}

而sort_nat會給你

{'file1.txt','file2.txt','file10.txt'}

Q3:如何讀取asc文件?

A:一般asc文件裡面字符串,數字混雜,直接讀取成cell的類型會非常的方便。

       1. dlmread

a = dlmread('filename')a = dlmread('filename', delimiter)a = dlmread('filename', delimiter, R, C)a = dlmread('filename', delimiter, range)

這個方法讀取asc的時候(參考百度到的案例)只讀取含有數值類型的文件是沒問題的,如果遇到第一列比如是字符串的名稱類的就可能遇到報錯的問題。出的錯我也沒解決...

a  = textread( name,'%s', 'delimiter', '/n');

這個方法就是目前解決的方法,通過改變後面的'/n'標誌符可以修改變量之間的判定邏輯,比如每遇到一個空格就當成一個變量的結尾:' ' ,之後就可以通過數據傳遞把數據弄成想要的模樣了。

A:在寫入的時候要注意數據類型,如果是cell的話,要注意寫入方法

fid=fopen('test.asc','w');# out為已經寫好的數據for i=1:size(out,1)    a = out(i);    a = cell2mat(a);    fprintf(fid,'%s \n',a);endfclose(fid);

如果數據為常規數組,按照正常文件讀寫即可。

好了,通過以上四步相信在做進一步處理前,大家至少把數據都搞好了

相關焦點

  • 深入淺出MATLAB數據處理之文件讀寫
    Little Endian 與 Big Endian 從字面講,Little Endian就是說小數據(此處的小為閱讀順序中的低字節數據:0x0D)存儲在前端(內存中的低地址)。Big Endian就是說大數據(此處的大為閱讀順序中的高字節數據:0x0A)存儲在前端(內存中的低地址)。
  • 一文帶你輕鬆搞定matlab各種數據讀寫
    日常在MATLAB編程愛好者討論群中經常有人求助讀取文件的方法,本期過冷水就用最簡潔話語給出圖片、excel、文檔、音頻等類型的文件的讀取和儲存,廢話不多直接看代碼。1、讀取圖片本圖來源於matlab官方twitter圖片的名字是:matlab.jpg;儲存的絕對路徑是:C:\Users\wayne\Desktop讀取&儲存代碼:2、存儲&讀取excel中的數據
  • 32個實用matlab編程技巧
    今天給大家介紹一些matlab編程小技巧,希望對大家學習matlab有所幫助。 5、定義循環變量時,儘量不要使用i和j,因為i和j是matlab預留的虛數單位。 6、在m文件前面使用clear,close,clc等命令可以釋放內存、清理窗口。
  • MATLAB簡單粗暴教程(三)——MATLAB讀取文本文件
    如果按照文本方式打開,在打開的時候會進行translate,將每個字節轉換成ASCII 碼,而以按照二進位方式打開的話,則不會進行任何的translate;最後就是文本文件和二進位文件在編輯的時候,使用的方式也是不同的。
  • Matlab入門基礎知識(6)-數據文件的讀寫
    之前的推文中,小編跟大家分享了數組的創建方法。本篇推文將介紹如何在MATLAB中實現數據文件的讀寫。
  • MATLAB中使用CIFLog數據的方法
    ,需要把曲線數據利用專業測井軟體導成文本格式或excel格式後,導入到Matlab中,才能進行計算和可視化等操作,這給研究帶來很多困擾,廣大測井科研工作者多麼希望在Matlab中直接調用測井數據。本文將介紹一種在Matlab中讀寫CIFLog數據的方法。
  • MATLAB實際編程的技巧
    好的編程習慣影響編程效率、影響程序運行的時間,如何才能在很少的時間裡寫出高質量的MATLAB的代碼,下面將會介紹一些編程常用的小技巧。
  • matlab科研繪圖之包絡線繪製
    介紹一種用matlab包絡線的方法,該方法用到了matlab求局域最大最小值函數,大家有什麼好的建議和方法,歡迎在下方留言討論。原始碼:% 示例數據來源於matlab幫助文檔x = -200:0.1:200;A = (1-cos(2*pi*0.01*x)).
  • python3之如何讀寫文件
    文件的讀寫是在實際開發中經常會遇到的,因此掌握文件的讀寫是必須的。讀文件首先通過一個最簡單的例子感受一下python讀文件的函數。例子中只有兩行代碼,第一行代碼是調用open函數,參數是文件路徑,返回的是一個文件對象。第二行代碼是使用print列印文件對象讀取的內容。可以看出python讀文件的操作很簡單,打開文件(open)、讀取文件(file.read)。當然用完文件應該關閉文件,調用file的close函數即可。
  • 大話matlabの通用對話框
    引入通用對話框對程序交互往往能起到錦上添花的作用,下面就來對matlab通用對話框進行一一介紹:一、文件選擇對話框 —— uigetfile函數功能:打開用於打開文件的對話框,獲取所需打開文件的路徑、文件名、篩選器索引等信息。
  • Matlab數據存取(三):注意事項及其他相關問題
    請在matlab中保持當前路徑在該數據文件對應的目錄下進行存取,否則,存取時請給出該數據文件的具體路徑。2. 存取時,請給出該數據文件的全稱(包括後綴名,讀取mat文件時可省略)3. load data.txt和A=load(『data.txt』)的區別請參閱精華貼:[原創]寫給學習matlab 的新手們4.
  • 大牛心得:學習matlab的一點心得體會
    Matlab對研究生科研寫作過程中數據處理,畫圖制表,算法實現,模型模擬都挺有幫助,可以說是一件神器。
  • MATLAB簡單粗暴教程(十二)——MATLAB常見錯誤提示
    本來想搞一個大新聞,但是現在恐怕只有被批判一番了。這一篇文章暫時先簡單介紹一下matlab中常見的錯誤神馬的,算是一個小tips,希望能夠對大家平時的學習神馬的起到幫助。        有很多人問我寫這些教程是為了什麼,我說只是我想寫而已。
  • 文科生快速入門python(十三) | 文件讀寫詳解
    除了之外【python辦公自動化(一) | chardet庫自動讀寫多編碼格式的文件】中描述的編碼錯誤外,還有忘記close()造成讀不到文件、搞混r,w,a,x模式、寫錯read, readline, readlines方法之類的常見錯誤。
  • [優化] 《MATLAB高效編程技巧與應用:25個案例分析》源程序+數據
    《MATLAB高效編程技巧與應用:25個案例分析》源程序+數據 所屬分類:計算機 > 計算機輔助設計與工程計算 > Matlab 內容簡介本書是作者八年matlab使用經驗的總結,精心設計的所有案例均來自於國內各大matlab技術論壇網友的切身需求,其中不少案例涉及的內容和求解方法在國內現已出版的matlab書籍中鮮有介紹
  • matlab vs R
    入門所需的知識體系上,matlab 教學已經形成了完善的體系,在目前國內高效的教學上,這一點顯而易見。但論入門之後的難易程度而言,R 的代碼量要比 matlab 小一些,並且不需要在很多的細節上注意很多,代碼較為簡便、易讀。
  • 奇怪的Matlab畫圖技巧系列1–保存高清大圖
    畢業季馬上要到了,給大家總結一些我平常用到的奇特但是好用的Matlab畫圖技巧保存高清大圖很多朋友保存Matlab圖片時會選擇jpg保存或者截圖,然後放到論文發現特別模糊尤其文字部分是進行縮放調整後matlab默認的jpeg等格式導出時默認解析度很低,導致上述的縮放大部分變成放大而非縮小。
  • python讀寫文件
    今天我們就以這幾個需求為背景來看看python是如何讀寫文件的。基本概念介紹我們知道python中一切都是對象,「文件」也不例外。下面的實驗可以看出文件是名叫『_io.TextIOWrapper』的class。
  • Matlab有用的小工具小技巧
    解決這個問題最簡單的方法是:……哈哈,直接調用現成函數(筆者在原作者的基礎上做了一點修訂,使之在橫坐標和縱坐標範圍相差數值上很大時也能用,大家也可以考慮一下log坐標的問題),當在使用legend後再使用這個函數,不會影響legend:"nummarkers.m" http://pan.baidu.com/share/link?
  • 關於Matlab的那些事
    而後由於所學的專業是生命科學和環境相關的東西,用到matlab的機會不多,主要是一些功能用matlab實現起來不是很方便,而且手邊有現成的軟體可以做到,例如圖像分析,還有DNA序列分析都有現成軟體等。本以為不會與其有太多交集。我下決心學習matlab是在經歷幾件事情之後。