一、save與load函式儲存和載入程式資料
基本格式為:
save("FILENAME", "VARIABLES")
load("FILENAME", "VARIABLES")
例如,save ("datas.mat","data","x","y","z"); 表示將記憶體變數data, x, y, z 儲存到當前路徑下的datas.mat檔案,其它程式若要載入這幾個變數的資料,只需前面路徑下執行load datas;即可。
二、txt檔案的匯入匯出
1. 匯入格式一致的資料
例1 現有txt檔案如下:
程式碼:
x1=load("data1.txt"); %注意設定當前路徑為檔案所在路徑
x2=load("data2.txt");
2. 匯入有固定分隔符的資料
dlmread("FILENAME", "分隔符", "讀取範圍")
例2讀取txt檔案如下(需要跳過前2行的非資料行,或列數不同):
x3=dlmread("data3.txt", ",", 2,0) ; %設定讀取的初始位置:2行0列之後的資料
x4=dlmread("data4.txt"); %列數不足用0不齊,load函式讀取將報錯
3. 將矩陣資料寫入指定分隔符的ASCII格式檔案
dlmwrite(‘檔名’, ‘資料’, ‘分隔符’, ‘起始行’, ‘起始列’)
dlmwrite(‘檔名’, ‘資料’, "-append")
"-append"表示將矩陣資料寫到文字末尾,若不指定將覆蓋原文字資料。
4. 匯入帶表頭的txt或excel資料
importdata(‘檔名’, ‘分隔符’, ‘n’);
將資料存入“結構體”,其中,n表示n行表頭;也可以用來讀入圖片:
x=importdata("tupian.jpg"); image(x);
例3 讀入如下的txt檔案:
x5=importdata("data5.txt"," ",1); %空格分隔, 第1行是表頭
x5.data %資料
x5.textdata %表頭變數
5. 匯入混合格式文字
textscan(fid, "format", N, "param", value);
其中,fid為檔案控制代碼;format為讀取格式;N表示用該格式讀取N次資料;"param", value(可選項)指定分隔符和值對。
注意:使用textscan之前,必須先用fopen開啟要讀入的檔案;函式textread用法類似。
例4 混合格式資料的txt檔案如下:
fid=fopen("data6.txt","r"); %開啟檔案控制代碼
C=textscan(fid, "%s%s%f32%d8%u%f%f%s%f"); %按格式讀入元胞陣列C
fclose(fid); %關閉檔案控制代碼
C{1}
C{9}
[names,types,y,answer]=textread("data7.txt","%9c %6s %*f %2d %3s", 1) %讀入固定格式的檔案的第一行,忽略其中的浮點值
執行結果:C{1} = "Sally" "Joe" "Bill"
C{9} = 5.1000 + 3.0000i 2.2000 - 0.5000i 3.1000 + 0.1000i
names = Sally Lev
types = "el1"
y = 45
answer = "Yes"
三、csv檔案匯入與匯出
csv檔案是逗號分隔的txt檔案,使用csvread()函式,有3種格式:
csvread("filename", row, col, range)
其中,第一個引數指定檔名;
row和col指定開始讀取位置的行號和列號。注意是從0開始計數,即row=0, col=0表示從檔案中第一個數(1, 1)開始讀;
range指定讀取的範圍,range=[R1 C1 R2 C2],表示讀取區域的左上角位置為(R1+1, C1+1),讀取區域的右下角位置為(R2-1, C2-1),且要求row, col等於R1, C1.
注意:csv檔案中的空項,讀到矩陣中時,會初始化為0.
四、 Excel檔案的匯入與匯出
1. 匯入Excel資料檔案
[num, txt, raw] = xlsread("檔名.xls","工作表", "資料範圍")
例5 現有data1.xlsx檔案(匯入Sheet1的A1至H4資料):
[num,txt,raw]=xlsread("data1.xlsx","Sheet1","A1:H4")
%資料返回num;文字返回txt;不處理直接作為元胞返回raw
執行結果:
num =
1 60101 6010101 NaN 0 63 63
2 60101 6010102 NaN 0 73 73
3 60101 6010103 NaN 0 0 0
txt =
"序號" "班名" "學號" "姓名" "平時成績" "期末成績" "總成績" "備註"
"" "" "" "陳亮" "" "" "" ""
"" "" "" "李旭" "" "" "" ""
"" "" "" "劉鵬飛" "" "" "" "缺考"
raw =
[ 1] [60101] [6010101] "陳亮" [ 0] [ 63] [ 63] [ NaN]
[ 2] [60101] [6010102] "李旭" [ 0] [ 73] [ 73] [ NaN]
[ 3] [60101] [6010103] "劉鵬飛" [ 0] [ 0] [ 0] "缺考"
2. 將資料匯出到Excel檔案
status = xlswrite(‘filename.xls’, ‘資料’, ‘工作表’, ‘指定區域’)
成功返回1,失敗返回0.
例6 將矩陣或元胞陣列的資料寫成xls檔案
A=[12.7 5.02 -98 12; 63.9 0 -0.2 56];
xlswrite("testdata.xls", A)
d={"Time", "Temp"; 12 98; 13 99; 14 97};
s=xlswrite("tempdata.xls", d, "Temperatures", "E1")
%將資料d寫入檔案tempdata.xls, Temperatures表,E1起始
例7 讀取資料、處理日期資料,根據日期繪製開盤價變化趨勢圖形。ExpData.xlsx檔案如下(部分):
[num,txt]=xlsread("ExpData.xlsx");
%讀取excel表格中的資料,數值存入num,文字存入txt
date=txt(2:end,1); %取出日期資料單獨處理
t=datenum(date); %將日期轉化為數值(方便繪圖使用)
date1=datestr(t); %將數值轉化為日期
h=figure %生成空的圖形視窗控制代碼
set(h,"color","w"); %將圖的背景顏色設為白色
plot(t,num(:,1)); %以日期為橫座標,開盤價為縱座標,繪製圖形
%plot(t,num(:,1),"*"); %繪製散點圖
datetick("x",23); %將x軸標註變成日期格式:mm/dd/yyyy
xlabel("日期");
ylabel("開盤價");
一、save與load函式儲存和載入程式資料
基本格式為:
save("FILENAME", "VARIABLES")
load("FILENAME", "VARIABLES")
例如,save ("datas.mat","data","x","y","z"); 表示將記憶體變數data, x, y, z 儲存到當前路徑下的datas.mat檔案,其它程式若要載入這幾個變數的資料,只需前面路徑下執行load datas;即可。
二、txt檔案的匯入匯出
1. 匯入格式一致的資料
例1 現有txt檔案如下:
程式碼:
x1=load("data1.txt"); %注意設定當前路徑為檔案所在路徑
x2=load("data2.txt");
2. 匯入有固定分隔符的資料
dlmread("FILENAME", "分隔符", "讀取範圍")
例2讀取txt檔案如下(需要跳過前2行的非資料行,或列數不同):
程式碼:
x3=dlmread("data3.txt", ",", 2,0) ; %設定讀取的初始位置:2行0列之後的資料
x4=dlmread("data4.txt"); %列數不足用0不齊,load函式讀取將報錯
3. 將矩陣資料寫入指定分隔符的ASCII格式檔案
dlmwrite(‘檔名’, ‘資料’, ‘分隔符’, ‘起始行’, ‘起始列’)
dlmwrite(‘檔名’, ‘資料’, "-append")
"-append"表示將矩陣資料寫到文字末尾,若不指定將覆蓋原文字資料。
4. 匯入帶表頭的txt或excel資料
importdata(‘檔名’, ‘分隔符’, ‘n’);
將資料存入“結構體”,其中,n表示n行表頭;也可以用來讀入圖片:
x=importdata("tupian.jpg"); image(x);
例3 讀入如下的txt檔案:
程式碼:
x5=importdata("data5.txt"," ",1); %空格分隔, 第1行是表頭
x5.data %資料
x5.textdata %表頭變數
5. 匯入混合格式文字
textscan(fid, "format", N, "param", value);
其中,fid為檔案控制代碼;format為讀取格式;N表示用該格式讀取N次資料;"param", value(可選項)指定分隔符和值對。
注意:使用textscan之前,必須先用fopen開啟要讀入的檔案;函式textread用法類似。
例4 混合格式資料的txt檔案如下:
程式碼:
fid=fopen("data6.txt","r"); %開啟檔案控制代碼
C=textscan(fid, "%s%s%f32%d8%u%f%f%s%f"); %按格式讀入元胞陣列C
fclose(fid); %關閉檔案控制代碼
C{1}
C{9}
[names,types,y,answer]=textread("data7.txt","%9c %6s %*f %2d %3s", 1) %讀入固定格式的檔案的第一行,忽略其中的浮點值
執行結果:C{1} = "Sally" "Joe" "Bill"
C{9} = 5.1000 + 3.0000i 2.2000 - 0.5000i 3.1000 + 0.1000i
names = Sally Lev
types = "el1"
y = 45
answer = "Yes"
三、csv檔案匯入與匯出
csv檔案是逗號分隔的txt檔案,使用csvread()函式,有3種格式:
csvread("filename", row, col, range)
其中,第一個引數指定檔名;
row和col指定開始讀取位置的行號和列號。注意是從0開始計數,即row=0, col=0表示從檔案中第一個數(1, 1)開始讀;
range指定讀取的範圍,range=[R1 C1 R2 C2],表示讀取區域的左上角位置為(R1+1, C1+1),讀取區域的右下角位置為(R2-1, C2-1),且要求row, col等於R1, C1.
注意:csv檔案中的空項,讀到矩陣中時,會初始化為0.
四、 Excel檔案的匯入與匯出
1. 匯入Excel資料檔案
[num, txt, raw] = xlsread("檔名.xls","工作表", "資料範圍")
例5 現有data1.xlsx檔案(匯入Sheet1的A1至H4資料):
程式碼:
[num,txt,raw]=xlsread("data1.xlsx","Sheet1","A1:H4")
%資料返回num;文字返回txt;不處理直接作為元胞返回raw
執行結果:
num =
1 60101 6010101 NaN 0 63 63
2 60101 6010102 NaN 0 73 73
3 60101 6010103 NaN 0 0 0
txt =
"序號" "班名" "學號" "姓名" "平時成績" "期末成績" "總成績" "備註"
"" "" "" "陳亮" "" "" "" ""
"" "" "" "李旭" "" "" "" ""
"" "" "" "劉鵬飛" "" "" "" "缺考"
raw =
"序號" "班名" "學號" "姓名" "平時成績" "期末成績" "總成績" "備註"
[ 1] [60101] [6010101] "陳亮" [ 0] [ 63] [ 63] [ NaN]
[ 2] [60101] [6010102] "李旭" [ 0] [ 73] [ 73] [ NaN]
[ 3] [60101] [6010103] "劉鵬飛" [ 0] [ 0] [ 0] "缺考"
2. 將資料匯出到Excel檔案
status = xlswrite(‘filename.xls’, ‘資料’, ‘工作表’, ‘指定區域’)
成功返回1,失敗返回0.
例6 將矩陣或元胞陣列的資料寫成xls檔案
程式碼:
A=[12.7 5.02 -98 12; 63.9 0 -0.2 56];
xlswrite("testdata.xls", A)
d={"Time", "Temp"; 12 98; 13 99; 14 97};
s=xlswrite("tempdata.xls", d, "Temperatures", "E1")
%將資料d寫入檔案tempdata.xls, Temperatures表,E1起始
例7 讀取資料、處理日期資料,根據日期繪製開盤價變化趨勢圖形。ExpData.xlsx檔案如下(部分):
程式碼:
[num,txt]=xlsread("ExpData.xlsx");
%讀取excel表格中的資料,數值存入num,文字存入txt
date=txt(2:end,1); %取出日期資料單獨處理
t=datenum(date); %將日期轉化為數值(方便繪圖使用)
date1=datestr(t); %將數值轉化為日期
h=figure %生成空的圖形視窗控制代碼
set(h,"color","w"); %將圖的背景顏色設為白色
plot(t,num(:,1)); %以日期為橫座標,開盤價為縱座標,繪製圖形
%plot(t,num(:,1),"*"); %繪製散點圖
datetick("x",23); %將x軸標註變成日期格式:mm/dd/yyyy
xlabel("日期");
ylabel("開盤價");
執行結果: