總結(jié)一下用matlab做數(shù)據(jù)處理的幾個小坑——學(xué)習(xí)筆記


導(dǎo)入數(shù)據(jù)是個苦差事,有時候matlab不接受你給它的數(shù)據(jù)格式,譬如xls和xlsx明明能夠打開,但是matlab卻死活不認(rèn)。

怎么辦?如果能夠?qū)⑦@些數(shù)據(jù)變成txt格式,會方便得多

給你們一個思想

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


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

詳細(xì)參數(shù)在命令框中輸入?help?xlsread

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


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

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

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

file_read生成的cell作為例子

如果你的cell長得就是矩陣模樣,但是無法調(diào)用

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

怎么處理呢?

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

而利用str2num即可將本來就是數(shù)字的字符串轉(zhuǎn)化成真正的數(shù)字

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

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

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


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

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

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

補(bǔ)充3:cell直接轉(zhuǎn)化成數(shù)值矩陣

例子

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

?M = cell2mat(C) ;

這樣,M就變成了數(shù)值矩陣

M =?

1? ?2? ? ? 3? ?4

5? ?6? ? ?7? ? 8

9? 10? ? ?11? 12


④我怎么循環(huán)打開一個文件夾下的所有文件?

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

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





⑤合并字符串


有時候,在處理地址路徑的循環(huán)迭代當(dāng)中會用到

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

原本filename僅僅是'SH00001.txt'

這樣的文件名,沒有路徑

但是strcat能夠?qū)蓚€字符串拼到一起,得到的結(jié)果就是

filename='E:\股票數(shù)據(jù)\1滬深A(yù)\SH00001.txt'

如此便能夠和最上面說的,dir命令結(jié)合起來對文件夾進(jìn)行循環(huán)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容