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

文件操作(File IO)

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

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

對于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('..')           %返回上級目錄
cd('../..')        %返回上上級目錄
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提供了對常用文件類型操作的支持,使用文件,我們可以更方便地讀入大量數(shù)據(jù)并進(jìn)行操作,同時(shí)輸出易于閱讀的數(shù)據(jù)。

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

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

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