Matlab文件夾、文件、讀取操作(匯總)


【轉載】Matlab文件夾、文件、讀取操作(匯總)

 

一、 matlab對路徑的操作



filesep
用於返回當前平台的目錄分隔符,Windows是反斜杠(),Linux是斜杠(/)。

fullfile
用於將若干字符串連接成一個完整的路徑。例如:

f=fullfile('D:','Matlab','example.txt')
f=D:\Matlab\example.txt
在Windows中,“D:\”表示D盤,“D:”表示目錄

fileparts
用於將一個完整的文件名分割成4部分:路徑,文件名,擴展名。例如:
>> f=fullfile('D:','Matlab','example.txt');
>> [pathstr,name,ext]=fileparts(f)
pathstr=D:\Matlab
name=example
ext=.txt
pathsep
返回當前平台的路徑分隔符。Windows是分號(;),Linux是冒號(:)。

exist
可以用於判斷目錄或者文件是否存在,同時不同的返回值有不同的含義。例如:

>> f=fullfile('D:','Matlab','example.txt'); >>exist(f)
ans=2
>>exist('D:\Matlab') ans =7
which
可以通過一個函數或腳本名稱得到它的完整路徑,同時還能處理函數重載的情況,例如:
>> which abs(0)
C:\MATLAB7\toolbox\matlab\elfun\@double\abs.bi % double method
>> which abs(single(0))
C:\MATLAB7\toolbox\matlab\elfun\@single\abs.bi % single method
isdir
判斷一個路徑是否代表了一個目錄,例如:
>> p='D:\Matlab';
>> f=fullfile(p,'example.txt');
>> isp=isdir(p)
isp=1
>> isf=isdir(f)
isf=0
dir
用於列出一個目錄的內容,返回值為結構體數組類型,包含如下部分:name:文件或目錄的名稱;date:修改日期;bytes:文件大小;isdir:是否是目錄。例如:
>> p='D:\Matlab';
>>files=dir(p)
files =
8x1 struct array with fields:
name
date
bytes
isdir
datenum
還可以查找特定后綴的文件:
如:dir(['fk\','*.jpg'])表示查找 fk文件夾下后綴為 ' .jpg' 的文件
若 fk 目錄下存在后綴為'.jpg' 的文件,則返回文件名:
1260500466587.jpg 1260500472025.jpg 8673601d.jpg
否則返回:fk.\*.jpg not found.

mkdir(' fj '):用於創建文件夾
如:mkdir(' fj '), 表示在當前路徑創建名為 fj 的文件夾
mkdir(' fj\fi ')則表示在當前路徑下的 fj 文件夾里創建 fi 子文件夾

rmdir(' fl '):用於刪除文件夾
如:rmdir('fl'),表示刪除當前路徑下名為 fl 的文件夾

cd
用於切換當前工作目錄。例如:

>>cd('c:/toolbox/matlab/demos') %切換當前工作目錄到demos
>>cd .. %返回上一級目錄
pwd
用於當前工作目錄的路徑。例如:
>> pwd ans =C:\MATLAB7\work

path
用於對搜索路徑的操作。例如:

>>path %查詢當前所有的搜索路徑(MATLABPATH)
>>p=path %把當前的搜索路徑存在字符串變量p中
>>path(‘newpath’) %將當前搜索路徑設置為newpath
>>path(path,’newpath’) %向路徑添加一個新目錄newpath
>>path(’newpath’, path) %向當前搜索路徑預加一個新目錄nespath
addpath和rmpath
用於對matlab搜索路徑的添加和刪除。例如:
>>addpath(‘directory’) %將完整路徑directory加入到當前搜索路徑的最頂端
>>rmpath
what
用於顯示出某目錄下存在哪些matlab文件;若輸入完整路徑,可列出指定目錄下的文件。例如:
>>what
>>what dirname
>>what(‘dirname’)
其中dirname是要查找的路徑的名字,路徑在matlab的搜索路徑內時,沒有必要輸入全名,只輸入最后或最后兩級就夠了。

path2rc
保存當前matlab的搜索路徑到pathdef.m文件中。


二、對文件夾內文件操作

三、對文件的操作



1 文件的打開和關閉
1.1 文件的打開
fopen ('filename', 'mode')
mode格式有:
‘r’:只讀方式打開文件(默認的方式),該文件必須已存在。
‘r+’:讀寫方式打開文件,打開后先讀后寫。該文件必須已存在。
‘w’:打開后寫入數據。該文件已存在則更新;不存在則創建。
‘w+’:讀寫方式打開文件。先讀后寫。該文件已存在則更新;不存在則創建。
‘a’:在打開的文件末端添加數據。文件不存在則創建。
‘a+’:打開文件后,先讀入數據再添加數據。文件不存在則創建。 如果rt表示該文件以文本方式打開,如果添加的是“b”,則以二進制格式打開,這也是fopen函數默認的打開方式。

Fopen函數兩個返回值:

一個是返回一個文件標識(file Identifier),它會作為參數被傳入其他對文件進 行讀寫操作的命令,通常是一個非負的整數,可用此標識來對此文件進行各種處理。
如果返回的文件標識是–1,則代表fopen無法打開文件,其原因可能是文件不存在,或是用戶無法打開此文件權限

另一個返回值就是message,用於返回無法打開文件的原因;
1.2 文件的關閉
fclose(f)
f為打開文件的標志,若fclose函數返回值為0,則表示成功關閉f標志的文件;若返回值為–1,則表示無法成功關閉該文件。

打開和關閉文件比較耗時,最好不要在循環體內使用文件

若要一次關閉打開的所有文件,可以使用下面的命令:fclose all

1.3 從文本文件中讀取數據
MATLAB自帶的MAT文件為二進制文件,但為了便於和外部程序進行交換以及方便查看文件中的數據,也常常采用文本數據格式(數據采用ASCII碼格式,可以表示字母和數字字符)與外界進行數據交換。

使用導入模板來讀取數據
使用函數來讀取文本數據
函 數 | csvread| dlmread| fscanf| load| textread|
-|-|-
數 據 類 型| 數值數據| 數值數據| 字母和數值| 數值數據| 字母和數值|
分 隔 符| 僅cooma| 任何字符| 任何字符| 僅space| 任何字符|
返 回 值| 1| 1| 1| 1| 多返回值

如:A=load('my_data.txt');

讀取有分隔符的ASCII數據文件 如果數據文件不使用空格符而是使用逗號或是其他符號作為分隔符,用戶可以選擇多個可用的導入數據函數。最簡單的便是使用函數dlmread。
lcode.dat
0.3445,0.8433,0.7865
0.7562,0.4233,0
A=dlmread('lcode.dat',',')
分隔符只能選取單個字符,不能用字符串來作為分隔符

使用文本頭讀取數值數據
要讀取一個包含文本頭的ASCII碼數據文件,可以使用textread函數,並指定頭行參數。Textread既能處理有固定格式的文件,也可以處理無格式的文件,還可以對文件中每行數據按列逐個讀取。
textread函數常見的調用方法有如下幾種:
[A,B,C...]=textread('filename', 'format')
[A,B,C...]=textread('filename', 'format',N)
讀取字母數值混合的數據
例:
文件my_exam.dat包含的混合的字母和數值如下:
Joe gradeA 4.9 pass
susan gradeD 2.0 fail
如果想把4列數據全部讀取出放在4個變量中,則使用如下命令:
>> [name gra grades answer]=textread('my_exam.dat','%s %s %f %s')

textread 函數按格式字符串中指定的格式處理文件中的某個數據項,並把值放在輸出變量中。輸出變量的數目必須和格式字符串中指定的變換數目項匹配,在該例中,函數按格式字符串來讀取文件。

2. 文件的存儲
2.1 文件存寫函數
函 數| csvwrite| diary| dlmwrite| fprintf| save
-|-|-
數 據 類 型| 數值數據| 數值數據或單元陣列| 數值數據| 字母和數值數據| 數值數據
分 隔 符| 逗號| 空格| 任何字符| 任何字符| 制表符或空格符

存寫有分隔符的ASCII碼數據文件 若要將當前的MATLAB工作空間的一個或多個變量寫到一個有分隔符的ASCII碼文件中,可以使用save命令或dlmwrite函數。在默認情況下,save命令是以 MAT 格式存寫數據的。

* fprintf函數功能
fprintf(fileID, format, A)
count = fprintf(...) %fprintf寫入返回數字的字節。
Format:使用單引號的字符串,它描述了輸出字段的格式。可以包括下列組合:百分號后 跟一個轉換字符,如'%s的為字符串'。
Paste_Image.png
Paste_Image.png
轉義字符 作用
'' 單引號
%% 百分比字符
\\ 反斜杠
\a 報警book.iLoveMatlab.cn
\b 退格
\f 換頁
\n 新行
\ṛ 回車
\t 水平制表符
\ v 垂直制表
\xN 十六進制數N
\N 八進制數N
作用 | 標志 | 例子
-|-
左對齊 | ' - ' | %-5.2f
打印符號字符(+或 - ) | '+' | %+5.2f
插入空格| ' ' | % 5.2f
墊零 | '0' | %05.2f
對%o, %x, %X, 打印 0,0x,0X的前綴。
對%f, %e, %E, 打印小數點,即使是0。
對%g, %G,不刪除或尾部的零或小數點。 | '#' | %#5.0f

2.2 使用文件I/O函數
2.2.1格式化寫入文本數據
例: 創建一個2×2的魔方矩陣,然后打開一文件,寫入數據。

>> clear all;
>> x=magic(2);
>> fid=fopen('exam4.txt','w');
>> fprintf(fid,'%4.2f %8.4f\n',x);
>> fclose(fid);
>> x
x = 1 3 4 2
>> type exam4.txt
1.00 4.0000
3.00 2.0000
fprintf函數存儲的時候按行讀取,然后按列存寫

2.2.2 控制文件位置指針
fseek frewind
設定指針位置重設指針到文件起始位置
ftell feof
獲得指針位置測試指針是否在文件結束位置

fseek函數用法
fseek 函數用於指定文件指針的位置,調用方式如下: status=fseek(fid,offset,origin) fid是指定的文件標識符。offset為整數型變量,表示相對於指定位置需要的偏移字節數,正數表示向文件末尾偏移,負數表示向文件開頭偏移。Origin可以是特定字符串,也可以是整數,表示文件中的參考位置。
參考位置說明:
'bof'或者 -1文件開頭
'cof '或者 0文件中當前位置
'eof '或者 1文件末尾

ftell函數用法
ftell 函數用來獲得當前文件指針的位置,調用方式如下: position=ftell(fid) fid是指定的文件標識符。Position為返回值,表示當前指針的位置。position是以相對於文件開頭的字節數來表示的。如果返回值為–1,表示未能成功調用。這是可以通過調用feeeor(fid)的具體的錯誤信息。
frewind函數用法
frewind 函數用來把文件指針重新復位到文件開頭。調用方式如下: frewind(fid) 其中fid為指定的文件標識符,其作用和fseek(fid,0,-1)是等效的。
feof函數用法
feof 函數用來判斷是否到達文件末尾。調用方式如下: eofstat=feof(fid) 其中fid為指定的文件標識符。eofstat是返回值,當到達文件末尾時,eofstat為1;否則為0。

 

https://www.jianshu.com/p/a56de74054e2


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM