国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

Matlab工程應(yīng)用核心內(nèi)容與講授方法探討

2022-05-30 10:48:04潘昀廖蕓蓉薛大文白興蘭李磊
電腦知識(shí)與技術(shù) 2022年31期
關(guān)鍵詞:旋轉(zhuǎn)體編程圖形

潘昀 廖蕓蓉 薛大文 白興蘭 李磊

摘要:Matlab作為一門重要的編程語言,目前從工程應(yīng)用的角度出發(fā),對(duì)Matlab重、難點(diǎn)尚未有較系統(tǒng)詳細(xì)的總結(jié)。該文將從三個(gè)方面對(duì)Matlab核心內(nèi)容進(jìn)行講授:1) 矩陣的處理函數(shù);2) 函數(shù)之間的包含關(guān)系;3) 圖形的編程方法,讓初學(xué)者加深理解Matlab中的核心內(nèi)容。

關(guān)鍵詞:Matlab;編程;函數(shù);旋轉(zhuǎn)體;圖形

中圖分類號(hào):G643.2 ? ? ?文獻(xiàn)標(biāo)志碼:A

文章編號(hào):1009-3044(2022)31-0046-03

Matlab的全稱是Matrix Laboratory,即矩陣和實(shí)驗(yàn)室。矩陣在Matlab中應(yīng)用廣泛,尤其在處理數(shù)據(jù)方面占據(jù)優(yōu)勢(shì)。目前,高校學(xué)生在學(xué)習(xí)Matlab時(shí),對(duì)于很多重點(diǎn)內(nèi)容細(xì)節(jié)的學(xué)習(xí)不夠,導(dǎo)致在解決實(shí)際工程問題時(shí)會(huì)遇到麻煩。目前,對(duì)于Matlab的研究大多集中在基于Matlab解決實(shí)際問題,高云峰[1]利用Matlab對(duì)系列力學(xué)問題進(jìn)行了求解;潘昀等[2]以Matlab為載體講授最小二乘法;許小勇等[3]基于Matlab編寫了三次樣條插值函數(shù)程序;何德峰等[4]基于Matlab軟件,對(duì)現(xiàn)代控制理論仿真實(shí)驗(yàn)教學(xué)進(jìn)行了研究。又或是僅對(duì)教學(xué)方式進(jìn)行研究,王海龍等[5]對(duì)Matlab在高職數(shù)學(xué)中的應(yīng)用進(jìn)行了研究;韓濤等[7]基于Matlab對(duì)電力電子技術(shù)實(shí)驗(yàn)教學(xué)改革進(jìn)行了研究。

對(duì)于Matlab的核心內(nèi)容的講授方法介紹相關(guān)研究較少,市面上尚有的參考書籍也很少做多簡而精。在結(jié)合Matlab解決實(shí)際問題時(shí),只有對(duì)核心內(nèi)容理解透徹才能夠得出準(zhǔn)確的結(jié)果,因此對(duì)Matlab工程應(yīng)用核心內(nèi)容的把握以及對(duì)核心內(nèi)容的講授方法均至關(guān)重要。

1 矩陣的處理函數(shù)

在Matlab中,矩陣應(yīng)用中向量和矩陣的創(chuàng)建是基礎(chǔ),而點(diǎn)運(yùn)算和矩陣的數(shù)學(xué)運(yùn)算用于計(jì)算實(shí)際工程應(yīng)用中復(fù)雜的問題。矩陣在處理數(shù)據(jù)上,具有高效、靈活、簡便、精度高等優(yōu)點(diǎn)。常見的矩陣中的函數(shù)有l(wèi)ength、eye、zeros、meshgrid、reshape、diag、repmat等,其中有些函數(shù)比較復(fù)雜、具有較強(qiáng)的混淆性,不易理解,單看函數(shù)介紹,初學(xué)者無法完全掌握。對(duì)數(shù)據(jù)進(jìn)行生成、插值、重新組合等高階處理時(shí),meshgrid和reshape函數(shù)使用較多且具有一定難度。因此,本論文將對(duì)meshgrid函數(shù)和reshape函數(shù)進(jìn)行詳細(xì)探討,通過實(shí)例講授如何高效創(chuàng)建矩陣,讓初學(xué)者可以對(duì)矩陣有一個(gè)更加深入的了解。

1.1 meshgrid

1.1.1 meshgrid真實(shí)含義

meshgrid函數(shù)的本質(zhì)就是for循環(huán),很大程度提高了Matlab的運(yùn)算速度,如圖1進(jìn)行了for循環(huán)和meshgrid函數(shù)創(chuàng)建二維網(wǎng)格和三維數(shù)組的對(duì)比,可以很直觀看出meshgrid函數(shù)的優(yōu)勢(shì)。在學(xué)習(xí)meshgrid函數(shù)的過程中,存在的難點(diǎn)大致可以分為三點(diǎn):1) 對(duì)meshgrid函數(shù)輸出和輸入的對(duì)應(yīng)關(guān)系不清楚;2) 對(duì)meshgrid函數(shù)生成矩陣的行、列排列規(guī)律不理解;3) 三維繪圖函數(shù)調(diào)用meshgrid函數(shù)生成的三維數(shù)組。本文將詳細(xì)探討該函數(shù)的基本使用方法并通過一些簡單的案例來進(jìn)行說明。meshgrid函數(shù)的調(diào)用方法如:[X,Y]=meshgrid(x,y);[X,Y]=meshgrid(x);[X,Y,Z]=meshgrid(x,y,z);[X,Y,Z]=meshgrid(x)。

上述四個(gè)語法中x,y,z都是一維數(shù)據(jù),在同一語法中矩陣X、Y、Z是同維度矩陣。創(chuàng)建二維網(wǎng)格時(shí),對(duì)于X矩陣,向量x確定矩陣中行的值,行數(shù)由向量y決定;對(duì)于Y矩陣,向量y確定矩陣中列的值,列數(shù)由向量x決定。創(chuàng)建三維數(shù)組時(shí),數(shù)組數(shù)量由向量z決定,即向量z中包含元素?cái)?shù)量。矩陣X和Y行列生成規(guī)律和二維網(wǎng)格一樣,矩陣Z中元素值由向量z中元素值決定,每一組對(duì)應(yīng)向量z中的一個(gè)元素。使用meshgrid函數(shù)相較for循環(huán)更為高效、簡便,只需要簡單一行代碼即可代替for循環(huán)體,很大程度上提高了運(yùn)算效率,避免了煩瑣的循環(huán)。

1.1.2 meshgrid

函數(shù)meshgrid一般用于生成二維網(wǎng)格或三維圖形所需要的網(wǎng)格數(shù)據(jù),進(jìn)行數(shù)據(jù)可視化時(shí),可以使用meshgrid函數(shù)處理數(shù)據(jù)進(jìn)而繪制三維圖形。本論文將直接結(jié)合實(shí)例,讓初學(xué)者可以更加直觀地理解如何使用meshgrid函數(shù)數(shù)據(jù)可視化。

1.2 reshape

在Matlab中,reshape函數(shù)又稱重構(gòu)數(shù)組。即把矩陣重新進(jìn)行構(gòu)造,得到想要的新維度矩陣,但前后兩個(gè)矩陣中的元素不變,只是排列順發(fā)生了改變。跟meshgrid函數(shù)一樣,reshape函數(shù)的本質(zhì)也是for循環(huán),其存在也是為了優(yōu)化for循環(huán),提高M(jìn)atlab的運(yùn)算效率。

reshape函數(shù)的調(diào)用方法有:1) B = reshape(A,sz);2) B = reshape(A,sz1,...,szN)。語法1中,sz是一個(gè)大小向量,必須有兩個(gè)及以上元素構(gòu)成,決定矩陣B的維度。向量sz的數(shù)組元素乘積和矩陣A數(shù)組元素的數(shù)目相等,也即矩陣B是在以矩陣A的元素?cái)?shù)量為限制條件的前提下進(jìn)行構(gòu)造的。語法2中,sz1,...,szN,sz1和sz2代表著矩陣的行列數(shù)量,在此之后的szN跟矩陣B的維度有關(guān)。在使用語法2時(shí),用[]符號(hào)代替sz,...,szN中一個(gè)維度可以自動(dòng)計(jì)算維度大小。對(duì)于矩陣B,是按照矩陣A列從左到右的順序進(jìn)行元素讀取生成的,元素?cái)?shù)量跟矩陣A保持一致。

