MATLAB练习例子三(读写文件)
返回
》 fwriteid = fopen('magic5.bin','w');
》 whos
Name Size Bytes Class
fwriteid 1x1 8 double array
Grand total is 1 elements using 8 bytes
》 count = fwrite(fwriteid,magic(5),'int32');
》 status = fclose(fwriteid);
》 whos
Name Size Bytes Class
count 1x1 8 double array
fwriteid 1x1 8 double array
status 1x1 8 double array
Grand total is 3 elements using 24 bytes
》 magic(5)
ans =
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
》
magic(5)的16进制显示
读binary数据文件
》 fid = fopen('datag.dat','r');
》 A = fread(fid);
》 A
A =
8
0
0
0
1
0
0
0
0
0
0
0
8
0
0
0
》
》 imread ex1.jpg
》 whos
Name Size Bytes Class
ans 923x1209x3 3347721 uint8 array
Grand total is 3347721 elements using 3347721 bytes
》 imfinfo ex1.jpg
ans =
Filename: 'ex1.jpg'
FileModDate: '04-Oct-2007 16:24:54'
FileSize: 150320
Format: 'jpg'
FormatVersion: ''
Width: 1209
Height: 923
BitDepth: 24
ColorType: 'truecolor'
FormatSignature: ''
写入ex1.bmp文件
》 imwrite(ans,'ex1.bmp','BMP')
》 help imread
IMREAD グラフィックスファイルからイメージを読み込みます
A = IMREAD(FILENAME,FMT)は、FILENAME内のイメージを、Aに読み
込みます。クラスはuint8です。
ファイルがグレイスケール強度イメージを含む場合、Aは2次元配列です。
ファイルがトゥルーカラー(RGB)イメージを含む場合、Aは3次元(M*N*3)
配列です。FILENAMEは、グラフィックスファイル名を指定する文字列で、
FMTはファイルの書式を指定する文字列です。
ファイルは、カレントのディレクトリ、またはMATLABパス上のディレクトリ
になければなりません。
IMREADがファイルFILENAMEを見つけられない場合は、FILENAME.FMT
を探します。
FMTの取りうる値を以下に示します。
'bmp' Windows Bitmap (BMP)
'hdf' Hierarchical Data Format (HDF)
'jpg' または'jpeg' Joint Photographic Experts Group (JPEG)
'pcx' Windows Paintbrush (PCX)
'tif' または'tiff' Tagged Image File Format (TIFF)
'xwd' X Window Dump (XWD)
[X,MAP] = IMREAD(FILENAME,FMT)は、FILENAMEのインデックス付き
イメージをXに読み込み、対応するカラーマップをMAPに読み込みます。
Xは、クラスuint8で、MAPはクラスdoubleです。カラーマップの値は、読み
込まれたときに、範囲[0,1]に再スケーリングされます。
[...] = IMREAD(FILENAME)は、その内容からファイルの書式を推測します。
[...] = IMREAD(...,IDX)は、複数のイメージをもつTIFFファイルから、1つ
のイメージを読み込みます。IDXは、ファイル内のイメージの順番を指定
する整数値です。 たとえば、IDXが3ならば、IMREADは、ファイルの3番
目のイメージを読み込みます。この引数を省略すると、IMREADはファイ
ルの1番目のイメージを読み込みます。
[...] = IMREAD(...,REF)は、複数のイメージをもつHDFファイルから、1つ
のイメージを読み込みます。REFは、イメージを識別するために使う参照
番号を指定する整数値です。たとえば、REFが12ならば、IMREADは参照
番号が12のイメージを読み込みます(HDFファイルでは、参照番号はファ
イル内のイメージの順序と対応させる必要はありません。参照番号をイ
メージの順番を一致させるためには、IMFINFOを使うことができます)。
この引数を省略すると、IMREADは、ファイルの1番目のイメージを読み込
みます。
つぎの表に、IMREADが読み込むことができるイメージのタイプをまとめて
示します。
BMP 1ビット、4ビット、8ビット、24ビットの圧縮されていないイメージ。
4ビットと8ビットの実行長エンコード(RLE)イメージ。
HDF 関連するカラーマップをもつ、あるいはもたない8ビットのラスター
イメージデータセット。24ビットラスターイメージデータセット。
JPEG 任意のベースラインのJPEGイメージ。一般的に使われる拡張付
きのJPEGイメージ
PCX 1ビット、8ビット、24ビットのイメージ。
TIFF 1ビット、8ビット、24ビットの圧縮されていないイメージを含む任意
のベースラインのTIFFイメージ。
packbit圧縮の1ビット、8ビット、24ビットイメージ。
CCITT圧縮の1ビットイメージ。
XWD 1ビットと8ビットのZpixmaps。XYBitmaps。1ビットのXYPixmaps。
参考 IMFINFO, IMWRITE, FREAD、IMAGE, DOUBLE, UINT8.
Exporting ASCII data
》 A = [ 1 2 3 4 ; 5 6 7 8 ];
》 A
A =
1 2 3 4
5 6 7 8
》 save test_data.out A -ASCII
test_data.out
1.0000000e+000 2.0000000e+000 3.0000000e+000 4.0000000e+000
5.0000000e+000 6.0000000e+000 7.0000000e+000 8.0000000e+000
》 dlmwrite('test_data.out',A,';')
1;2;3;4
5;6;7;8
》 diary test_data.out
》 A
A =
1 2 3 4
5 6 7 8
》 diary off
mydata.dat
Sally Type1 12.34 45 Yes
Larry Type2 34.56 54 Yes
Tommy Type1 12.34 23 No
》 [names,types,x,y,answer] = textread('mydata.dat','%s %s %f %d %s');
》 names
names =
'Sally'
'Larry'
'Tommy'
》 types
types =
'Type1'
'Type2'
'Type1'
》 x
x =
12.3400
34.5600
12.3400
》 y
y =
45
54
23
》 answer
answer =
'Yes'
'Yes'
'No'
》
-----------------------------------------
grades.txt
85 90 95
90 92 98
100 95 97
77 87 93
》 load grades.txt
》 grades
grades =
85 90 95
90 92 98
100 95 97
77 87 93
》 whos
Name Size Bytes Class
grades 4x3 96 double array
Grand total is 12 elements using 96 bytes
-----------------------------------------------------------------
返回