第二章數(shù)值運(yùn)算_第1頁
第二章數(shù)值運(yùn)算_第2頁
第二章數(shù)值運(yùn)算_第3頁
第二章數(shù)值運(yùn)算_第4頁
第二章數(shù)值運(yùn)算_第5頁
已閱讀5頁,還剩65頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第二章數(shù)值運(yùn)算第1頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計第二章數(shù)值運(yùn)算第2頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計本章目標(biāo)1、掌握矩陣、數(shù)組的創(chuàng)建和標(biāo)識方法2、掌握矩陣的算術(shù)、關(guān)系及邏輯運(yùn)算3、特殊矩陣4、字符串?dāng)?shù)組5、異質(zhì)數(shù)組6、結(jié)構(gòu)數(shù)組第3頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計第一節(jié)數(shù)組和矩陣的創(chuàng)建數(shù)組:是指由一組實數(shù)或復(fù)數(shù)排成的長方陣列。數(shù)組運(yùn)算:是指無論在數(shù)組上施加什么運(yùn)算(+、-、×、÷或函數(shù)),總認(rèn)為那種運(yùn)算對被運(yùn)算數(shù)組中的每個元素(Element)平等地實施同樣的操作。目的:使計算程序簡單、易讀,使程序指令更接近于教科書上的數(shù)學(xué)計算公式;提高程序的向量化程度,提高計算效率,節(jié)省計算機(jī)開銷。第4頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計一維數(shù)組的創(chuàng)建

(1)逐個元素輸入法

x=[2pi/2sqrt(3)3+5i]

(2)冒號生成法通過“步長”設(shè)定,生成一維“行”數(shù)組的方法。通用格式:x=a:inc:b(3)采用linspace和logspace函數(shù)法x=linspace(a,b,n):該指令生成(1×n)數(shù)組,其作用與x=a:(b-a)/(n-1):b同,n默認(rèn)值為100。logspace(a,b,n):生成10a到10b之間按對數(shù)等分的n個元素的行向量,n默認(rèn)值為50。第5頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計二維數(shù)組的創(chuàng)建直接輸入法對于較小數(shù)組,從鍵盤上直接輸入最方便。二維數(shù)組必須有以下三個要素:整個輸入數(shù)組必須以方括號“[]”為其首尾;數(shù)組的行與行之間必須用分號“;”或回車鍵隔離;數(shù)組元素必須由逗號“,”或空格分隔。利用M文件創(chuàng)建和保存數(shù)組對于今后經(jīng)常需要調(diào)用的數(shù)組,尤其是比較大而復(fù)雜的數(shù)組,為它專門建立一個M文件是值得的。第6頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計

MATLAB函數(shù)法zeros(m,n)生成全0矩陣ones(m,n)生成全1矩陣eye(m,n)生成單位矩陣rand(m,n)生成均勻分布的隨機(jī)矩陣(0.0~1.0)randn(m,n)生成正態(tài)分布的隨機(jī)矩陣magic(n)產(chǎn)生n階魔方矩陣(行、列、對角線元素和相等)

通過MAT數(shù)據(jù)文件加載矩陣load指令,或File→ImportData第7頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計第二節(jié)數(shù)組元素的標(biāo)識一維數(shù)組的標(biāo)識二維數(shù)組的標(biāo)識

全下標(biāo)標(biāo)識:行下標(biāo),列下標(biāo)

優(yōu)點(diǎn):幾何概念清楚,引述簡單。

例:矩陣A=[12345

678910

1112131415]

則A(2,3)=8,A(3,2)=12

A(3,5)=15,A(1,5)=5第8頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計第9頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計第10頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計

邏輯1標(biāo)識

-通過與A同樣大小的邏輯數(shù)組L中“邏輯值1”所在的位置,指出A中元素的位置。

-L的元素或是0或是1,它是“邏輯數(shù)組(LogicalArray)”。是一種特殊的數(shù)據(jù)類型。例:A(L)邏輯數(shù)組的創(chuàng)建1直接建立邏輯數(shù)組x=[truefalse]2用邏輯運(yùn)算建立邏輯數(shù)組第11頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計子數(shù)組尋訪和賦值格式匯總表子數(shù)組尋訪和賦值使用說明A(r,c)它由A的“r指定行”和“c指定列”上的元素組成A(r,:)它由A的“r指定行”和“全部列”上的元素組成A(:,c)它由A的“全部行”和“c指定列”上的元素組成A(:)“單下標(biāo)元素”尋訪。它由A的各列按自左到右的次序,首尾相接而生成“一維長列”數(shù)組A(s)“單下標(biāo)”尋訪。生成“s指定的”一維數(shù)組。s若是“行數(shù)組”(或“列數(shù)組”),則A(s)就是長度相同的“行數(shù)組”(或“列數(shù)組”)A(L)“邏輯1”尋訪。生成“一維”列數(shù)組:由與A同樣大小的“邏輯數(shù)組”L中的“1”元素選出A的對應(yīng)元素;按“單下標(biāo)”次序排成長列組成。A(r,c)=Sa以“雙下標(biāo)”方式,對子數(shù)組A(r,c)進(jìn)行賦值;Sa的“行寬、列長”必須與A(r,c)的“行寬、列長”相同A(:)=D(:)全元素賦值方式。結(jié)果:保持A的“行寬、列長”不變。條件:A、D兩個數(shù)組的總元素相等,但“行寬、列長”不一定相同A(s)=Sa按“單下標(biāo)”方式,對A的部分元素重新賦值。結(jié)果:保持A的“行寬、列長”不變。條件:s單下標(biāo)數(shù)組的長度必須與“一維數(shù)組”Sa的長度相等,但是s、Sa不一定同是“行數(shù)組”或“列數(shù)組”第12頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計多(高)維數(shù)組的創(chuàng)建多維數(shù)組的第一維稱為“行(Row)”,第二維稱為“列(Column)”,第三維稱為“頁(Page)”,第四維稱為“箱(Box)”,……直接通過全下標(biāo)元素賦值方式創(chuàng)建多維數(shù)組;由若干同樣大小的低維數(shù)組組合成多維數(shù)組;由函數(shù)ones,zeros,rand,randn直接創(chuàng)建標(biāo)準(zhǔn)多維數(shù)組;借助cat,repmat,reshape等函數(shù)構(gòu)作多維數(shù)組。第三節(jié)多維數(shù)組的創(chuàng)建和標(biāo)識第13頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計多維數(shù)組的標(biāo)識數(shù)組的維數(shù)(Dimension)和ndims指令指令ndims(A)可直接給出數(shù)組A的維數(shù)。數(shù)組的大小(Size)和size指令不管A數(shù)組的維數(shù)是多少,size(A)可給出A各維的大小,而指令length(A)可給出所有維中的最大長度。即length(A)等價于max(size(A))。第14頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計第四節(jié)數(shù)組運(yùn)算和矩陣運(yùn)算無論在數(shù)組上施加什么運(yùn)算(+、-、×、÷或函數(shù)),總認(rèn)為那種運(yùn)算對被運(yùn)算數(shù)組中的每個元素(Element)平等地實施同樣的操作。當(dāng)兩個數(shù)組具有相同階數(shù)時,進(jìn)行加、減、乘、除的點(diǎn)運(yùn)算,其運(yùn)算是按元素對元素方式進(jìn)行的。數(shù)組運(yùn)算第15頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計矩陣運(yùn)算矩陣轉(zhuǎn)置:轉(zhuǎn)置符:’矩陣的乘法矩陣的相除左除,符號為/右除,符號為\矩陣的乘方當(dāng)矩陣為方陣時,可進(jìn)行指數(shù)乘法運(yùn)算。第16頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計數(shù)組運(yùn)算和矩陣運(yùn)算的區(qū)別從外觀形狀和數(shù)據(jù)結(jié)構(gòu)上看,二維數(shù)組和(數(shù)學(xué)中的)矩陣沒有區(qū)別。但是,矩陣作為一種變換或映射算子的體現(xiàn),矩陣運(yùn)算有著明確而嚴(yán)格的數(shù)學(xué)規(guī)則;數(shù)組運(yùn)算是MATLAB軟件所定義的規(guī)則,其目的是為了數(shù)據(jù)管理方便、操作簡單、指令形式自然和執(zhí)行計算的有效。雖然數(shù)組運(yùn)算尚缺乏嚴(yán)謹(jǐn)?shù)臄?shù)學(xué)推理,數(shù)組運(yùn)算本身仍在完善和成熟中,但它的作用和影響正隨著MATLAB的發(fā)展而擴(kuò)大。第17頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計數(shù)組運(yùn)算和矩陣運(yùn)算指令對照匯總(一)數(shù)組運(yùn)算矩陣運(yùn)算指令含義指令含義A.’非共軛轉(zhuǎn)置。相當(dāng)于conj(A’)A’共軛轉(zhuǎn)置A=s把標(biāo)量s賦給A的每個元素s+B標(biāo)量s分別與B元素之和s-B,B-s標(biāo)量s分別與B的元素之差s.*A標(biāo)量s分別與A的元素之積s*A標(biāo)量s分別與A每個元素之積s./B,B.\ss分別被B的元素除s*inv(B)B陣的逆乘sA.^nA的每個元素自乘n次A^nA為方陣時,自乘n次A.^p對A的各元素分別求非整數(shù)冪A^p方陣A的非整數(shù)乘方p.^A以p為底,分別以A的元素為指數(shù)求冪值p^AA陣為方陣時,標(biāo)量的矩陣乘方A+B對應(yīng)元素相加A+B矩陣相加A-B對應(yīng)元素相減A-B矩陣相減第18頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計數(shù)組運(yùn)算和矩陣運(yùn)算指令對照匯總(二)數(shù)組運(yùn)算矩陣運(yùn)算指令含義指令含義A.*B對應(yīng)元素相乘A*B內(nèi)維相同矩陣的乘積A./BA的元素被B的對應(yīng)元素除A/BA右除BB.\A(一定與上相同)B\AA左除B(一般與右除不同)exp(A)以自然數(shù)e為底,分別以A的元素為指數(shù),求冪expm(A)A的矩陣指數(shù)函數(shù)log(A)對A的各元素求對數(shù)logm(A)A的矩陣對數(shù)函數(shù)sqrt(A)對A的各元素求平方根sqrtm(A)A的矩陣平方根函數(shù)f(A)求A各個元素的函數(shù)值。f(.)表示為上節(jié)所列各函數(shù)funm(A,’FN’)一般函數(shù)矩陣A#BA、B陣對應(yīng)元素間的關(guān)系運(yùn)算。#代表關(guān)系運(yùn)算符A@BA、B陣對應(yīng)元素間的邏輯運(yùn)算。@代表邏輯運(yùn)算符第19頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計第五節(jié)特殊矩陣第20頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計非數(shù)NaN按IEEE規(guī)定,0/0,∞/∞,0×∞等運(yùn)算都會產(chǎn)生非數(shù)(NotaNumber)。該非數(shù)在MATLAB中用NaN或nan記述。根據(jù)IEEE數(shù)學(xué)規(guī)范,NaN具有以下性質(zhì):NaN參與運(yùn)算所得的結(jié)果也是NaN,即具有傳遞性;非數(shù)沒有大小概念,因此不能比較兩個非數(shù)的大小。非數(shù)的功用:真實記述0/0,∞/∞,0×∞運(yùn)算的后果;避免可能因0/0,∞/∞,0×∞運(yùn)算而造成程序執(zhí)行的中斷;在數(shù)據(jù)可視化中,用來裁剪圖形。第21頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計空數(shù)組(空陣)“空”數(shù)組是MATLAB為操作和表述需要而專門設(shè)計的一種數(shù)組。某維長度為0或若干維長度均為0的數(shù)組都是“空”數(shù)組。“空”數(shù)組的功用:在有“空”數(shù)組參與的運(yùn)算時,計算結(jié)果中的“空”可以合理地解釋“所得結(jié)果的含義”;運(yùn)用“空”數(shù)組對其他非空數(shù)組賦值,可以改變數(shù)組的大小,但不能改變數(shù)組的維數(shù)。第22頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計第六節(jié)關(guān)系操作和邏輯操作在程序流控制和邏輯、模糊邏輯推理中,都需要對一類是非問題作出“是真,是假”的回答。為此MATLAB設(shè)計了關(guān)系操作、邏輯操作和一些相關(guān)函數(shù)。MATLAB的約定:在所有關(guān)系表達(dá)式和邏輯表達(dá)式中,作為輸入的任何非0數(shù)都被看作是“邏輯真”,而只有0才被認(rèn)為是“邏輯假”。所有關(guān)系表達(dá)式和邏輯表達(dá)式的計算結(jié)果,即輸出,是一個由0和1組成的“邏輯數(shù)組(LogicalArray)”。在此數(shù)組中的1表示“真”,0表示“假”。邏輯數(shù)組是一種特殊的數(shù)值數(shù)組。第23頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計指令含義指令含義﹤小于﹥=大于等于﹤=小于等于==等于﹥大于~=不等于[說明]標(biāo)量可以與任何維數(shù)組進(jìn)行比較。比較在此標(biāo)量與數(shù)組每個元素之間進(jìn)行,因此比較結(jié)果將與被比較數(shù)組同維。當(dāng)比較量中沒有標(biāo)量時,關(guān)系符兩端進(jìn)行比較的數(shù)組必須維數(shù)相同。比較在兩數(shù)組相同位置上的元素間進(jìn)行,因此比較結(jié)果將與被比數(shù)組同維。

關(guān)系操作第24頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計指令含義指令含義指令含義&與、和|或~否、非[說明]標(biāo)量可以與任何維數(shù)組進(jìn)行邏輯運(yùn)算。運(yùn)算比較在標(biāo)量與數(shù)組每個元素之間進(jìn)行,因此運(yùn)算結(jié)果與參與運(yùn)算的數(shù)組同維。當(dāng)邏輯運(yùn)算中沒有標(biāo)量時,參與運(yùn)算的數(shù)組必須維數(shù)相同。運(yùn)算在兩數(shù)組相同位置上的元素間進(jìn)行,因此運(yùn)算結(jié)果數(shù)組必定和參與運(yùn)算的數(shù)組同維。

邏輯操作第25頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計關(guān)系、邏輯函數(shù)MATLAB中能給出“邏輯數(shù)組”類型計算結(jié)果的函數(shù)有很多,包括:關(guān)系邏輯函數(shù)、工作狀態(tài)判斷函數(shù)、特殊數(shù)據(jù)判斷函數(shù)、數(shù)據(jù)類型判斷函數(shù)等。第26頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計關(guān)系邏輯函數(shù)指令含義all(A)當(dāng)向量A的元素全非0時,結(jié)果才是1;否則結(jié)果是0any(A)只要向量A中有非0元素,結(jié)果就是1;否則結(jié)果是0isequal(A,B)A,B對應(yīng)元素相等時,相應(yīng)元素位置取1;否則取0xor(A,B)A,B對應(yīng)元素同為0,或非0時,相應(yīng)元素位置取0;否則取1第27頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計特殊數(shù)據(jù)判斷指令指令含義指令含義isempty(x)x是空,則結(jié)果為1isnan(x)對應(yīng)x中非數(shù)NaN元素的位置取1,其余均為0isfinite(x)對應(yīng)x中有限大小元素的位置取1,其余均為0isprime(x)對應(yīng)x中質(zhì)數(shù)元素的位置取1,其余均為0isinf(x)對應(yīng)x中無窮大小元素的位置取1,其余均為0isreal(x)對應(yīng)x中實數(shù)元素的位置取1,其余均為0isletter(x)對應(yīng)x中英文字母的元素位置取1,其余均為0isspace(x)對應(yīng)x中空格的元素位置取1,其余均為0第28頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計數(shù)據(jù)類型判斷指令指令含義指令含義isa(x,’name’)輸入宗量name是指具體數(shù)據(jù)類型的英文名稱。假如x是指定的數(shù)據(jù)類型,則結(jié)果為1ishandle(x)若x是圖柄代號,則結(jié)果為1iscell(x)若x是元胞,則結(jié)果為1islogical(x)若x是邏輯數(shù),則結(jié)果為1iscellstr(x)若x是字符串組成的元胞數(shù)組,則結(jié)果為1isnumeric(x)若x是數(shù)值,則結(jié)果為1ischar(x)若x是字符串,則結(jié)果為1isobject(x)若x是對象,則結(jié)果為1isfield(x,’name’)若name指定的名稱是構(gòu)架x的域名,則結(jié)果為1issparse(x)若x稀疏,則結(jié)果為1isglobal(x)若x是全局變量,結(jié)果為1isstruct(x)若x是構(gòu)架,則結(jié)果為1第29頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計第七節(jié)

