科學(xué)計(jì)算語言Julia及MWORKS實(shí)踐 課件 9-數(shù)組_第1頁
科學(xué)計(jì)算語言Julia及MWORKS實(shí)踐 課件 9-數(shù)組_第2頁
科學(xué)計(jì)算語言Julia及MWORKS實(shí)踐 課件 9-數(shù)組_第3頁
科學(xué)計(jì)算語言Julia及MWORKS實(shí)踐 課件 9-數(shù)組_第4頁
科學(xué)計(jì)算語言Julia及MWORKS實(shí)踐 課件 9-數(shù)組_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

二、Julia語言基礎(chǔ)語法2.1基本數(shù)據(jù)類型2.2數(shù)組2.3集合容器2.4數(shù)學(xué)運(yùn)算和初等函數(shù)2.5

流程控制2.2、數(shù)組數(shù)組是一種容器,它顯著特點(diǎn)包括:數(shù)組是可變的對象;同一個(gè)數(shù)組中的所有元素值都必須有著相同的類型;數(shù)組可以是多維的。Julia支持多維數(shù)組:1維數(shù)組:向量,如:2維數(shù)組:矩陣,如:……n維數(shù)組2.2、數(shù)組2.2.1數(shù)組構(gòu)造與類型程序運(yùn)行結(jié)果:julia>AAny[]julia>B1×5Matrix{Int64}:12345julia>C5-elementVector{Int64}:12345julia>D5-elementVector{Int64}:12345julia>E4×4Matrix{Int64}:12345678910111213141516例如:創(chuàng)建空數(shù)組、行向量、列向量和4×4數(shù)組。A=[]B=[1

2

3

4

5]C=[1,2,3,4,5]D=[1;2;3;4;5]E=[1

2

3

4;5

6

7

8;9

10

11

12;13

14

15

16]Julia中一般使用“[]”、“,”、空格和“;”來創(chuàng)建數(shù)組。數(shù)組中同一行的元素使用空格進(jìn)行分隔,不同行之間用逗號(hào)或者分號(hào)進(jìn)行分隔。2.2、數(shù)組2.2.1數(shù)組構(gòu)造與類型常用的數(shù)組構(gòu)造與類型函數(shù)julia>a=Array{Float64}(undef,2,1)2×1Matrix{Float64}:5.4e-3230.0julia>b=Matrix(I,2,3)2×3Matrix{Bool}:100010julia>c=trues(1,3)1×3BitMatrix:111julia>d=rand(1,3)1×3Matrix{Float64}:0.4835020.4918620.613609julia>e=range(1,3,3)1.0:1.0:3.0julia>f=range(1,step=1,length=2)1:1:2julia>[f;]#還可以使用[f…]2-elementVector{Int64}:12說明:T為數(shù)據(jù)類型dims為數(shù)組維度函數(shù)描述Array{T}(undef,dims)一個(gè)沒有初始化的密集ArrayMatrix{T}(I,m,n)m行n列的單位矩陣zeros(T,dims)每個(gè)元素均為0的Arrayones(T,dims)每個(gè)元素均為1的Arraytrues(dims)每個(gè)元素均為true的BitArrayfalse(dims)每個(gè)元素均為true的BitArrayrand(T,dims)一個(gè)隨機(jī)Array,元素值是[0,1)半開區(qū)間中均勻分布且服從一階獨(dú)立分布randn(T,dims)一個(gè)隨機(jī)Array,元素為標(biāo)準(zhǔn)正態(tài)分布,服從獨(dú)立同分布range(start,stop=stop,length=n)從start到stop的帶有n個(gè)線性間隔元素的范圍fill(x,dims)一個(gè)被值x填充的Array2.2、數(shù)組2.2.1數(shù)組構(gòu)造與類型常用的數(shù)組構(gòu)造與類型函數(shù)julia>a=[1,1,1];b=fill!(Vector{Vector{Int}}(undef,3),a)3-elementVector{Vector{Int64}}:[1,1,1][1,1,1][1,1,1]julia>c=reshape(a,1,3)1×3Matrix{Int64}:111julia>reinterpret(Bool,0xff)truejulia>reinterpret(Bool,0x00)false函數(shù)描述fill!(A,x)用值x填充數(shù)組Areshape(A,dims)一個(gè)包含跟A相同數(shù)據(jù)但維度不同的數(shù)組copy(A)拷貝Asimilar(A,T,dims)一個(gè)與A具有相同類型(密集、稀疏等)的未初始化數(shù)組,但具有制定的元素類型和維度,T和dims可缺省reinterpret(T,A)與A具有相同二進(jìn)制數(shù)據(jù)的數(shù)組,但元素類型為T2.2、數(shù)組2.2.2數(shù)組的基礎(chǔ)函數(shù)函數(shù)描述ndims數(shù)組維度數(shù)目size數(shù)組大小length返回集合元素?cái)?shù)量eltype返回?cái)?shù)組或其他對象中元素的數(shù)據(jù)類型eachindex一個(gè)返回A中每個(gè)位置的高效迭代器stride返回對象相鄰指定粒度單位的距離accumulate沿A的維度做累計(jì)op運(yùn)算并返回結(jié)果repeat數(shù)組重復(fù)副本rotl90將數(shù)組逆時(shí)針旋轉(zhuǎn)90度rotr90將數(shù)組順時(shí)針旋轉(zhuǎn)90度eachrow創(chuàng)建一個(gè)迭代向量或矩陣的行的生成器eachcol創(chuàng)建一個(gè)迭代向量或矩陣的列的生成器eachslice獲得對象在指定維度的切片broadcast廣播函數(shù)以下對一些具有代表性的數(shù)組操作基礎(chǔ)函數(shù)進(jìn)行介紹。程序運(yùn)行結(jié)果:julia>array2d=[[1,2,3,4][5,6,7,8][9,10,11,12][13,14,15,16][17,18,19,20]]#構(gòu)造二維數(shù)組4×5Matrix{Int64}:1591317261014183711151948121620julia>size(array2d)#返回?cái)?shù)組array2d的大小(4,5)julia>size(array2d,2)#返回?cái)?shù)組array2d第2維度的大小5Julia>eltype(array2d),ndims(array2d),length(array2d)(Int64,2,20)#返回?cái)?shù)組的數(shù)據(jù)類型信息,維度數(shù)目,元素?cái)?shù)量例如:計(jì)算數(shù)組A的維數(shù)、長度、第2維度長度、元素?cái)?shù)量以及數(shù)據(jù)類型。獲取數(shù)組基本信息2.2、數(shù)組2.2.2數(shù)組的基礎(chǔ)函數(shù)數(shù)組中每個(gè)元素的位置程序運(yùn)行結(jié)果:1234例如:利用eachindex()函數(shù)獲得數(shù)組A對象的索引。程序:A=[10