reshape函數(shù)一般用于改變矩陣大小、矩陣維度??梢允苟S矩陣和三維矩陣相互轉(zhuǎn)化,當(dāng)二維矩陣轉(zhuǎn)換成三維矩陣時(shí),可以把數(shù)據(jù)處理得更加詳細(xì)直觀;當(dāng)三維矩陣轉(zhuǎn)化為二維矩陣時(shí),可以簡化輸出結(jié)果,使所有維度都排列在一起。無論是二維矩陣轉(zhuǎn)換成三維矩陣還是三維矩陣轉(zhuǎn)換成二維矩陣,其原理都是一樣的。

1.3 矩陣創(chuàng)建實(shí)例

在解決實(shí)際工程問題時(shí),一般需要先對(duì)問題進(jìn)行數(shù)學(xué)建模,在建模過程中通常涉及矩陣。一般來說,使用矩陣進(jìn)行繪圖可以分為兩個(gè)階段,一是繪制網(wǎng)格階段;二是在網(wǎng)格的基礎(chǔ)上繪制旋轉(zhuǎn)體。因此,本節(jié)將通過講授實(shí)際應(yīng)用中使用較多的幾個(gè)實(shí)例來對(duì)meshgrid和reshape函數(shù)進(jìn)一步展開說明,讓初學(xué)者在今后使用Matlab建模時(shí)作為參考。

1.3.1 畫網(wǎng)格

網(wǎng)格可以分為二維網(wǎng)格和三維網(wǎng)格,使用meshgrid繪制網(wǎng)格是高效、便捷的,為詳細(xì)展示該函數(shù)使用方法,揭開其中原理,教學(xué)中應(yīng)將通過畫二維網(wǎng)格、圓弧網(wǎng)格以及波面三個(gè)案例進(jìn)行演示,如圖1所示。

1.3.2 畫旋轉(zhuǎn)體

在使用Matlab建模時(shí),模型會(huì)涉及各種各樣的形狀。如對(duì)海洋資料浮標(biāo)建模時(shí),浮標(biāo)的形狀有球型,有圓柱形等。因此,教學(xué)中應(yīng)將以球形、圓柱形、圓錐形、圓臺(tái)形這幾個(gè)較為常見的形狀作為實(shí)例進(jìn)行講授,如圖2。

2 函數(shù)包含關(guān)系

當(dāng)函數(shù)過多時(shí),可以選擇將不同的函數(shù)儲(chǔ)存在不同的函數(shù)文件中,需要調(diào)用時(shí)進(jìn)行讀取。一般來說,創(chuàng)建函數(shù)有三種方式:1) function命令創(chuàng)建函數(shù)文件;2) inline命令創(chuàng)建函數(shù)文件;3) 子函數(shù)創(chuàng)建函數(shù)文件。在編寫大規(guī)模代碼時(shí),會(huì)涉及多個(gè)函數(shù)的創(chuàng)建和調(diào)用,因此,必須要先明確函數(shù)之間的關(guān)系才能保證在使用過程中不會(huì)混淆出錯(cuò)。

2.1 函數(shù)與函數(shù)文件

2.1.1 定義

函數(shù)文件是指以function為開頭的腳本文件,對(duì)function命令結(jié)尾加上end語句就構(gòu)成了一個(gè)函數(shù),一個(gè)function對(duì)應(yīng)一個(gè)end語句。函數(shù)內(nèi)定義的所有變量名對(duì)函數(shù)而言都是局部的,既不會(huì)影響到其他程序文件和函數(shù)文件中同樣的變量名,也不會(huì)被其他影響[11]。函數(shù)文件中可以包含一個(gè)或多個(gè)函數(shù),當(dāng)包含多個(gè)函數(shù)時(shí),函數(shù)之間的關(guān)系就變成了主函數(shù)和子函數(shù)。

2.1.2 主函數(shù)和子函數(shù)

在函數(shù)文件中,一個(gè)M文件只能有一個(gè)主函數(shù),且主函數(shù)名稱和M文件名稱必須一致。第一個(gè)function創(chuàng)建的函數(shù)稱為主函數(shù),其他function創(chuàng)建的函數(shù)都為子函數(shù),且子函數(shù)只能由主函數(shù)和主函數(shù)文件中其他子函數(shù)調(diào)用[7]。一個(gè)主函數(shù)可以有多個(gè)子函數(shù),且可以對(duì)子函數(shù)進(jìn)行調(diào)用,使用子函數(shù)可以讓代碼更加具有觀賞性邏輯性。

2.2 函數(shù)和程序文件

2.2.1 定義