字符串?dāng)?shù)組字符串?dāng)?shù)組簡稱串?dāng)?shù)組。字符串?dāng)?shù)組的作用:沒有串?dāng)?shù)組及相應(yīng)的操作,那么數(shù)據(jù)可視化、圖形用戶界面GUI的制作將會遇到困難,構(gòu)作MATLAB的宏指令也將會遇到困難。字符變量的創(chuàng)建方式:把待建的字符放在“單引號對”中。注意:“單引號對”必須在英文狀態(tài)下輸入,其作用是MATLAB識別送來內(nèi)容“身份”(是變量名、數(shù)字,還是字符串)所必需的。數(shù)字標(biāo)量在內(nèi)存中存放時需要8個字節(jié)(Byte),而一個字符的存放只需2個字節(jié)。第30頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計一維字符數(shù)組的創(chuàng)建name='ThomasR.Lee'字符數(shù)組的連接

t=[ab]:a,b尾部的空格被保留

strcat(S1,S2,S3,...):horizontallyconcatenatescorrespondingrowsofthecharacterarraysS1,S2,S3etc第31頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計復(fù)雜串?dāng)?shù)組的創(chuàng)建多行串?dāng)?shù)組的直接創(chuàng)建在直接創(chuàng)建多行串?dāng)?shù)組時,關(guān)鍵是要保證串?dāng)?shù)組的各行字符數(shù)要相等,即保證各行等長。為此,有時不得不通過空格符的增減來調(diào)節(jié)各行的長度,使它們彼此相等。例:S=['Thisstringarray' 'hasmultiplerows.']增加一空格使兩行長度相等第32頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計利用串操作函數(shù)創(chuàng)建多行串?dāng)?shù)組用專門函數(shù)char,str2mat,strvcat創(chuàng)建多行串?dāng)?shù)組示例。Char:創(chuàng)建字符串?dāng)?shù)組或?qū)⑵渌愋妥兞哭D(zhuǎn)化為字符串?dāng)?shù)組(與[]區(qū)別)str2mat:將字符串轉(zhuǎn)換為含有空格行的數(shù)組Strvcat:創(chuàng)建字符串?dāng)?shù)組(不含空格行)這三個函數(shù)創(chuàng)建多行數(shù)組時,不必?fù)?dān)心每行字符數(shù)是否相等。它們總會按最長行設(shè)置第二維的長度,其他行的尾部用空格填充。復(fù)雜串?dāng)?shù)組的創(chuàng)建第33頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計復(fù)雜串?dāng)?shù)組的創(chuàng)建第34頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計執(zhí)行字符串eval函數(shù)(執(zhí)行表達(dá)式)eval(expression)[a1,a2,a3,…]=eval(‘function(b1,b2,b3,…’)

feval函數(shù)(執(zhí)行函數(shù))

[y1,y2,…]=feval(fhandle,x1,…,xn)[y1,y2,…]=feval(function,x1,…,xn)第35頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計串轉(zhuǎn)換函數(shù)指令含義指令含義abs把串翻譯成ASCII碼hex2dec16-進(jìn)制串轉(zhuǎn)換為十進(jìn)制整數(shù)base2decX-進(jìn)制串轉(zhuǎn)換為十進(jìn)制整數(shù)hex2num16-進(jìn)制串轉(zhuǎn)換為浮點(diǎn)數(shù)bin2dec二進(jìn)制串轉(zhuǎn)換為十進(jìn)制整數(shù)int2str把整數(shù)轉(zhuǎn)換為串char把ASCII碼及其他非數(shù)值類數(shù)據(jù)轉(zhuǎn)換成字符串mat2str把數(shù)值矩陣轉(zhuǎn)換為eval可調(diào)用的格式dec2base十進(jìn)制整數(shù)轉(zhuǎn)換為X進(jìn)制串num2str把數(shù)值轉(zhuǎn)換為串dec2bin十進(jìn)制整數(shù)轉(zhuǎn)換為二進(jìn)制串setstr把ASCII碼翻譯成串dec2hex十進(jìn)制整數(shù)轉(zhuǎn)換為十六進(jìn)制串sprintf以控制格式把數(shù)值轉(zhuǎn)換為串double把任何類型數(shù)據(jù)轉(zhuǎn)換成雙精度數(shù)值sscanf在控制格式下把串轉(zhuǎn)換為數(shù)值fprintf把格式化數(shù)據(jù)寫到文件或屏幕str2num把串轉(zhuǎn)換為數(shù)值第36頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計串操作函數(shù)(一)指令含義blanks(n)創(chuàng)建n個空格串char(s1,s2,…)把串s1,s2等逐個寫成行,形成多行數(shù)組deblank(s)刪去串尾部的空格符eval(s)把串s當(dāng)作MATLAB指令運(yùn)行eval(s1,sc)把串s1當(dāng)作MATLAB指令運(yùn)行。若s1運(yùn)行發(fā)生錯誤,則運(yùn)行scfeval(f,x,y,…)對輸入宗量x,y等計算函數(shù)ffindstr(s1,s2)在較長串中,找出短串的起始字符的下標(biāo)ischar(s)s是字符串則判“真”給出邏輯1isletter(s)以邏輯1指示s里文字符的位置isspace(s)以邏輯1指示s里空格符的位置lasterrMATLAB發(fā)出的最新錯誤信息第37頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計串操作函數(shù)(二)指令含義lower(s)使s里的英文字母全部小寫str2mat(s1,s2,…)把串s1,s2等逐個寫成行,形成多行數(shù)組,并刪出全空行strcat(s1,s2,…)把串s1,s2等連接成長串strcmp(s1,s2)若串s1,s2相同,則判“真”給出邏輯1strjust(s)字符串的對齊方式:或右對齊,或左對齊,或?qū)χ衧trmatch(s1,s2)逐行搜索串s2,給出以s1開頭的那些行的行號strncmp(s1,s2,n)若串s1,s2的前n個字符相同,則判“真”給出邏輯1strrep(s1,s2,s3)串s1中的所有出現(xiàn)s2的地方替換為s3strtok(s)找出第一個間隔符(空格、制表位、回車符)前的內(nèi)容strvcat(s1,s2,…)把串s1,s2等逐個寫成行,形成多行數(shù)組upper(s)使s里的英文字母全部大寫第38頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計第八節(jié)異質(zhì)(元胞)數(shù)組異質(zhì)(元胞)數(shù)組的基本組分(Element)是元胞(Cell)(抽屜或單元)。每個元胞本身在數(shù)組中是平等的,它們只能以下標(biāo)區(qū)分。元胞可以存放任何類型、任何大小的數(shù)組(如任意維數(shù)值數(shù)組、字符串?dāng)?shù)組、符號對象等)。而且,同一個異質(zhì)(元胞)數(shù)組中各元胞中的內(nèi)容可以不同。異質(zhì)(元胞)數(shù)組的維數(shù)不受限制;異質(zhì)(元胞)數(shù)組對元胞的編址方法也有單下標(biāo)編址和全下標(biāo)編址兩種。第39頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計對異質(zhì)(元胞)數(shù)組來說,元胞和元胞里的內(nèi)容是兩個不同范疇的東西。因此,尋訪元胞和尋訪元胞中的內(nèi)容是兩種不同的操作。MATLAB設(shè)計了兩種不同的操作:元胞外標(biāo)識(CellIndexing)元胞內(nèi)編址(ContentAddressing)例:A(2,3):是指A異質(zhì)(元胞)數(shù)組中的第2行第3列元胞元素;A{2,3}:是指A異質(zhì)(元胞)數(shù)組第2行第3列元胞中所允許存或取的內(nèi)容;注意:兩者的區(qū)別僅在于所用的括號不同?!巴鈽?biāo)識的元胞元素”用的是“圓括號”“內(nèi)編址元胞元素”內(nèi)涵”用的是“花括號”第40頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計異質(zhì)(元胞)數(shù)組的創(chuàng)建直接使用花括號{}將所有元素內(nèi)容一次設(shè)定完成

A={'howareyou.',[12;34];eye(3,4),{'Tom','Jane'}}外標(biāo)識元胞元素賦值法

A(1,1)={'Howareyou.'}

A(1,2)={5+3i}編址元胞元素內(nèi)涵的直接賦值法

A{1,1}='Howareyou.'

A{1,2}=5+3i第41頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計

異質(zhì)(元胞)數(shù)組的創(chuàng)建利用cell函數(shù)為元胞數(shù)組預(yù)留空間(1)cell(n)

創(chuàng)建一個n×n的空元胞數(shù)組(2)cell(m,n)orcell([mn])

創(chuàng)建一個m×n的空元胞數(shù)組(3)cell(m,n,p,…)orcell([mnp…])

創(chuàng)建一個m×n×p×…的空元胞數(shù)組(4)cell(size(A))

創(chuàng)建一個與數(shù)組A相同大小的空元胞數(shù)組第42頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計異質(zhì)(元胞)數(shù)組的內(nèi)容顯示使用celldisp命令顯示元胞數(shù)組的內(nèi)容celldisp(A):以列順序顯示元胞數(shù)組A的內(nèi)容celldisp(A,name):用串name作為數(shù)組的顯示名使用cellplot命令以圖形顯示元胞數(shù)組的內(nèi)容cellplot(A):涂滿顏色的方格表示向量或數(shù)組的元素,標(biāo)量和短文本顯示為文本。cellplot(A,’lengend’):旁邊顯示一圖例第43頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計異質(zhì)(元胞)數(shù)組內(nèi)容的獲取取一個元胞

