




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
第三講 MATLAB程序設計M文件數(shù)據(jù)的輸入輸出選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)函數(shù)文件全局變量和局部變量類和對象文件操作3.1
M文件3.1.1
M文件的建立與編輯建立新的M文件菜單操作:MATLAB命令窗口的File菜單→
New菜單項→M-file命令。命令操作:在MATLAB命令窗口輸入命令
edit。命令按鈕操作:單擊MATLAB命令窗口工具欄上的“新建”命令按鈕。編輯已有的M文件3.1.2
M文件的分類分類:獨立的m文件—稱命令文件(script
File),主程序命令文件實際上是一串指令的集合,與在命令窗口逐行執(zhí)行文件中的所有指令,其結(jié)果是一樣的。沒有輸入輸出參數(shù)。可調(diào)用m文件—稱函數(shù)文件(Function
File),子程序第一行包含function,需要輸入變量,返回輸出變量主要區(qū)別:命令文件的變量在文件執(zhí)行完后保存在內(nèi)存中,而函數(shù)文件內(nèi)定義的變量僅在函數(shù)文件內(nèi)部起作用,執(zhí)行完函數(shù)文件后,這些內(nèi)部變量將被清除。例3.1建立一個命令文件將變量a,b的值互換,然后運行該命令文件。首先建立命令文件并以文件名exch.m存盤:
clear
all;a=1:10;
b=[11,12,13,14;15,16,17,18];c=a;a=b;b=c;ab然后在MATLAB的命令窗口中輸入exch,將會執(zhí)行該命令文件。>>exch例3.2
建立一個函數(shù)文件將變量a,b的值互換,然后在命令窗口調(diào)用該函數(shù)文件。首先建立函數(shù)文件
fexch.m:function
[a,b]
=
fexch(a,b)c=a;
a=b;
b=c;然后在MATLAB的命令窗口調(diào)用該函數(shù)文件:>>clear
all;>>x=1:10;
y=[11,12,13,14;15,16,17,18];>>[x,y]=fexch(x,y)function
r
=
rank(A,tol)%RANK
Matrix
rank.%
RANK(A)
provides
an
estimate
of
the
number
of
linearly% independent
rows
or
columns
of
a
matrix
A.%
RANK(A,tol)
is
the
number
of
singular
values
of
A%
that
are
larger
than
tol.%
RANK(A)
uses
the
default
tol
=max(size(A))*
eps(norm(A)).%%%Class
support
for
input
A:float:
double,
single% Copyright
1984-2004
The
MathWorks,
Inc.%
$Revision:
$
$Date:
2004/08/20
19:50:33
$s
=
svd(A);if
nargin==1tol
=
max(size(A)")
*
eps(max(s));endr
=
sum(s
>
tol);Input允許用戶在命令窗口用鍵盤輸入3.2
數(shù)據(jù)的輸入輸出input函數(shù)調(diào)用格式為:A=input(提示信息,選項);其中提示信息為一個字符串,用于提示用戶輸入什么樣的數(shù)據(jù)。A=input("A=
")
如果在input函數(shù)調(diào)用時采用"s"選項,則允許用戶輸入一個字符串。例如,想輸入一個人的姓名,
可采用命令:xm
=input
("What""s
your
name?",
"s")3.2.2 disp函數(shù)調(diào)用格式為:disp(輸出項)其中輸出項既可以為字符串,也可以為矩陣。注意:用disp函數(shù)顯示矩陣時將不顯示矩陣的名字,而且其格式更緊密,且不留任何沒有意義的空行。b
=disp("
JanFebMar")234
disp(rand(5,3))567890JanFebMar>>
disp(b)0.95010.76210.61542340.23110.45650.79195670.60680.01850.92188900.48600.82140.73820.89130.44470.1763程序如下:
a=input("a=?");b=input("b=?");c=input("c=?");d=b*b-4*a*c;x=[(-b+sqrt(d))/(2*a),
(-b-sqrt(d))/(2*a)]disp(["x1=",num2str(x(1)),",x2=",num2str例3.3 求一元二次方程ax2
+bx+c=0的根。其調(diào)用格式為:
pause(延遲秒數(shù))如果省略延遲時間,直接使用pause,則將暫停程序,直到用戶按任一鍵后程序繼續(xù)執(zhí)行。
pause命令在程序調(diào)試以及需要看中間結(jié)果時特別有用。若要強行中止程序的運行可使用Ctrl+C命令。3.2.3
pause函數(shù)3.3
選擇結(jié)構(gòu)3.3.1
if語句在MATLAB中,if語句有3種格式。
1.單分支if語句語句格式為:if
條件語句組
end當條件成立時,則執(zhí)行語句組,執(zhí)行完之后繼續(xù)執(zhí)行if語句的后繼語句,若條件不成立,則直接執(zhí)行if語句的后繼語句。2.雙分支if語句語句格式為:if 條件語句組1else語句組2end當條件成立時,執(zhí)行語句組1,否則執(zhí)行語句組2,語句組1或語句組2執(zhí)行后,再執(zhí)行if語句的后繼語句。例3.4計算分段函數(shù)值。程序如下:x=input("請輸入x的值:");
if
x==10y=cos(x+1)+sqrt(x*x+1);elsey=x*sqrt(x+sqrt(x));endy例3.5輸入數(shù)n,判斷其奇偶性程序如下:n
=
input("n="),if
rem(n,2)==0A
=
‘even’elseA
=
‘odd’end3.多分支if語句語句格式為:if
條件1語句組1elseif
條件2語句組2……elseif
條件m語句組melse語句組m+1end例3.6輸入一個字符,若為大寫字母,則輸出其后繼字符,若為小寫字母,則輸出其前導字符,若為數(shù)字字符則輸出其對應的數(shù)值,若為其他字符則原樣輸出。c=input("請輸入一個字符","s");if
c>="A"&
c<="Z"disp(setstr(abs(c)+1));elseif
c>="a"&
c<="z"disp(setstr(abs(c)-1));elseif
c>="0"&
c<="9"disp(abs(c)-abs("0"));elsedisp(c);endif
a==bif
isequal(a,b)isemptyallany3.3.2
switch語句其語句格式為:switch
表達式case
表達式1語句組1case
表達式2語句組2……case
表達式m語句組motherwise語句組m+1end例3.7判斷輸入數(shù)n的奇偶性n
=
input("n=")switch
mod(n,2)case
1A
=
‘odd’case
0A
=
‘even’otherwiseA
=
‘null’endprice=input("請輸入商品價格");switch
fix(price/100)case
{0,1}rate=0;case
{2,3,4}rate=3/100;case
num2cell(5:9)rate=5/100;case
num2cell(10:24)rate=8/100;case
num2cell(25:49)rate=10/100;otherwiserate=14/100;endprice=price*(1-rate)例3.8 某商場
對顧客所購買的商品實行打折銷售,已知打折標準,求所售商品的實際銷售價格。3.3.3
try語句
(錯誤控制語句)語句格式為:
try語句組1catch語句組2endtry語句先試探性執(zhí)行語句組1,如果語句組1在執(zhí)行過程中出現(xiàn)錯誤,則將錯誤信息賦給保留的lasterr變量,并轉(zhuǎn)去執(zhí)行語句組2。這種試探性執(zhí)行語句是其他高級語言所沒有的。例3.9矩陣乘法運算要求兩矩陣的維數(shù)相容,否則會出錯。先求兩矩陣的乘積,若出錯,則自動轉(zhuǎn)去求兩矩陣的點乘。A=[1,2,3;4,5,6];
B=[7,8,9;10,11,12];tryC=A*B;catchC=A.*B;endClasterr
%顯示出錯原因3.4
循環(huán)結(jié)構(gòu)3.4.1
for語句語句格式為:for循環(huán)變量=初值:增量:終值循環(huán)體語句end例3.10已知y的表達式,當n=100時,求y的值。y=0;
n=100;for
i=1:ny=y+1/i^2;endy在實際MATLAB編程中,為提高程序的執(zhí)行速度,常用向量運算來代替循環(huán)操作:n=100;
i=1:n;f=1./i.^2;y=sum(f)例3.11
求定積分。a=0;b=3*pi;
n=1000;
h=(b-a)/n;x=
a:h:b;
f=exp(-0.5*x).*sin(x+pi/6);for
i=1:ns(i)=
(f(i)+f(i+1))*h/2;ends=sum(s)事實上,MATLAB提供了有關數(shù)值積分的標準函數(shù),實際應用中可直接調(diào)用這些函數(shù)求數(shù)值積分。for語句更一般的格式:for
循環(huán)變量=矩陣表達式循環(huán)體語句end執(zhí)行過程是依次將矩陣的各列元素賦給循環(huán)變量,然后執(zhí)行循環(huán)體語句,直至各列元素處理完畢。實際上,“初值:增量:終值”是一個僅為一行的矩陣(行向量),因而列向量是單個數(shù)據(jù)。例3.12已知5個學生4門功課的成績,求每名學生的總成績。s=0;a=[65,
76,
56,
78;
98,
83,
74,
85;
76,
67,
78,
79;98,
58,
42,
73;
67,
89,
76,
87];for
k=as=s+k;enddisp(s");65765678988374857667787998584273678976873.4.2
while語句while語句的一般格式為:
while
(條件)循環(huán)體語句end其執(zhí)行過程為:若條件成立,則執(zhí)行循環(huán)體語句,執(zhí)行后再判斷條件是否成立,如果不成立則跳出循環(huán)例3.13根據(jù)矩陣指數(shù)的冪級數(shù)展開式求矩陣指數(shù)。X=input("X=");E=zeros(size(X));F=eye(size(X));n=1;while
norm(F,1)>0E=E+F;F=F*X/n;n=n+1;endEexpm(X)
%調(diào)用MATLAB矩陣指數(shù)函數(shù)求矩陣指數(shù)
與循環(huán)結(jié)構(gòu)相關的還有一個break語句,當在循環(huán)體內(nèi)執(zhí)行到該語句時,程序?qū)⑻鲅h(huán)。該語句一般與if語句配合使用。
在多重循環(huán)中,break只能使程序跳出包含它的最內(nèi)層的那個循環(huán)例3.14用while語句實現(xiàn)例3.10。y=0;
i=1;while
1f=1/i/i;y=y+f;
if
i=
=100break;endi=i+1;end3.4.3
循環(huán)的嵌套
如果一個循環(huán)結(jié)構(gòu)的循環(huán)體又包括一個循環(huán)結(jié)構(gòu),就稱為循環(huán)的嵌套,或稱為多重循環(huán)結(jié)構(gòu)??梢?/p>
按照嵌套層數(shù),分別叫做二重循環(huán)、三重循環(huán)等。處于內(nèi)部的循環(huán)叫作內(nèi)循環(huán),處于外部的循環(huán)叫
作外循環(huán)。
在設計多重循環(huán)時,要特別注意內(nèi)、外循環(huán)之間的關系,以及各語句放置的位置,不要搞錯。例3.15列出從2到m的全部素數(shù)。m=input("m=");p=2:m;for
i=2:sqrt(m)%依次列出最大除數(shù)n
=
find(rem(p,i)==0&
p~=i);%找到能被 %
i整除,而不等于i的數(shù)的序號p(n)=[];%去掉該數(shù)endp
%顯示結(jié)果3.5
函數(shù)文件3.5.1
函數(shù)文件的基本結(jié)構(gòu)函數(shù)文件由function語句引導,其基本結(jié)構(gòu)為:function[輸出形參表]=函數(shù)名(輸入形參表注釋說明部分函數(shù)體語句說明:關于函數(shù)文件名:函數(shù)文件名與函數(shù)名也可以不相同。當兩者不同時,MATLAB將忽略函數(shù)名而確認函數(shù)文件名,因此調(diào)用時使用函數(shù)文件名。關于注釋說明部分。注釋說明包括三部分內(nèi)容:①緊隨函數(shù)文件引導行之后以%開頭的第一注釋行。②第一注釋行及之后連續(xù)的注釋行。③與在線幫助文本相隔一空行的注釋行。關于return語句。執(zhí)行到該語句就結(jié)束函數(shù)的執(zhí)行,程序流程轉(zhuǎn)至調(diào)用該函數(shù)的位置。通常,在函數(shù)文件中也可不使用return語句,這時在被調(diào)函數(shù)執(zhí)行完成后自動返回。例3.16
編寫函數(shù)文件求半徑為r的圓的面積和周長。function
[s,p]
=
fcircle(r)%CIRCLE
calculate
the
area
and
perimeter
of
a
circle
ofradii
r%r
圓半徑%s
圓面積%p
圓周長%2001年7月30日編
s=pi*r*r;p=2*pi*r;將以上函數(shù)文件以文件名fcircle.m存入c:\matlab6p5\wor然后在MATLAB命令窗口調(diào)用該函數(shù):>>[s,p]=fcircle(10)3.5.2
函數(shù)調(diào)用函數(shù)調(diào)用的一般格式是:[輸出實參表]=函數(shù)名(輸入實參表)例3.17利用函數(shù)文件,實現(xiàn)直角坐標(x,y)與極坐標(ρ,θ)之的轉(zhuǎn)換。函數(shù)文件tran.mfunction
[rho,theta]
=
tran(x,y)rho
=
sqrt(x*x+y*y);theta
=
atan(y/x);調(diào)用tran.m的命令文件main1.m:x=input("Please
input
x=:");y=input("Please
input
y=:");[rho,theta]=tran(x,y);rho,
theta例3.18利用函數(shù)的遞歸調(diào)用,求n!。遞歸調(diào)用函數(shù)文件factor.m:function
f
=
factor(n)if
n<=1f
=
1;elsef
=
factor(n-1)*n;end在命令文件main2.m中調(diào)用函數(shù)文件factor.m求s=1!+2!+3!+4!+5!。3.5.3
函數(shù)所傳遞參數(shù)的可調(diào)性在調(diào)用函數(shù)時,MATLAB用兩個永久變量nargin和nargout分別記錄調(diào)用該函數(shù)時的輸入實參和輸出實參的個數(shù)。只要在函數(shù)文件中包含這兩個變量,就可以準確地知道該函數(shù)文件被調(diào)用時的輸入輸出參數(shù)個數(shù),從而決定函數(shù)如何進行處理。例3.19 nargin用法示例。函數(shù)文件examp.m:function
fout
=
examp
(a,b,c)if
nargin
==
1fout
=
a;elseif
nargin
==
2fout
=
a+b;elseif
nargin
==
3fout=(a*b*c)/2;end命令文件mydemo.m:%x
=
[1:3];y
=
[1;2;3];out1
=
examp(x)out2
=
examp(x,y")out3
=
examp(x,y,3)全局變量可以被所有定義該變量為全局變量的函數(shù)使用。如果想在命令行中使用全局變量,也要定義該變量為全局變量.在函數(shù)文件里,全局變量的定義語句應放在變量使用之前,為了便于了解所有的全局變量,一般把全局變量的定義語句放在文件的前部。一般來說,全局變量的取名應能反映變量的具體意思,一般用大寫字母表示,以防被誤用。3.6
全局變量和局部變量global
ALPHA
BETAf=ALPHA*x+BETA*y;全局變量用命令global定義。函數(shù)文件的內(nèi)部變量是局部的,與其他函數(shù)文件及MATLAB工作空間相互隔離。例3.20全局變量應用示例。先建立函數(shù)文件weight_add.m,該函數(shù)將輸入的參數(shù)加權(quán)相加。function
f=weight_add(x,y)在命令窗口中輸入:global
ALPHA
BETAALPHA=1;
BETA=2;s=weight_add(1,2)數(shù)值數(shù)據(jù)(Numeric):雙精度型(double)、單精度數(shù)、帶符號整數(shù)(int8)和無符號整數(shù)(uint8)。字符數(shù)據(jù)(char)。結(jié)構(gòu)型(structure)和細胞型(cell)。稀疏型(sparse)。3.7
數(shù)據(jù)類型結(jié)構(gòu)和單元結(jié)構(gòu)數(shù)據(jù)MATLAB通過使用結(jié)構(gòu)(structure)數(shù)據(jù)類型把一組不同類型的數(shù)據(jù)同時又是在邏輯上相關的數(shù)據(jù)組成一個有機的整體,以便于管理和引用。結(jié)構(gòu)矩陣的建立與引用結(jié)構(gòu)成員的修改用賦值語句定義結(jié)構(gòu)時,只要給出結(jié)構(gòu)的屬性賦值,Matlab就會自動把該屬性增加到結(jié)構(gòu)中,賦值時,結(jié)構(gòu)名和屬性名用英文句號分開。例如,下面三條語句定義一個1x1的結(jié)構(gòu)數(shù)組,結(jié)構(gòu)名為student,有三個屬性:name,num,test。該結(jié)構(gòu)數(shù)組織有一個元素,在命令窗口鍵入結(jié)構(gòu)名student,將顯示該元素所有屬性的屬性值的特性]。1.結(jié)構(gòu)矩陣的建立與引用
(1)用賦值語句定義>>
=
"Leslie";>>
student.num
=
123456;>>
student.test=[79
75
73;180
178
177.5;22
210
20>>
studentstudent
=name:
"Leslie"num:
123456test:
[3x3
double]再鍵入下面三行可給該結(jié)構(gòu)數(shù)組增加一個元素。當結(jié)構(gòu)數(shù)組的元素超過一個時,matlab將不再顯示屬性的值,只顯示數(shù)組名、屬性名和維數(shù)大小。iieldnames函數(shù)可用來察看結(jié)構(gòu)的所有屬性名,>>
student(2).name
=
"David";>>
student(2).num
=
123532;>>
student(2).test=[68
70
68;118
118
119;172
170
123
543
433];>>
studentstudent
=1x2
struct
array
with
fields:namenumtest>>
fieldnames(student)ans
="name""num""test"屬性列表為結(jié)構(gòu)的所有屬性構(gòu)成的字符數(shù)組或細胞數(shù)組。利用這種調(diào)用格式時,所有屬性值都為空矩陣。也可以在函數(shù)struct中輸入屬性值,調(diào)用格式為:(2)用函數(shù)struct定義,調(diào)用格式:結(jié)構(gòu)數(shù)組名=struct(‘屬性1’,‘屬性值1’‘屬性2’,‘屬性值2’,…)>>
s
=
…struct("type",{"big","little"},"color",結(jié)構(gòu)數(shù)組一旦形成,就可用相應的函數(shù)取出數(shù)組中的某個元素并修改該元素的某個屬性的值。2.結(jié)構(gòu)成員的修改>>
str
=
student(2).name>>
n
=
student(2).test(4,2)>>
student(2).test(4,2)
=
0>>
for
i=1
:
length
(student)>>
disp(student(i).name)>>
end刪除屬性的命令:>>
student2
=
rmfield(student,"test")在matlab里,由于有細胞數(shù)組這個數(shù)據(jù)類型,]才能把不同類型、不同維數(shù)的數(shù)組組成一個數(shù)組。細胞數(shù)據(jù)細胞(Cell)數(shù)據(jù)的概念與結(jié)構(gòu)有些類似,也是把不同屬性的數(shù)據(jù)放在一個變量中。所
不同的是,結(jié)構(gòu)變量的各個元素下有成員,
每個成員都有自己的名字,對成員的引用是:結(jié)構(gòu)變量名.成員名。而細胞矩陣的各個元素就是不同類型的數(shù)據(jù),用帶有大括號下標的
形式引用單元矩陣元素。在matlab里,由于有細胞數(shù)組這個數(shù)據(jù)類型,]才能把不同類型、不同維數(shù)的數(shù)組組成一個數(shù)組。>>
A=[1
2
3
4;2
3
4
5;
3
4
5
6]A
=123423453456sum(sum(A))}>>
C={A
sum(A)C
=[3x4
double][1x4
double][42]1.細胞矩陣的生成和引用
(1)用賦值語句定義>>
clear
A;>>
A(1,1)={[1
4
3;0
5
8;7
2
9]};>>
A(1,2)={"Leslie"};>>
A(2,1)={3+7i};>>
A(2,2)={0:pi/10:pi};>>
clear
A;>>
A{1,1}=[1
4
3;
0
5
8;7
2
9];>>
A{1,2}="Leslie";>>
A{2,1}=3+7i;>>
A{2,2}=0
:
pi/10
:
pi;[]是矩陣的標志,{}是細胞數(shù)組的標志。二者不同是:大括號可以嵌套,細胞數(shù)組的元素可以是細胞數(shù)組,而中擴號不可以。C={[1
2],[3
4];[5
6],[7
8]}生成一個2X2的細胞數(shù)組,數(shù)組每個元素都為1X2的數(shù)值矩陣。(2)用cell預定義數(shù)組,然后用賦值語句給每個元素賦值>>B=cell(5,3)
%定義一個5x3的細胞數(shù)組>>
B(1,3)={1:3}celldisp:顯示細胞數(shù)組的每個元素的值。cellplot:畫出細胞數(shù)組的每個元素的結(jié)構(gòu)圖。綜合使用大括號和小括號可以取出細胞數(shù)組的某個元素或某些元素的值,也可取出某個元素值的一部分。>>c=A{1,2}>>
d=A{1,1}(2,2)>>
c=A(2:2,1:2)3.8類和對象
類的概念是結(jié)構(gòu)體的拓展,在類中,不但可以包含變量成員,還可以包含與這些變量相關聯(lián)的函數(shù)或運算。對象是類的一個具體實例。
類和對象的概念是面向?qū)ο蟪绦蛟O計(Object-oriented
Programming)的基礎。采用面向?qū)ο蠹夹g可以把復雜的操作過程加以隱藏,而外部呈現(xiàn)為人們所習慣的處理形式。例3.19建立一個整數(shù)類integer,該類含有一個數(shù)據(jù)成員n,代表一個3位整數(shù)。還具有顯示整數(shù)各位數(shù)字之和、各位數(shù)字平方和、各位數(shù)字立方和等功能。和其他高級語言一樣,對文件讀寫之前應該“打開”該文件,在使用結(jié)束之后應“關閉”該文件。Fid為調(diào)用文件時返回的文件句柄,文件打開后,可用句柄值來代替該文件。3.9文件操作(Low-Level
File
I/O
Functions)文件的打開與關閉打開文件fopen函數(shù)的調(diào)用格式為:fid=fopen(‘文件名’,‘使用文件方式’)關閉文件調(diào)用格式為:sta=fclose(fid)filename
=
input(‘Open
file:’,’s’);
[fid,message]
=
fopen
(filename,’r’);
if
fid==-1disp
(
message);end3.9.2二進制文件讀寫操作1.讀二進制文件fread
函數(shù)可以讀取二進制文件的數(shù)據(jù),并將數(shù)據(jù)存入矩陣。其調(diào)用格式為:
[A,count]=fread(fid,size,precision)例:
[Fid,message]=fopen(‘matrix.dat’,’r’);If
Fid==-1 disp
(message)
end;A
=
fread(Fid,100)2.寫二進制文件fwrite
函數(shù)按照指定的數(shù)據(jù)精度將矩陣中的元素寫入到文件中,并返回存入數(shù)據(jù)的個數(shù)。其調(diào)用格式為:count=fwrite
(Fid,A,precision)例:File
=
fopen(‘magic.bina’,’w’)Count
=
fwrite(File,magic(4),’int32’)Status
=
fclose(File)3.8.3文本文件讀寫操作?1.
讀文本文件fscanf函數(shù)可以讀取文本文件的內(nèi)容,并按指定格式存入矩陣。其調(diào)用格式為:[A,COUNT]=
fscanf
(Fid,
format,
size)2.
寫文本文件fprintf
函數(shù)可以將數(shù)據(jù)按指定格式寫入到文本文件中。其調(diào)用格式為:COUNT=
fprintf(Fid,
format,
A)例3.20從鍵盤輸入5名學生的姓名和成績,先建立一個數(shù)據(jù)文件,然后讀出數(shù)據(jù)文件的內(nèi)容,并按成績從低到高的順序在屏幕上輸出學生信息。3.8.4數(shù)據(jù)文件定位?fseek函數(shù)用于定位文件位置指針,其調(diào)用格式為:status
=
fseek(Fid,
offset,
origin)origin為給定的初始位置,為‘cof’,’bof’,’eof’之一?!甤of’:表示文件中的當前位置‘bof’:表示文件的開始位置‘eof’:表示文件的結(jié)束位置
ftell函數(shù)返回文件指針的當前位置,其調(diào)用格式為:position
=
ftell
(Fid)例3.21分析下列程序執(zhí)行后,four、position和three三個變量的值。a=1:5;Fid=fopen("fdat.bin",
"w");fwrite(Fid,
a,
"int16"
);fdat.binstatus=fclose(Fid);Fid=fopen("fdat.bin",
"r");%以寫方式打開文件fdat.bin%將a的元素以雙字節(jié)整型寫入文%以讀數(shù)據(jù)方式打開文件fdat.status=fseek(Fid,6,"bof");移動6個字節(jié)four=fread(Fid,1,"int16");下一個數(shù)據(jù)%將文件指針從開始位置向尾部%讀取第4個數(shù)據(jù),并移動指針position=ftell(Fid); %ftell的返回值為8%將文件指針從當前位置往前status=fseek(Fid,-4,"cof");動4個字節(jié)three=fread(Fid,
1,
"int16");status=fclose(Fid);%讀取第3個數(shù)據(jù)Importing
and
Exporting
Data
The
format
of
the
data:
text,
binary,
or
a
standarformat
such
as
HDF
The
easiest
way
to
import
data
into
MATLAB
isto
use
the
Import
Wizard.Importing
Text
DataText
DataIn
text
format,
the
data
values
are
AmericanStandard
Code
for
Information
Interchange(ASCII)
codes
that
represent
alphabetic
andnumeric
characters.
ASCII
text
data
can
beviewed
in
a
text
editor.Using
the
Import
Wizard
with
Text
DataUsing
Import
Functions
with
Text
DataUsing
the
Import
Wizard
with
Text
DatASCII
Data
FileFormatsASCII
Data
ImportFunctionFeatureComparisonASCII
DataComparisonImportFunctionFeature1.
Importing
Numeric
Text
Data
如果數(shù)據(jù)文件中只包含數(shù)字,根據(jù)分隔符的不同,可以選擇多import
function.Load
--分隔符是space,最簡單的命令!例:有一個文件my_data.txt,只含數(shù)字,分隔符是space1
2
3
4
56
7
8
9
10>>
load
my_data.txt在workspace中產(chǎn)生一個變量,跟文件名一樣(去掉擴展名)如果想產(chǎn)生一個和文件名不一樣的變量名,應用:>>
A=load
("my_data.txt")>>
load
my_data.txt>>
whosName
Sizemy_data
2x5Bytes
Class80
double
arrayGrand
total
is
10
elements
using
80
bytes>>
my_datamy_data
=12345678910>>
A=load
("my_data.txt")A
=123456789102.
Importing
Delimited
ASCII
Data
Filesdlmread--分隔符是any
character
,最簡單的命令!例:有一個文件ph.dat,內(nèi)容被分號隔開7.2;8.5;6.2;6.65.4;9.2;8.1;7.2把這個文件讀進工作空間,并命名為變量A>>A=dlmread("ph.dat",";")
dlmread
忽略數(shù)據(jù)元素之間的空格7.2;8.5;
6.2;6.65.4;9.2;8.1;7.23.
Importing
Numeric
Data
withText
Headerstextread—導入包含文本標題的數(shù)據(jù)文件例:有一個文件grades.dat,包含一行文本標題Grade1
Grade2
Grade378.855.945.999.566.878.089.577.056.7>>
[grade1
grade2
grade3]
=
textread
…("grades.dat","%f
%f
%f",
"headerlines",1)grade1
=78.800099.500089.5000grade2
=55.900066.800077.0000grade3
=45.900078.000056.70004.
Importing
Mixed
Alphabetic
andNumeric
DataSallyType112.34
45YesLarryType234.56
54Yestextread—可以返回多個輸出變量,并可以指定每個變量的數(shù)據(jù)類型例:有一個文件mydata.dat,包含一行文本標題Tommy
Type1
67.89
23
No>>
[names,types,x,y,answer]
=
…textread(‘mydata.dat’,‘%s
%s
%f
%d
%s’)>>[names,types,x,y,answer]=textread
…("mydata.dat","%s
%s
%f
%d
%s",
"delimiter",";")names
="Sally""Larry""Tommy"types
="Type1""Type2""Type1"x
=12.340034.560067.8900y
=455423answer
="Yes""Yes""No"Exporting
ASCII
DataExporting
ASCII
Data1.
Exporting
Delimited
ASCII
Data
Filessave
--easytouse!例:To
export
the
array
A,A
=
[
1
2
3
4
;
5
6
7
8
];>>
save
my_data.out
A
-ASCIIIf
you
view
the
created
file
in
a
text
editor,
it
looks
lik1.0000000e+000
2.0000000e+000
3.0000000e+000
4.0000000e+0005.0000000e+000
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國開啟式高壓汞燈鎮(zhèn)流器數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國多維皮革立體工藝品數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國口腔護理含漱液數(shù)據(jù)監(jiān)測研究報告
- 轉(zhuǎn)承包協(xié)議合同范本
- 大豆計劃采購合同范本
- 2025年中國青霉素鉀粉劑市場調(diào)查研究報告
- 2025年度汽車貸款逾期債務清收合作協(xié)議
- 2025年度智能醫(yī)療設備軟件技術服務合同
- 二零二五年度事業(yè)單位聘用合同:事業(yè)單位醫(yī)療輔助人員職務聘任書
- 2025年度沙場承包與礦山安全生產(chǎn)監(jiān)管合作協(xié)議
- (完整)2019年風廉政建設主體責任落實情況監(jiān)督檢查記錄表
- 絕句遲日江山麗說課稿
- 物業(yè)員工安全知識教育培訓
- 課堂教學質(zhì)量評價表
- 人工智能通識-課件全套 黃君羨 01-12 初識人工智能 -AIGC安全與倫理
- 時薪制員工合同范本
- 《智慧旅游認知與實踐》課件-第九章 智慧旅行社
- 執(zhí)業(yè)藥師藥學考試題庫及答案(完整版)
- 浙江紹興市勘察測繪院下屬國有企業(yè)紹興市勘察測繪有限公司招聘筆試題庫2024
- 第1課《鄧稼先》課件語文七年級下冊2
- 2024過敏性休克搶救指南(2024)課件干貨分享
評論
0/150
提交評論