20

30

40];#返回A中每個(gè)位置的高效迭代器foriineachindex(A)

println(i)end沿?cái)?shù)組A的維度做累計(jì)運(yùn)算例如:利用accumulate()函數(shù)對數(shù)組指定維度做迭代計(jì)算。程序:julia>X=accumulate(+,[1,2,3])#沿維度做加法運(yùn)算3-elementVector{Int64}:136julia>X=accumulate(+,[1,2,3];init=100)3-elementVector{Int64}:101103106#init參數(shù)用于指定迭代計(jì)算的起始狀態(tài)2.2、數(shù)組2.2.2數(shù)組的基礎(chǔ)函數(shù)數(shù)組中每個(gè)元素的位置程序運(yùn)行結(jié)果:1234例如:利用eachindex()函數(shù)獲得數(shù)組A對象的索引。程序:A=[10

20

30

40];#返回A中每個(gè)位置的高效迭代器foriineachindex(A)

println(i)end沿?cái)?shù)組A的維度做累計(jì)運(yùn)算例如:利用accumulate()函數(shù)對數(shù)組指定維度做迭代計(jì)算。程序:julia>X=accumulate(+,[1,2,3])#沿維度做加法運(yùn)算3-elementVector{Int64}:136julia>X=accumulate(+,[1,2,3];init=100)3-elementVector{Int64}:101103106#init參數(shù)用于指定迭代計(jì)算的起始狀態(tài)2.2、數(shù)組2.2.2數(shù)組的基礎(chǔ)函數(shù)將數(shù)組順時(shí)針或逆時(shí)針旋轉(zhuǎn)90度julia>A=[12345]1×5Matrix{Int64}:12345julia>rotl90(A)5×1Matrix{Int64}:54321julia>B=[123;456]2×3Matrix{Int64}:123456julia>rotl90(B)3×2Matrix{Int64}:362514例如:將一維數(shù)組A和二維數(shù)組B逆時(shí)針旋轉(zhuǎn)90度。廣播函數(shù)例如:利用broadcast()函數(shù)對數(shù)組進(jìn)行廣播操作。julia>broadcast(abs,[-1,0,-12,-9.1])#對數(shù)組元素值取絕對值4-elementVector{Float64}:1.00.012.09.1