>>A(1,2)取一個元胞的內(nèi)容>>A{2,1}取元胞內(nèi)的子數(shù)組>>A{2,1}(2,2)同時調(diào)取多個元胞內(nèi)容>>[x1,x2,x3]=deal(A{[2,3,4]})第44頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計異質(zhì)(元胞)數(shù)組的擴(kuò)充、收縮和重組異質(zhì)(元胞)數(shù)組的擴(kuò)充利用cell指令創(chuàng)建元胞數(shù)組元胞數(shù)組的“列”擴(kuò)充和“行”擴(kuò)充異質(zhì)(元胞)數(shù)組的收縮和重組異質(zhì)(元胞)數(shù)組的收縮A(:,n)=[]異質(zhì)(元胞)數(shù)組的重組reshape第45頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計第九節(jié)結(jié)構(gòu)(構(gòu)架)數(shù)組結(jié)構(gòu)(構(gòu)架)數(shù)組:與元胞數(shù)組一樣,也能在一個數(shù)組里存放各類數(shù)據(jù)。從一定意義上講,結(jié)構(gòu)(構(gòu)架)數(shù)組組織數(shù)據(jù)的能力比元胞數(shù)組更強(qiáng)、更富于變化。結(jié)構(gòu)(構(gòu)架)數(shù)組的基本組分是構(gòu)架(Structure)。數(shù)組中的每個構(gòu)架是平等的,它們以下標(biāo)區(qū)分。構(gòu)架必須在劃分域(Fields,字段)后才能使用。數(shù)據(jù)不能直接存放于構(gòu)架,而只能存放在域(字段)中。構(gòu)架的域可存放任何類型、任何大小的數(shù)組(如任意維數(shù)值數(shù)組、字符串?dāng)?shù)組、符號對象等)。而且,不同構(gòu)架的同名域(字段)中存放的內(nèi)容可以不同。結(jié)構(gòu)(構(gòu)架)數(shù)組的維數(shù)不受限制。結(jié)構(gòu)(構(gòu)架)數(shù)組對構(gòu)架的編址方法也有單下標(biāo)編址和全下標(biāo)編址兩種。第46頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計結(jié)構(gòu)(構(gòu)架)數(shù)組與異質(zhì)(元胞)數(shù)組的異同比較異質(zhì)(元胞)數(shù)組結(jié)構(gòu)(構(gòu)架)數(shù)組舉例(3×4)異質(zhì)(元胞)數(shù)組A(3×4)結(jié)構(gòu)(構(gòu)架)數(shù)組B它有名為f1,f2的兩個域(字段)基本組分(Element)元胞(Cell)構(gòu)架(Structure)對基本組分的編址數(shù)碼下標(biāo):全下標(biāo)、單下標(biāo)如:A(1,2),即A(4)數(shù)碼下標(biāo):全下標(biāo)、單下標(biāo)如:B(1,2),即B(4)可存放的數(shù)據(jù)類型任何類型(數(shù)值、字符、元胞、構(gòu)架等及其他對象)任何類型(數(shù)值、字符、元胞、構(gòu)架等及其他對象)直接存放數(shù)據(jù)的場所元胞本身如:元胞A(1,2)“域(Field)”