程序文件又稱腳本文件,可以將其分為函數(shù)文件和定義函數(shù)文件兩類。由上一節(jié)可知,函數(shù)文件是以function為開頭的程序文件,反之為定義函數(shù)文件。定義文件可以對(duì)函數(shù)文件進(jìn)行調(diào)用,可以用于編寫特定的程序并衍生為類,圖3為程序文件的包含關(guān)系圖。

2.2.2 函數(shù)句柄

函數(shù)句柄是一種引用函數(shù)的方法,由“@+函數(shù)名”構(gòu)成。當(dāng)一個(gè)函數(shù)的參數(shù)是函數(shù)時(shí),就需要使用函數(shù)句柄,它可以把一個(gè)計(jì)算方法以變量的形式進(jìn)行傳遞。函數(shù)句柄可以提高代碼的運(yùn)行速度,創(chuàng)建并運(yùn)行了函數(shù)句柄后,可以隨時(shí)進(jìn)行調(diào)用。函數(shù)句柄的用途可以分為兩類,一是用于命名,即創(chuàng)建函數(shù)句柄對(duì)函數(shù)進(jìn)行調(diào)用;二是用于匿名,即傳遞給函數(shù)句柄特定值進(jìn)行計(jì)算后返回。

3 圖形編程方法

清晰且直觀的圖形可以讓研究成果顯得更加具有邏輯性和可讀性。Matlab作為一款集多功能一身的編程軟件,在繪圖方面極具優(yōu)勢(shì),它可以批量出圖,圖形的清晰度也令人滿意。因此,越來越多的學(xué)者都會(huì)使用Matlab對(duì)數(shù)據(jù)進(jìn)行處理出圖,熟悉掌握?qǐng)D形的編程方法可以提高處理數(shù)據(jù)和繪制圖形的效率和質(zhì)量。

3.1 圖形輸出大小

在繪制二維曲線圖時(shí),一般要注意圖框的大小尺寸,坐標(biāo)的設(shè)置,字體的大小類型,以及對(duì)曲線的標(biāo)注等問題。[100,100,6.07×100,3.64×100]中前兩個(gè)數(shù)100,100指圖框離電腦屏幕左下角的橫縱距離,后兩個(gè)數(shù)指輸出圖形的長寬。其中2.77×100和3.64×100是根據(jù)Word頁面布局進(jìn)行換算后得到,使用Word版本為例:A4紙張寬為21cm,其左右邊距各位3.18cm,當(dāng)使用[100,100,100,100]時(shí)輸出圖形,圖形的長寬為2.41cm×2.89cm,在這一標(biāo)準(zhǔn)下,Matlab輸出圖形尺寸和Word之間的關(guān)系式為:“100=2.41cm”;故想要輸出圖形占滿Word屏幕,則輸出圖形長需接近14.64cm,同時(shí)為了圖形美觀,設(shè)置輸出圖形長寬之比為3:5,即輸出圖形寬需要接近8.78cm。

3.2 動(dòng)態(tài)圖方法

除繪制二維曲線圖外,通過Matlab繪制的動(dòng)態(tài)圖形可以直觀生動(dòng)地反映數(shù)據(jù)的變化情況,本小節(jié)將講授動(dòng)態(tài)圖形的簡易畫法,為初學(xué)者提供思路。for循環(huán)中clf和pause命令相結(jié)合生成動(dòng)態(tài)圖形。

3.3 生成動(dòng)畫

對(duì)于三維結(jié)構(gòu)物的運(yùn)動(dòng)情況,如海浪的運(yùn)動(dòng),除二維曲線變化圖和動(dòng)態(tài)圖形外,往往需要?jiǎng)赢嫷男问讲拍苊枋銮宄溥\(yùn)動(dòng)情況,在Matlab中,動(dòng)畫是依靠圖片形成幀數(shù)然后進(jìn)行播放生成的。主要語句有:O=VideoWriter('文件名.avi'); aviobj.FrameRate=5; close(O)。

4 結(jié)束語

本文旨在探討Matlab工程應(yīng)用核心內(nèi)容與講授方法,通過對(duì)矩陣中meshgrid和reshape兩個(gè)重要函數(shù),函數(shù)之間的兩個(gè)包含關(guān)系,以及Matlab中輸出圖形方法,給初學(xué)者提供思路,為今后工程計(jì)算和科技論文寫作以及編寫程序打下基礎(chǔ)。

