用matlab做數據處理的幾個小坑


導入數據是個苦差事,有時候matlab不接受你給它的數據格式,譬如xls和xlsx明明能夠打開,但是matlab卻死活不認。

怎么辦?如果能夠將這些數據變成txt格式,會方便得多

給你們一個思想

大量數據xls首尾相接匯總到一個xls文件中可以使用 批處理方法。百度搜索 批處理大量數據匯總到一個文件中

 

①xlsread('文件名.xls',一些位置參數)

詳細參數在命令框中輸入 help xlsread

②csvread('文件名.csv',一些位置參數)

 

③批量讀取一個文件夾中所有文件名字的好方法

file_read=dir('E:\股票數據\1滬深A\*.txt');%讀取文件夾的位置

如此讀取出來的file_read會是一個cell元組類型,如果你對matlab只是一知半解,那么操作這個cell,下面的命令可以幫你,用上面的

file_read生成的cell作為例子

如果你的cell長得就是矩陣模樣,但是無法調用

要調用cell的某行某列,使用file_read(行號,列號) 即可,但是調用出來還是一個cell,就算這個cell就是一個數字,但是它都沒辦法直接輸出和使用到別的地方。

怎么處理呢?

char(file_read(行號,列號))可以把這個單元cell轉化成字符串形式

而利用str2num即可將本來就是數字的字符串轉化成真正的數字

str2num(char(file_read(行號,列號)))=這個單元cell的數字,float雙精度浮點數類型表示

補充:而我們知道,如果給定一個字符串,假如說ch='abcdefghi'

這種用法ch(3:5)='cde'是從字符串第一個字符數起開始調用的方法

 

補充2:要給cell的某行某列賦值,怎么辦??

例如file_read(1,3)={[可以寫任意數字或變量]} 

意味着給第一行第三列這個單元格賦值,這樣。如果原來cell的規模根本沒有到1行三列,matlab會自動將cell補齊空值到一行三列。就算你給那個單元格賦值非空,其他單元格會自動補齊空值[] 直到讓cell成為矩陣

補充3:cell直接轉化成數值矩陣

例子

C = {[1] [2 3 4]; [5; 9] [6 7 8; 10 11 12]};

 M = cell2mat(C) ;

這樣,M就變成了數值矩陣

M = 

1   2      3   4

5   6     7    8

9  10     11  12

 

④我怎么循環打開一個文件夾下的所有文件?

談這個話題,怎么打開txt文件?

textread和textscan是好方法,具體不詳述,你可以在CSDN論壇上搜索到這種用法

 

 

 

 

⑤合並字符串

 

有時候,在處理地址路徑的循環迭代當中會用到

filename=strcat('E:\股票數據\1滬深A\',filename);

原本filename僅僅是'SH00001.txt'

這樣的文件名,沒有路徑

但是strcat能夠將兩個字符串拼到一起,得到的結果就是

filename='E:\股票數據\1滬深A\SH00001.txt'

如此便能夠和最上面說的,dir命令結合起來對文件夾進行循環



作者:王偉喆
鏈接:https://www.jianshu.com/p/7d6a0d3cc76b
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com