首發 | 仿真秀App(ID:fangzhenxiu2018)
導讀:現在很多學科都要用到MATLAB,為什麼呢?因為人們很難直觀的從一大堆數據中發現它們的含義或者規律,而數據圖形能夠使視覺感官直接感受到數據的許多內在本質,發現數據的內在聯繫。MATLAB可以表達出數據的二維、三維的圖形。通過圖形的線型、色彩、視角等屬性的控制,可把數據的內在特徵表現出來。所以自然成為很多學科畫圖的首選工具。下面我們一起來學習Matlab繪圖的基本知識和相關命令。MATLAB擁有強大的繪圖功能,軟體提供了一系列的繪圖函數,用戶不需要過多的考慮繪圖的細節,只需要給出一些基本參數就能畫出所需圖形。這類畫圖函數稱為高層繪圖函數。
而且MATLAB還提供了直接對圖形句柄進行操作的低層繪圖操作,這樣就可以直接對畫好的圖形直接操作。這類操作是將圖形的每個圖形元素(如坐標軸、曲線、文字等)看做一個獨立的對象,系統給每個對象分配一個句柄,通過句柄對該圖形元素進行操作,而不影響其他部分。是不是很牛啊?
二維圖形是將平面坐標上的數據點連接起來的平面圖形。可以採用不同的坐標系,如直角坐標、對數坐標、極坐標等。二維圖形的繪製是其他繪圖操作的基礎。
最基本也是最重要的函數登場了!plot函數!怎麼用?有沒有實例?我們接著往下學習。
二維圖形是將平面坐標上的數據點連接起來的平面圖形。可以採用不同的坐標系,如直角坐標、對數坐標、極坐標等。二維圖形的繪製是其他繪圖操作的基礎。上堂課講到繪製二維曲線的基本函數為plot,怎麼用呢?plot函數是最基本而且應用最為廣泛的繪圖函數,利用它可以在二維平面上繪製出不同的曲線。怎麼個不同法呢?
講完理論,該來動手演練了。無實踐、無工科。
這樣的程序會出什麼結果呢?subplot有什麼功能呢?linspace又有什麼功能呢?請大家到help裡面查找這兩個函數的說明文件。至於如何使用?咱們接著學習。
同學們是不是得到這樣的圖形呢?
再給出一個例子。在[0 , 2pi]區間,繪製一條曲線。什麼曲線呢?
程序如下:在命令行窗口中輸入以下命令
>> x=0:pi/50:2*pi;>> y=2*exp(-0.5*x).*sin(2*pi*x);>> plot(x,y
程序執行後,打開一個圖形窗口,在其中就有程序想要繪製的曲線。注意:指數函數和正弦函數之間要用點乘運算,因為二者是向量。很多同學經常不注意整個點,這個點有什麼用呢?請同學們去問百度。
一定要知道點乘和乘的差異!!!
作為剛接觸MATLAB任何人,還要掌握哪些知識呢?
極坐標是屬於高中就學習的數學知識,因此有必要在這裡講一下。
還需要簡單的講一些圖像處理的知識。同學們不要擔心,都是最基本的知識。
一點都不難!這些函數必須都要會使用,而且是熟練使用。
還要補充講解一個函數。semilogx函數
功能:x軸對數圖形。對於通信專業的學生而言,這個函數是肯定要用到的。請大家在命令行中寫一下下面的代碼,看看會出現什麼結果?
>>x = 0:.1:10;>>semilogx(x,cos(10.^x))那bar函數又怎麼使用呢?hist函數又怎麼使用呢?stem函數又怎麼使用呢?好學的同學可以通過matlab的help來找到問題的答案!順便再提一句:點乘和乘的差別是什麼呢?這裡又遇見了點乘了哦!
休息一下!
需要同學們課後找資料來學習哦。哪個函數是用來畫二維條形直方圖呢?哪個函數是用來畫二維垂直條形圖呢?
stem函數怎麼用?以後大家在學習我的《數位訊號處理》的時候,可要用到它哦。本課程講解了部分二維圖形的注釋命令,那麼還有哪些其他命令呢?
比如legend命令。該函數可以在圖形上添加文字。該命令對有多種圖形對象類型(線條圖、條形圖等)的窗口中顯示出一個文字框。
講完理論,就來實踐。還是那句老話,無實踐,無工科。帶病堅持講課,而且還在課後寫文章,真的很累,但我更要堅持,做一個好榜樣。即使只有幾個員能體會個中辛苦。
函數說明:axis([xmin xmax ymin ymax])功能:設置當前圖形的坐標範圍,分別為x軸的最小值和最大值,y軸的最小值和最大值。axis off:關閉所有的坐標軸標籤、刻度、背景。axis on:打開所有的坐標軸標籤、刻度、背景。title函數功能:給當前軸加上標題。每個axes圖形對象可以有一個標題。標題定位於axes的上方正中央。title('string') 在當前坐標軸上方正中央放置字符串string作為標題。預先看看電子類、通信類專業的同學們將要畫什麼圖呢?
誤碼率性能!!!
同學們也會在《通信原理》中看到它(上圖)。同學們做好學習的準備了嗎?以後這些圖可是都要會畫的哦!
以上講解了很多二維圖形注釋命令,大家一定要多多實踐!
title('string') :在當前坐標軸上方正中央放置字符串string作為標題。
text(x,y,'string'):在圖形中指定的位置(x,y)上顯示字符串string。xlabel('string')、ylabel(『string』) :在當前軸對象中的x、y軸貼標籤。注意:若再次執行xlabel或ylabel命令,則新標籤會覆蓋舊標籤。grid off :在當前的坐標軸中去掉分隔線。
上述內容就是關於如何畫二維圖形的知識。那如何畫三維圖形呢?
matlab三維畫圖主要有三個命令:plot3命令、mesh命令和surf命令。
本課程只是簡單介紹一下plot3函數。
plot3是三維畫圖的基本函數,繪製的是最為主要的3D曲線圖,最主要的調用格式是:plot3(X,Y,Z)
當X,Y,Z為長度同樣的向量時,plot3命令將繪得一條分別以向量X,Y,Z為(X,Y,Z)坐標值的曲線。
當X,Y,Z均為m*n的矩陣時,plot3命令將繪得m條曲線,每條曲線均為X,Y,Z列向量為(X,Y,Z)坐標值的曲線。
餘下的兩個函數怎麼使用呢?請同學們自行查找資料學習吧。
溫馨提示:通信類學生一定要掌握semilogx函數的用法哦,因為你會一直和它打交道。比如上堂課涉及的誤碼率曲線圖就是這個函數畫的哦。
增加2.4 專業領域畫圖。為同學們以後做好鋪墊!
scatter可用於描繪散點圖。
scatter(X,Y):X和Y是數據向量,以X中數據為橫坐標,以Y中數據位縱坐標描繪散點圖,點的形狀默認使用圈。
例子:
Y = X + rand(size(X));
scatter(X, Y)可用於通信仿真中表示信號的星座圖,當然也在數據分析的很多地方可以用!!!
bar:條形圖
bar3 : 3D條形圖
barh : 繪製水平條形圖
bar3h : 水平3D條形圖
histogram: 直方圖
histogram2:二元直方圖
polarhistogram:極坐標中直方圖
請同學們在命令行窗口使用這些函數,一定要掌握!只有通過使用才能掌握!反覆強調操作的重要性,不知道有沒有效果?我也只能做到這樣了!此時,老師拋出一個問題?matlab能不能製作動圖呢?用一個程序實例來完成畫圖課程的講解!
data = normrnd(0,2,1,1000);% 生成隨機數(正態分布)%繪製直方圖hist(data,30); hold on;%求出概率密度函數參數[mu,sigma]=normfit(data);%繪製概率密度函數[n,x]=hist(data,30);y = normpdf(x,mu,sigma);% 處理數據,使得密度函數和最高點對齊y=y/max(y)*max(n);plot(x,y,'r-');學過概率統計課程的人都應該能看懂!正態分布的案例實在是太多了。請記住上述程序中涉及到的函數。這個程序就是為了讓同學們感受正態分布和平均分布的差異!有圖就非常容易理解!最後,我只想把我的知識通過網絡傳播給真正想學的人了!
自2020年11月起,蔡老師每周三和周六,免費在仿真秀平臺開展《Matlab工程師線上訓練營》,並且為用戶提供即時在線答疑。11月14日晚20-21時,我將繼續直播,歡迎大家繼續來聽。溫馨提示:電子類、通信類專業的大學生們必看!適合在電子、通信、生物醫學、計算機領域工作的研究人員自學MATLAB!
注:11月14日今晚20時直播,已經講到了第三課,錯過前首播的同學,可以在仿真秀官網回看視頻,免費的。
作者:蔡老師,仿真秀專欄作者
聲明:原創文章,首發仿真秀APP(ID:fangzhenxiu2018),部分圖片源自網絡,如有不當請聯繫我們,歡迎分享,禁止私自轉載,轉載請聯繫我們。
如果您正在學習CAE ,歡迎加入我們的學習型工程師社群,與我們抱團一起學習理論、軟體和行業應用。如果您也想在本公眾號發布文章,歡迎向我投稿(滿意稿酬和尊重署名)哦,更多詳情請諮詢仿真小助手(在仿真秀公眾號對話框回復 小助手 ,備註 進群/投稿 即可)。
點擊閱讀原文,參加算法工匠Matlab工程師線上訓練營。