1) 首先介紹了矩陣處理中較為常見且具有一定難度的兩個(gè)函數(shù)meshgrid和reshape,不但對(duì)兩個(gè)函數(shù)的使用語法和注意事項(xiàng)進(jìn)行了講授,應(yīng)結(jié)合實(shí)例對(duì)兩個(gè)函數(shù)進(jìn)行展開介紹說明,讓初學(xué)者對(duì)兩個(gè)函數(shù)有了更加深入的認(rèn)識(shí)。

2) 其次著重講授了函數(shù)之間存在的包含關(guān)系,即函數(shù)與函數(shù)文件和函數(shù)和程序文件之間的關(guān)系,詳細(xì)介紹了函數(shù)的調(diào)用方式、主函數(shù)與子函數(shù)之間的關(guān)系以及函數(shù)句柄的使用,讓初學(xué)者可以更加具體深入了解該如何使用函數(shù)。

3) 最后應(yīng)該學(xué)會(huì)使用編寫繪圖模板,包括:二維繪圖、動(dòng)態(tài)圖形輸出、動(dòng)畫輸出,在科技論文寫作展示成果時(shí),結(jié)合圖形進(jìn)行講授會(huì)使得文章更加直觀簡潔。

參考文獻(xiàn)

[1] 高云峰.Matlab求解理論力學(xué)問題系列(一)剛體系統(tǒng)及桁架受力問題[J].力學(xué)與實(shí)踐,2021,43(2):256-261.

[2] 許小勇,鐘太勇.三次樣條插值函數(shù)的構(gòu)造與Matlab實(shí)現(xiàn)[J].兵工自動(dòng)化,2006,25(11):76-78.

[3] 潘昀,劉燦,張建偉,等.淺談“最小二乘法原理”教學(xué)方法[J].科教文匯(中旬刊),2019(9):51-53,56.

[4] 何德峰,俞立,徐建明.基于Matlab的現(xiàn)代控制理論實(shí)驗(yàn)教學(xué)實(shí)踐[J].實(shí)驗(yàn)技術(shù)與管理,2016,33(3):123-126.

[5] 王海龍,徐愛華,賈敬堂,等.淺談Matlab在高職數(shù)學(xué)教學(xué)中的應(yīng)用[J].邯鄲職業(yè)技術(shù)學(xué)院學(xué)報(bào),2021,34(3):37-40.

[6] 韓濤,肖波,詹習(xí)生,等.基于Matlab的電力電子技術(shù)實(shí)驗(yàn)教學(xué)改革[J].湖北師范大學(xué)學(xué)報(bào)(自然科學(xué)版),2021,41(4):103-107.

[7] Magrab E B.Matlab原理與工程應(yīng)用with applications from mechanical,aerospace,electrical,and civil engineering[M]. 高會(huì)生,李新葉,胡智奇,等譯.北京:電子工業(yè)出版社,2006.

【通聯(lián)編輯:聞翔軍】

收稿日期:2022-03-16

基金項(xiàng)目:浙江海洋大學(xué)研究生一流課程建設(shè)項(xiàng)“MATLAB工程計(jì)算與優(yōu)化”(111810641210)

作者簡介:潘昀(1989—) ,男,安徽阜陽人,講師,博士,研究方向?yàn)橛?jì)算工程流體力學(xué)。

猜你喜歡
旋轉(zhuǎn)體編程圖形
編程,是一種態(tài)度
元征X-431實(shí)測(cè):奔馳發(fā)動(dòng)機(jī)編程
編程小能手
基于柱殼法及柱坐標(biāo)系求解旋轉(zhuǎn)體的體積
紡織機(jī)上誕生的編程
旋轉(zhuǎn)體體積的探討
基于微元法的旋轉(zhuǎn)體體積問題的一題多解
旋轉(zhuǎn)體容球的一個(gè)有趣共性再探究
考試周刊(2016年82期)2016-11-01 13:00:24
分圖形
找圖形
孟连| 集贤县| 上蔡县| 江油市| 德保县| 香格里拉县| 西城区| 乳山市| 静乐县| 将乐县| 民勤县| 绍兴县| 云南省| 台湾省| 黄浦区| 肥城市| 临武县| 海原县| 库伦旗| 庄河市| 托克托县| 安义县| 抚顺县| 四子王旗| 枣强县| 库尔勒市| 格尔木市| 正镶白旗| 元阳县| 正阳县| 托里县| 濮阳县| 定兴县| 惠州市| 调兵山市| 资阳市| 股票| 大洼县| 乌拉特中旗| 南宁市| 平江县|