?

Matlab工程應用核心內容與講授方法探討

2022-05-30 10:48潘昀廖蕓蓉薛大文白興蘭李磊
電腦知識與技術 2022年31期
關鍵詞:旋轉體編程圖形

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

摘要:Matlab作為一門重要的編程語言,目前從工程應用的角度出發,對Matlab重、難點尚未有較系統詳細的總結。該文將從三個方面對Matlab核心內容進行講授:1) 矩陣的處理函數;2) 函數之間的包含關系;3) 圖形的編程方法,讓初學者加深理解Matlab中的核心內容。

關鍵詞:Matlab;編程;函數;旋轉體;圖形

中圖分類號:G643.2 ? ? ?文獻標志碼:A

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

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

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

1 矩陣的處理函數

在Matlab中,矩陣應用中向量和矩陣的創建是基礎,而點運算和矩陣的數學運算用于計算實際工程應用中復雜的問題。矩陣在處理數據上,具有高效、靈活、簡便、精度高等優點。常見的矩陣中的函數有length、eye、zeros、meshgrid、reshape、diag、repmat等,其中有些函數比較復雜、具有較強的混淆性,不易理解,單看函數介紹,初學者無法完全掌握。對數據進行生成、插值、重新組合等高階處理時,meshgrid和reshape函數使用較多且具有一定難度。因此,本論文將對meshgrid函數和reshape函數進行詳細探討,通過實例講授如何高效創建矩陣,讓初學者可以對矩陣有一個更加深入的了解。

1.1 meshgrid

1.1.1 meshgrid真實含義

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

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

1.1.2 meshgrid

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

1.2 reshape

在Matlab中,reshape函數又稱重構數組。即把矩陣重新進行構造,得到想要的新維度矩陣,但前后兩個矩陣中的元素不變,只是排列順發生了改變。跟meshgrid函數一樣,reshape函數的本質也是for循環,其存在也是為了優化for循環,提高Matlab的運算效率。

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

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

1.3 矩陣創建實例

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

1.3.1 畫網格

網格可以分為二維網格和三維網格,使用meshgrid繪制網格是高效、便捷的,為詳細展示該函數使用方法,揭開其中原理,教學中應將通過畫二維網格、圓弧網格以及波面三個案例進行演示,如圖1所示。

1.3.2 畫旋轉體

在使用Matlab建模時,模型會涉及各種各樣的形狀。如對海洋資料浮標建模時,浮標的形狀有球型,有圓柱形等。因此,教學中應將以球形、圓柱形、圓錐形、圓臺形這幾個較為常見的形狀作為實例進行講授,如圖2。

2 函數包含關系

當函數過多時,可以選擇將不同的函數儲存在不同的函數文件中,需要調用時進行讀取。一般來說,創建函數有三種方式:1) function命令創建函數文件;2) inline命令創建函數文件;3) 子函數創建函數文件。在編寫大規模代碼時,會涉及多個函數的創建和調用,因此,必須要先明確函數之間的關系才能保證在使用過程中不會混淆出錯。

2.1 函數與函數文件

2.1.1 定義

函數文件是指以function為開頭的腳本文件,對function命令結尾加上end語句就構成了一個函數,一個function對應一個end語句。函數內定義的所有變量名對函數而言都是局部的,既不會影響到其他程序文件和函數文件中同樣的變量名,也不會被其他影響[11]。函數文件中可以包含一個或多個函數,當包含多個函數時,函數之間的關系就變成了主函數和子函數。

2.1.2 主函數和子函數

在函數文件中,一個M文件只能有一個主函數,且主函數名稱和M文件名稱必須一致。第一個function創建的函數稱為主函數,其他function創建的函數都為子函數,且子函數只能由主函數和主函數文件中其他子函數調用[7]。一個主函數可以有多個子函數,且可以對子函數進行調用,使用子函數可以讓代碼更加具有觀賞性邏輯性。

2.2 函數和程序文件

2.2.1 定義

程序文件又稱腳本文件,可以將其分為函數文件和定義函數文件兩類。由上一節可知,函數文件是以function為開頭的程序文件,反之為定義函數文件。定義文件可以對函數文件進行調用,可以用于編寫特定的程序并衍生為類,圖3為程序文件的包含關系圖。

2.2.2 函數句柄

函數句柄是一種引用函數的方法,由“@+函數名”構成。當一個函數的參數是函數時,就需要使用函數句柄,它可以把一個計算方法以變量的形式進行傳遞。函數句柄可以提高代碼的運行速度,創建并運行了函數句柄后,可以隨時進行調用。函數句柄的用途可以分為兩類,一是用于命名,即創建函數句柄對函數進行調用;二是用于匿名,即傳遞給函數句柄特定值進行計算后返回。

3 圖形編程方法

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

3.1 圖形輸出大小

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

3.2 動態圖方法

除繪制二維曲線圖外,通過Matlab繪制的動態圖形可以直觀生動地反映數據的變化情況,本小節將講授動態圖形的簡易畫法,為初學者提供思路。for循環中clf和pause命令相結合生成動態圖形。

3.3 生成動畫

對于三維結構物的運動情況,如海浪的運動,除二維曲線變化圖和動態圖形外,往往需要動畫的形式才能描述清楚其運動情況,在Matlab中,動畫是依靠圖片形成幀數然后進行播放生成的。主要語句有:O=VideoWriter('文件名.avi'); aviobj.FrameRate=5; close(O)。

4 結束語

本文旨在探討Matlab工程應用核心內容與講授方法,通過對矩陣中meshgrid和reshape兩個重要函數,函數之間的兩個包含關系,以及Matlab中輸出圖形方法,給初學者提供思路,為今后工程計算和科技論文寫作以及編寫程序打下基礎。

1) 首先介紹了矩陣處理中較為常見且具有一定難度的兩個函數meshgrid和reshape,不但對兩個函數的使用語法和注意事項進行了講授,應結合實例對兩個函數進行展開介紹說明,讓初學者對兩個函數有了更加深入的認識。

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

3) 最后應該學會使用編寫繪圖模板,包括:二維繪圖、動態圖形輸出、動畫輸出,在科技論文寫作展示成果時,結合圖形進行講授會使得文章更加直觀簡潔。

參考文獻

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

[2] 許小勇,鐘太勇.三次樣條插值函數的構造與Matlab實現[J].兵工自動化,2006,25(11):76-78.

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

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

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

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

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

【通聯編輯:聞翔軍】

收稿日期:2022-03-16

基金項目:浙江海洋大學研究生一流課程建設項“MATLAB工程計算與優化”(111810641210)

作者簡介:潘昀(1989—) ,男,安徽阜陽人,講師,博士,研究方向為計算工程流體力學。

猜你喜歡
旋轉體編程圖形
編程,是一種態度
編程小能手
基于柱殼法及柱坐標系求解旋轉體的體積
紡織機上誕生的編程
旋轉體體積的探討
旋轉體容球的一個有趣共性再探究
分圖形
找圖形
圖形配對
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合