MATLAB學(xué)習(xí)筆記—文件操作

文件操作(File IO)

使用文件有諸多優(yōu)點(diǎn):

首先它是被一直存儲(chǔ)在硬盤中的企孩,它里面儲(chǔ)存著信息,文件可以由操作系統(tǒng)輕松的管理袁稽,文件同時(shí)也可以被復(fù)制和移動(dòng)勿璃,可以被不同軟件訪問。

對(duì)于MATLAB推汽,它不僅可以處理其專有文件格式(.mat .m)补疑,還可以處理txt文本文檔、二進(jìn)制文件歹撒,甚至Excel文件莲组。

pwd命令可以顯示當(dāng)前所在的目錄 (Print Working Directory)

ls命令可以列出當(dāng)前目錄下所有文件

cd命令可以改變目錄 (Change Directory)

cd('Lesson 08')    %進(jìn)入當(dāng)前文件夾下的Lesson 08文件夾
cd('..')           %返回上級(jí)目錄
cd('../..')        %返回上上級(jí)目錄
mkdir('folder')    %創(chuàng)建新目錄
rmdir('folder')    %刪除空目錄

save命令可以保存當(dāng)前工作區(qū)

load命令可以加載當(dāng)前工作區(qū)

save my_data_file data s a    %將變量a和s保存至my_data_file.mat
load my_data_file             %從my_data_file.mat中加載變量

Excel文件操作

MATLAB支持讀取和寫入Microsoft Excel文件。需要用到xlsreadxlswrite兩個(gè)函數(shù)暖夭。

>> [num,txt,raw] = xlsread('Nashville_climate.xlsx')

num元素包含了表中所有的數(shù)字锹杈,txt則是包含了文字,raw儲(chǔ)存了所有

>> temps = xlsread('Nashville_climate.xlsx')  %temps包含有數(shù)字
>> [temps txt] = xlsread('Nashville_climate.xlsx')
>> [~, text] = xlsread('Nashville_climate.xlsx')  %只輸出text
>> [~, ~, everything] = xlsread('Nashville_climate.xlsx')  
>> num = xlsread('Nashville_climate.xlsx', 1, 'D15:E17')
%數(shù)字1表示工作簿鳞尔,D15指定了D15這個(gè)單元格
>> num = xlsread('Nashville_climate.xlsx', 1, 'D15:E17')

至于xlswrite嬉橙,可以寫入CSV文件。不詳細(xì)討論了寥假。

txt文件操作

fid = fopen(filename, permission);
fclose(fid);

其中permission這個(gè)參數(shù)可以有很多市框,如:rt wt at r+t w+t a+t

下面用一個(gè)示例來進(jìn)行txt文件讀取操作的演示。

function view_text_file(filename)
fid = fopen(filename,'rt');
if fid < 0
    error('error opening file %s\n', filename);
end

% Read file as a set of strings, one string per line:
oneline = fgets(fid);
while ischar(oneline)
    fprintf('%s',oneline) % display one line
    oneline = fgets(fid);
end
fprintf('\n');
fclose(fid);

再來看看如何寫入txt文件糕韧。

function write_temp_precip_txt(filename)
Title_1 = 'Climate Data for Nashville, TN';
Title_2 = '(Average highs (F), lows (F), and precip (in)';
Label_1 = ' High ';
Label_2 = ' Low  ';
Label_3 = 'Precip';
Mo_1 = {'Jan','Feb','March','April','May','June'};
Mo_2 = {'July','Aug','Sep','Oct','Nov','Dec'};  
Data_1 = [
46  28  3.98
51  31  3.7
61  39  4.88
70  47  3.94
78  57  5.08
85  65  4.09];
Data_2 = [
89  69  3.78
88  68  3.27
82  61  3.58
71  49  2.87
59  40  4.45
49  31  4.53];
fid = fopen(filename,'w+t');
if fid < 0
fprintf('error opening file\n');
return;
end
fprintf(fid,'%s\n',Title_1);
fprintf(fid,'%s\n',Title_2);
fprintf(fid,'\n');
fprintf(fid,'       %s%s%s\n',Label_1,Label_2,Label_3);
for ii = 1:6
fprintf(fid,'%5s: ',Mo_1{ii});
fprintf(fid,'%5.2f,%5.2f,%5.2f\n',Data_1(ii,:));  
end
fprintf(fid,'\n');
fprintf(fid,'       %s%s%s\n',Label_1,Label_2,Label_3);
for ii = 1:6
fprintf(fid,'%5s: ',Mo_2{ii});
fprintf(fid,'%5.2f,%5.2f,%5.2f\n',Data_2(ii,:));  
end
fclose(fid);