(字段)如構(gòu)架域B(1,2).f1基本組分的尋訪方式被標(biāo)識的元胞名如:A(1,2)被標(biāo)識的構(gòu)架名如:B(1,2)具體內(nèi)容的尋訪方式“花括號”標(biāo)識的元胞名如:A{1,2}帶“域名”的標(biāo)識構(gòu)架名如:B(1,2).f1實現(xiàn)元胞數(shù)組與構(gòu)架數(shù)組之間轉(zhuǎn)換的指令cell2struct把元胞數(shù)組轉(zhuǎn)換為構(gòu)架數(shù)組struct2cell把構(gòu)架數(shù)組轉(zhuǎn)換為元胞數(shù)組第47頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計結(jié)構(gòu)數(shù)組的創(chuàng)建直接創(chuàng)建

>>student(1).name=‘張三’;>>student(1).sex=‘female’;利用struct函數(shù)創(chuàng)建 s=struct(‘field1’,value1,’field2’,value2,…)s=struct(‘field1’,{},’field2’,{},…)s=struct([])

>>student(1)=struct('name','李四','sex','female');第48頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計方法示例初始化字段Struct以標(biāo)量為參數(shù)weather(3)=struct('temp',72,'rainfall',0.0);用字段初始化weather(3)用空矩陣初始化weather(1)和weather(2)在repmat函數(shù)中使用structweather=repmat(struct('temp',72,'rainfall',0.0),1,3);用一組字段值初始化weather的所有結(jié)構(gòu)Struct以元胞數(shù)組為輸入?yún)?shù)weather=struct('temp',{68,80,72},'rainfall',{0.2,0.4,0.0})用元胞數(shù)組中指定的不同字段值初始化weather的各個結(jié)構(gòu)預(yù)分配結(jié)構(gòu)數(shù)組的三種方法第49頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計結(jié)構(gòu)數(shù)組的獲取和設(shè)置使用“.”符號獲取

>>stu=student(1).name利用getfield獲取結(jié)構(gòu)數(shù)組的數(shù)據(jù)

getfield(array,{array_index},field,{field_index})>>sex=getfield(student,{1},’sex’)利用setfield設(shè)置結(jié)構(gòu)數(shù)組的數(shù)據(jù)

new_structure=setfield(array,{array_index},field,{field_index},V)>>stu1=setfield(student,{1},’sex’,’male’)第50頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計結(jié)構(gòu)數(shù)組域的獲取使用fieldnames獲取結(jié)構(gòu)數(shù)組的所有域

>>x=fieldnames(student)獲取結(jié)構(gòu)數(shù)組域的數(shù)據(jù)①使用“[]”合并相同域的數(shù)據(jù)并排成水平向量

>>names=[];②使用cat將其變成多維數(shù)組

>>cat(1,);>>cat(2,);第51頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計使用動態(tài)字段名structName.(expression)structName.(expression)(i,j) expression為變量第52頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計增加和刪除結(jié)構(gòu)字段增加結(jié)構(gòu)字段

只要為一個結(jié)構(gòu)數(shù)組中的任何一個結(jié)構(gòu)增加就可以了從結(jié)構(gòu)中刪除字段①s=rmfield(s,'field')

從數(shù)組s中刪除指定的字段②s=rmfield(s,FIELDS)