julia>broadcast(+,1.0,[-1,0,-12,-9.1])#廣播指定元組中元素與1.0相加4-elementVector{Float64}:0.01.0-11.0-8.12.2、數(shù)組2.2.3索引與鏈接數(shù)組拼接函數(shù)julia>a=[1,2];b=[2,3];c=cat(a,b,dims=2)2×2Matrix{Int64}:1223julia>a=[1,2];b=[2,3];d=vcat(a,b)4-elementVector{Int64}:1223julia>hvcat(1,1,2)2×1Matrix{Int64}:12julia>hvcat((2,2),1,2,3,4)2×2Matrix{Int64}:1234julia>hvncat(2,3,4,5)1×3Matrix{Int64}:345說明:語法與函數(shù)拼接等價(jià)cat(A,B,dims=1)等價(jià)于vcat(A,B)cat(A,B,dims=2)等價(jià)于hcat(A,B)rows為每行元素個(gè)數(shù)或數(shù)組維度的元組語法函數(shù)描述cat(A,B,dims=k)沿著第k維拼接數(shù)組[A;B;C;…]vcat(A,B,C,…)縱向拼接[ABC…]hcat(A,B,C,…)橫向拼接[AB;CD;…]hvcat(rows,A,B,C,D)同時(shí)沿垂直和水平方向拼接[A;C;;B;D;;;…]hvncat同時(shí)進(jìn)行n維拼接,其中分號(hào)的數(shù)量表示拼接所在的維度2.2、數(shù)組2.2.3索引與鏈接復(fù)制數(shù)組說明:copy函數(shù)只復(fù)制原值的外層結(jié)構(gòu),若改動(dòng)原數(shù)組的元素值,復(fù)制的元素值也將改變。深復(fù)制復(fù)制原值的外層結(jié)構(gòu)、原結(jié)構(gòu)中的所有內(nèi)部對象,這樣副本與原值相互獨(dú)立。函數(shù)描述copy(A)對數(shù)組進(jìn)行淺復(fù)制deepcopy(A)對數(shù)組進(jìn)行深復(fù)制circcopy!(dest,src)將src復(fù)制到destjulia>a1=[1,3,5];a2=[2,4,6];julia>array_orig1=[a1,a2];array_copy1=copy(array_orig1);julia>a1[2]=30;array_orig1[1][2],array_copy1[1][2](30,30)julia>array_deepcopy1=deepcopy(array_orig1);julia>a1[2]=60;array_orig1[1][2],array_deepcopy1[1][2](60,30)#改變復(fù)制元素的值,對比copy與deepcopy的區(qū)別julia>src=reshape(Vector(1:16),(4,4))4×4Matrix{Int64}:15913261014371115481216julia>dest=zeros(4,4)4×4Matrix{Float64}:0.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0julia>circcopy!(dest,src)4×4Matrix{Float64}:1.05.09.013.02.06.010.014.03.07.011.015.04.08.012.016.02.2、數(shù)組2.2.3索引與鏈接笛卡爾坐標(biāo)索引函數(shù)描述findfirst(A)數(shù)組A中元素為true的第一個(gè)索引findlast(A)數(shù)組A

溫馨提示

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

最新文檔

評論

0/150

提交評論