MATLAB中檔案的讀寫和資料的匯入匯出

2021-09-07 13:02:51 字數 4178 閱讀 9537

表13-2 dlmwrite函式的可用引數

參 數 名

功    能

delimiter

用於指定分隔符

newline

用於指定換行符,可以選擇「pc」或者「unix」

roffset

行偏差,指定檔案第一行的位置,roffset 的基數為 0

coffset

列偏差,指定檔案第一列的位置,coffset 的基數為 0

precision

指定精確度,可以指定精確維數,或者採用 c 語言的格式,如「.5f」

3. textread,textscan

當檔案的格式已知時,可以利用textread函式和textscan函式讀入。這裡只介紹這兩個函式應用的例項。

例13-5 通過%讀入檔案,按照原有格式讀取。

檔案的內容為:

sally    level1 12.34 45 yes

在命令視窗中輸入:

>> [names, types, x, y, answer] = textread('d:\mat.txt','%s %s %f %d %s', 1)

得到結果為:

names =

'sally'

types =

'level1'

x =12.3400

y =45

answer =

'yes'

例13-6 函式csvread和csvwrite的應用

sally level1 12.34 45 1.23e10 inf nan yes

joe level2 23.54 60 9e19 -inf 0.001 no

bill level3 34.90 12 2e5 10 100 no

>> fid = fopen('d:\mat.txt');

>> c = textscan(fid, '%s %s �2 � %u %f %f %s');

>> fclose(fid);

13.3 低階檔案i/o

本節介紹一些基本的檔案操作,這些操作如表13-3所示。

表13-3 matlab的基本檔案操作

函    數

功    能

fclose

關閉開啟的檔案

feof

判斷是否為檔案結尾

ferror

檔案輸入輸出中的錯誤查詢

fgetl

讀入一行,忽略換行符

fgets

讀入一行,直到換行符

fopen

開啟檔案,或者獲取開啟檔案的資訊

fprintf

格式化輸入資料到檔案

fread

從檔案中讀取二進位制資料

frewind

將檔案的位置指標移至檔案開頭位置

fscanf

格式化讀入

fseek

設定檔案位置指標

ftell

檔案位置指標

fwrite

向檔案中寫入資料

下面重點介紹函式fprintf。該函式的呼叫格式如下:

count = fprintf(fid, format, a, ...),該語句將矩陣a及後面其他引數中數字的實部以 format 指定的格式寫入到fid指定的檔案中,返回寫入資料的位元組數。

上面語句中,引數format由%開頭,共可由4個部分組成,分別如下:

● 標記(flag),為可選部分。

● 寬度和精度指示,為可選部分。

● 型別標誌符,為可選部分。

● 轉換字元,為必需部分。

1. 標記

標記用於控制輸出的對齊方式,可以選擇的內容如表13-4所示。

表13-4 標記的可選內容

函    數

功    能

示    例

負號(-)

在引數左側進行判別

%-5.2d

加號(+)

在數字前新增符號

%+5.2d

空格在數字前插入空格

% 5.2d

0在數字前插入0

.2d2. 寬度和精度指示

使用者可以通過數字指定輸出數字的寬度及精度,格式如下:

● o,指定數字的寬度;

● %6.2f,指定數字的寬度及精度;

● %.2f,指定數字的精度。

例13-6 fprintf函式寬度和精度指示符示例。

在命令視窗中輸入如下命令:

>> file_type = fopen('d:\type.txt','w');

>> fprintf(file_h, '%6.2f .8f\n', 1.2, -43.3);

>> fprintf(file_h, 'o f\n', 1.2, -43.3);

>> fprintf(file_h, '%.2f %.8f\n', 1.2, -43.3);

>> fclose(file_h)

ans =

0開啟該檔案,其內容為:

1.20 -43.30000000

1.200000   -43.300000

1.20 -43.30000000

從上述結果可以看出寬度和精度控制的效果。

3. 轉換字元

轉換字元用於指定輸出的符號,可以選擇的內容如表13-5所示。

表13-5 格式化輸出的標誌符及意義

標 志 符

意    義

%c輸出單個字元

%d輸出有符號十進位制數

%e採用指數格式輸出,採用小寫字母 e,如:3.1415e+00

(續表)  

標 志 符

意    義

%e採用指數格式輸出,採用大寫字母 e,如:3.1415e+00

%f以定點數的格式輸出

%g%e及%f的更緊湊的格式,不顯示數字中無效的 0

%g與%g相同,但是使用大寫字母e

%i有符號十進位制數

%o無符號八進位制數

%s輸出字串

%u無符號十進位制數

%x十六進製制數(使用小寫字母a-f)

%x十六進製制數(使用大寫字母a-f)

其中 %o、%u、%x、%x支援使用子型別,具體情況這裡不再贅述。格式化輸出標誌符的效果見下面的例子。

例13-7 fprintf 格式化輸出示例。

>> x = 0:.1:1;

>> y = [x; exp(x)];

>> fid = fopen('exp.txt', 'wt');

>> fprintf(fid, '%6.2f .8f\n', y);

>> fclose(fid)

ans =

0顯示該檔案:

>> type exp.txt

0.00   1.00000000

0.10   1.10517092

…0.90   2.45960311

1.00   2.71828183

例13-9 利用 fprintf 函式在顯示器上輸出字串

>> fprintf(1,'it''s friday.\n')

it's friday.

在該例中,利用1表示顯示器,並且用兩個單引號顯示單引號,使用\n進行換行。在格式化輸出中,這類符號稱為轉義符。matlab中的常用轉義符如表13-6所示。

表13-6 matlab中的常用轉義符

轉 義 符

功    能

\b                                         退格

\f                                          **填充

\n                                       換行符

\r            回車

\t            tab

\\              反斜線

\'' 或 ''                                 單引號

%%              百分號

13.4 利用介面工具匯入資料

除前面幾節介紹的函式外,也可以通過介面工具將資料匯入到工作區中。本節介紹利用工作區瀏覽器中的工具匯入資料。

選擇工作區瀏覽器工具欄中的「import data」,選擇待匯入的檔案,這裡我們選擇了乙個文字檔案,其內容為逗號分隔的數字,開啟視窗如圖13-3所示。

mixout 檔案集讀取方法

C 讀寫matlab資料 mat檔案

我的計算機環境是win8 64位系統,vs2010,matlab r2010b step1 新建專案 專案屬性設定 vc 目錄 包含目錄 新增 matlab r2010b extern include matlab r2010b extern include win64 庫目錄 新增 matlab ...

Matlab 讀寫yuv檔案

clear all clc fid fopen data testing down.yuv r 讀入檔案 fod fopen data testing test.yuv w 輸出檔案 row 768 2 col 1024 2 影象的高 寬 frames 97 total 97 序列的幀數 for f...

MATLAB如何讀寫檔案

很多時候,使用matlab生成資料和處理是一種不錯的選擇,往往需要讀取指定路徑的檔案,有時候還需要遍歷檔案,或者將處理的資料儲存在指定路徑的檔案之中,那麼如何使用matlab來讀寫檔案呢?if exist d path dir mkdir d path endfid fopen path,r pro...