刪除多個字段。FIELDS是多個字段名的字符數(shù)組或字符元胞數(shù)組第53頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計第十節(jié)稀疏矩陣第54頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計稀疏矩陣的創(chuàng)建使用sparse命令直接創(chuàng)建稀疏矩陣:格式:S=sparse(i,j,s,m,n)其中是i行索引,j是列索引,s是非零元素所形成的向量,m是S的列維數(shù),n是S的行維數(shù)。使用spdiags命令可由對角線元素來構(gòu)建一個稀疏矩陣:格式:S=spdiags(D,p,m,n)其中D的每一個列代表矩陣的對角線向量,p代表對角線的位置(0代表主對角線,-1代表向下位移一單位的次對角線,1代表向上位移一單位的次對角線,依此類推),m與n則分別代表矩陣的行維數(shù)與列維數(shù)。第55頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計常用的稀疏矩陣處理函數(shù)函數(shù)說明full將稀疏矩陣轉(zhuǎn)換為完全矩陣nnz返回矩陣的非0元素數(shù)nzmax返回為非0元素分配的存儲量sparse建立稀疏矩陣或?qū)⑼耆仃囖D(zhuǎn)換為稀疏矩陣sprand建立稀疏均勻分布的隨機(jī)矩陣issparse測試矩陣是否為稀疏矩陣nonzeros返回矩陣的非0元素speye建立一個稀疏等同陣第56頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計稀疏矩陣的儲存空間對于一個只包含實數(shù)的稀疏矩陣,假設(shè)其維數(shù)為m×n,含有nnz個非零元素,MATLAB動用了三個內(nèi)部數(shù)組來儲存此稀疏矩陣的相關(guān)信息:第一個數(shù)組:以double方式儲存了所有的非零元素,其長度為nnz,使用的空間大小為8×nnz字節(jié)(Bytes);第二個數(shù)組:以整數(shù)方式儲存了每個元素的行索引,其長度為nnz,使用的空間大小為4×nnz字節(jié)(Bytes);第三個數(shù)組:以整數(shù)方式儲存了列的起始指針,其長度為n,使用的空間大小為4×n字節(jié)(Bytes);整個稀疏矩陣占用的空間大小為8×nnz+4×nnz+4×n+4=12×nnz+4×n+4第57頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計第十一節(jié)多項式降冪多項式

P(x)=a0xn+a1xn-1+…+an-1x+an用以下系數(shù)矢量(系數(shù)行向量)表示:

p=[a0,a1,…,an-1,an]

即把多項式的各項系數(shù)依降冪次序排放在行向量中。注意:假如多項式中缺某冪次項,則應(yīng)認(rèn)為該冪次項的系數(shù)為零。第58頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計創(chuàng)建多項式的方法-系數(shù)矢量的直接輸入法在命令窗直接輸入多項式的系數(shù)矢量,然后利用轉(zhuǎn)換函數(shù)poly2sym將多項式由系數(shù)矢量形式轉(zhuǎn)換為符號形式。-由根矢量創(chuàng)建多項式由給定的根矢量創(chuàng)建多項式,由函數(shù)poly實現(xiàn)。若希望創(chuàng)建實系數(shù)多項式,根矢量的復(fù)數(shù)根必須共軛成對。含復(fù)數(shù)根的根矢量所創(chuàng)建的多項式系數(shù)矢量的系數(shù)中,有可能帶有很?。ㄔ诮財嗾`差數(shù)量級)的虛部,此時可采用取實部的命令(real)把虛部濾掉。第59頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計

多項式運(yùn)算-多項式求值

polyval(p,s)polyvalm(p,s)s必須為方陣-多項式求根

r=roots(p)-特征多項式

p=poly(s)s必須為方陣,p特征多項式-部分分式展開

[r,p,k]=residue(b,a)第60頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計-多項式乘法和除法

p=conv(p1,p2)[q,r]=deconv(p1,p2)%q是商,r是余子式-多項式的微分

r=polyder(p)-多項式的積分用[p./length(p):-1:1,k]的方法來完成積分,k為常數(shù)。-多項式的擬合

p=polyfit(x,y,n)%x,y為n個數(shù)據(jù)點(diǎn)的橫縱坐標(biāo);n為用來擬合的多項式階次;p為擬合的多項式的n+1個系數(shù)。第61頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計-多項式插值插值條件:①只能在自變量取值范圍內(nèi)進(jìn)行插值②自變量必須是單調(diào)的。一維插值

yi=interp1(x,y,xi,’method’)x,y為行向量

xi是插值范圍內(nèi)任意點(diǎn)的x坐標(biāo)

yi則是插值運(yùn)算后的y坐標(biāo)

method是插值函數(shù)的的類型:

linear為線性插值

nearest為最接近的相鄰點(diǎn)插值

spline為三次樣條插值

cubic為三次插值第62頁,課件共70頁,創(chuàng)作于2023年2月Matlab程序設(shè)計-多項式插值二維插值

zi=interp2(x,y,z,xi,yi,’method’)method是插值函數(shù)的的類型:

linear為線性插值

nearest為最接近的相鄰點(diǎn)插值

cubic為三次插值第63頁,課件共70頁,創(chuàng)作

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論