一
導(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)