二進(jìn)制文件操作

在更多的時(shí)候枫振,使用二進(jìn)制(binary)文件進(jìn)行文件存儲(chǔ)和讀取具有更高的效率。

下面就給出操作二進(jìn)制的例子來看看MATLAB是如何存取二進(jìn)制文件的萤彩。

function A = read_bin_file(filename,data_type)
fid = fopen(filename,'r');
if fid < 0
    error('error opening file %s\n',filename);
end

A = fread(fid,inf,data_type);

fclose(fid);

下面是寫入二進(jìn)制文件

function write_array_bin(A,filename)
fid = fopen(filename,'w+');
if fid < 0
    error('error opening file %s\n', filename);
end

fwrite(fid,A,'double');

fclose(fid);

小結(jié):

MATLAB提供了對(duì)常用文件類型操作的支持粪滤,使用文件,我們可以更方便地讀入大量數(shù)據(jù)并進(jìn)行操作雀扶,同時(shí)輸出易于閱讀的數(shù)據(jù)杖小。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末肆汹,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子予权,更是在濱河造成了極大的恐慌昂勉,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,914評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扫腺,死亡現(xiàn)場離奇詭異岗照,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)笆环,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門攒至,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人躁劣,你說我怎么就攤上這事迫吐。” “怎么了习绢?”我有些...
    開封第一講書人閱讀 156,531評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵渠抹,是天一觀的道長。 經(jīng)常有香客問我闪萄,道長梧却,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,309評(píng)論 1 282
  • 正文 為了忘掉前任败去,我火速辦了婚禮放航,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘圆裕。我一直安慰自己广鳍,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評(píng)論 5 384
  • 文/花漫 我一把揭開白布吓妆。 她就那樣靜靜地躺著赊时,像睡著了一般。 火紅的嫁衣襯著肌膚如雪行拢。 梳的紋絲不亂的頭發(fā)上祖秒,一...
    開封第一講書人閱讀 49,730評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音舟奠,去河邊找鬼竭缝。 笑死,一個(gè)胖子當(dāng)著我的面吹牛沼瘫,可吹牛的內(nèi)容都是我干的抬纸。 我是一名探鬼主播,決...
    沈念sama閱讀 38,882評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼耿戚,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼湿故!你這毒婦竟也來了阿趁?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,643評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤晓锻,失蹤者是張志新(化名)和其女友劉穎歌焦,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體砚哆,經(jīng)...
    沈念sama閱讀 44,095評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評(píng)論 2 325
  • 正文 我和宋清朗相戀三年屑墨,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了躁锁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,566評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡卵史,死狀恐怖战转,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情以躯,我是刑警寧澤槐秧,帶...
    沈念sama閱讀 34,253評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站忧设,受9級(jí)特大地震影響刁标,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜址晕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評(píng)論 3 312
  • 文/蒙蒙 一膀懈、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧谨垃,春花似錦启搂、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至匙隔,卻和暖如春疑苫,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背牡直。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評(píng)論 1 264
  • 我被黑心中介騙來泰國打工缀匕, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人碰逸。 一個(gè)月前我還...
    沈念sama閱讀 46,248評(píng)論 2 360
  • 正文 我出身青樓乡小,卻偏偏與公主長得像,于是被迫代替她去往敵國和親饵史。 傳聞我的和親對(duì)象是個(gè)殘疾皇子满钟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容