算法工匠訓練營:MATLAB繪圖,小試牛刀

算法工匠訓練營:MATLAB繪圖,小試牛刀

導讀:正文之前,我在此詳細說明一下,因為本文包含的程序太難得,網上肯定找不到這樣的程序。隨著講課的越來越深入,我給出的程序會越來越實用,接近於實際產品。在本次課中我就給出了一個實用的算法程序,程序名是dqpsk_IF_wholeframe_Release.m。

那麼這個程序和網上的順序有什麼差別呢?可以明確的說網上的程序大多就是一個理論仿真,根本不考慮實際環境的因素。那這樣的程序是培養不了大家的算法思維的。而在這個程序裡,關於信號的捕獲、跟蹤、解調、交織解交織、譯碼等內容都在程序裡面詳細寫了。

大家在網上想找到這方面的程序,幾乎是白日做夢!

再次強調這個程序可以用於產品的研發,因此需要大家仔細的閱讀,比較和其他理論程序的差異!比如第一章的內容和本章的其他程序。後面的課程中我還會給出用於產品研發的程序。

dqpsk_IF_wholeframe_Release.m 是下行信道的程序,那麼上行信道的程序會是什麼樣呢?dqpsk_IF_wholeframe_Release.m只是控制信道的程序,那麼業務信道的程序會是什麼樣子的呢?後續會接著講,程序也會跟著上,歡迎大家跟著加入算法工匠Matlab技能專訓微課堂(見下文)。

本人當年寫這個程序花了兩週左右的時間,大家要消化這個程序需要多長時間呢?大家也許心裡都大概清楚!

以下是正文

現在很多學科都要用到MATLAB,為什麼呢?因為人們很難直觀的從一大堆數據中發現它們的含義或者規律,而數據圖形能夠使視覺感官直接感受到數據的許多內在本質,發現數據的內在聯繫。

MATLAB可以表達出數據的二維、三維的圖形。通過圖形的線型、色彩、視角等屬性的控制,可把數據的內在特徵表現出來。所以自然成為很多學科畫圖的首選工具。

下面我們一起來學習Matlab繪圖的基本知識和相關命令。

這麼多用處,大家一定要學好哦!

算法工匠訓練營:MATLAB繪圖,小試牛刀

MATLAB擁有強大的繪圖功能,軟件提供了一系列的繪圖函數,用戶不需要過多的考慮繪圖的細節,只需要給出一些基本參數就能畫出所需圖形。這類畫圖函數稱為高層繪圖函數。

而且MATLAB還提供了直接對圖形句柄進行操作的低層繪圖操作,這樣就可以直接對畫好的圖形直接操作。這類操作是將圖形的每個圖形元素(如座標軸、曲線、文字等)看做一個獨立的對象,系統給每個對象分配一個句柄,通過句柄對該圖形元素進行操作,而不影響其他部分。是不是很牛啊?

二維圖形是將平面座標上的數據點連接起來的平面圖形。可以採用不同的座標系,如直角座標、對數座標、極座標等。二維圖形的繪製是其他繪圖操作的基礎。

算法工匠訓練營:MATLAB繪圖,小試牛刀

最基本也是最重要的函數登場了!plot函數!怎麼用?有沒有實例?我們接著往下學習。

二維圖形是將平面座標上的數據點連接起來的平面圖形。可以採用不同的座標系,如直角座標、對數座標、極座標等。二維圖形的繪製是其他繪圖操作的基礎。上堂課講到繪製二維曲線的基本函數為plot,怎麼用呢?plot函數是最基本而且應用最為廣泛的繪圖函數,利用它可以在二維平面上繪製出不同的曲線。怎麼個不同法呢?

算法工匠訓練營:MATLAB繪圖,小試牛刀

算法工匠訓練營:MATLAB繪圖,小試牛刀

算法工匠訓練營:MATLAB繪圖,小試牛刀

算法工匠訓練營:MATLAB繪圖,小試牛刀

算法工匠訓練營:MATLAB繪圖,小試牛刀

算法工匠訓練營:MATLAB繪圖,小試牛刀

講完理論,該來動手演練了。無實踐、無工科。

算法工匠訓練營:MATLAB繪圖,小試牛刀

這樣的程序會出什麼結果呢?subplot有什麼功能呢?linspace又有什麼功能呢?請大家到help裡面查找這兩個函數的說明文件。至於如何使用?咱們接著學習。

算法工匠訓練營:MATLAB繪圖,小試牛刀

算法工匠訓練營:MATLAB繪圖,小試牛刀

同學們是不是得到這樣的圖形呢?

算法工匠訓練營:MATLAB繪圖,小試牛刀

算法工匠訓練營:MATLAB繪圖,小試牛刀

算法工匠訓練營:MATLAB繪圖,小試牛刀

算法工匠訓練營:MATLAB繪圖,小試牛刀

再給出一個例子。在[0 , 2pi]區間,繪製一條曲線。什麼曲線呢?

程序如下:在命令行窗口中輸入以下命令

>> x=0:pi/50:2*pi;>>
y=2*exp(-0.5*x).*sin(2*pi*x);>> plot(x,y

程序執行後,打開一個圖形窗口,在其中就有程序想要繪製的曲線。注意:指數函數和正弦函數之間要用點乘運算,因為二者是向量。很多同學經常不注意整個點,這個點有什麼用呢?請同學們去問百度。

一定要知道點乘和乘的差異!!!

作為剛接觸MATLAB任何人,還要掌握哪些知識呢?

算法工匠訓練營:MATLAB繪圖,小試牛刀

極座標是屬於高中就學習的數學知識,因此有必要在這裡講一下。

算法工匠訓練營:MATLAB繪圖,小試牛刀

算法工匠訓練營:MATLAB繪圖,小試牛刀

還需要簡單的講一些圖像處理的知識。同學們不要擔心,都是最基本的知識。
一點都不難!

算法工匠訓練營:MATLAB繪圖,小試牛刀

算法工匠訓練營:MATLAB繪圖,小試牛刀

算法工匠訓練營:MATLAB繪圖,小試牛刀

這些函數必須都要會使用,而且是熟練使用。

還要補充講解一個函數。semilogx函數

功能:x軸對數圖形。對於通信專業的學生而言,這個函數是肯定要用到的。請大家在命令行中寫一下下面的代碼,看看會出現什麼結果?

>>x = 0:.1:10; 

>>semilogx(x,cos(10.^x))

那bar函數又怎麼使用呢?hist函數又怎麼使用呢?stem函數又怎麼使用呢?好學的同學可以通過matlab的help來找到問題的答案!順便再提一句:點乘和乘的差別是什麼呢?這裡又遇見了點乘了哦!

休息一下!

需要同學們課後找資料來學習哦。哪個函數是用來畫二維條形直方圖呢?哪個函數是用來畫二維垂直條形圖呢?

stem函數怎麼用?以後大家在學習我的《數字信號處理》的時候,可要用到它哦。本課程講解了部分二維圖形的註釋命令,那麼還有哪些其他命令呢?

比如legend命令。該函數可以在圖形上添加文字。該命令對有多種圖形對象類型(線條圖、條形圖等)的窗口中顯示出一個文字框。

講完理論,就來實踐。還是那句老話,無實踐,無工科。帶病堅持講課,而且還在課後寫文章,真的很累,但我更要堅持,做一個好榜樣。即使只有幾個員能體會個中辛苦。

算法工匠訓練營:MATLAB繪圖,小試牛刀

算法工匠訓練營:MATLAB繪圖,小試牛刀

算法工匠訓練營:MATLAB繪圖,小試牛刀

函數說明:axis([xmin xmax ymin ymax])功能:設置當前圖形的座標範圍,分別為x軸的最小值和最大值,y軸的最小值和最大值。

算法工匠訓練營:MATLAB繪圖,小試牛刀

axis off:關閉所有的座標軸標籤、刻度、背景。axis on:打開所有的座標軸標籤、刻度、背景。

算法工匠訓練營:MATLAB繪圖,小試牛刀

算法工匠訓練營:MATLAB繪圖,小試牛刀

算法工匠訓練營:MATLAB繪圖,小試牛刀

算法工匠訓練營:MATLAB繪圖,小試牛刀

title函數功能:給當前軸加上標題。每個axes圖形對象可以有一個標題。標題定位於axes的上方正中央。title('string') 在當前座標軸上方正中央放置字符串string作為標題。

算法工匠訓練營:MATLAB繪圖,小試牛刀

預先看看電子類、通信類專業的同學們將要畫什麼圖呢?

算法工匠訓練營:MATLAB繪圖,小試牛刀

《通信原理》書本理論知識!

算法工匠訓練營:MATLAB繪圖,小試牛刀

數字信號處理

算法工匠訓練營:MATLAB繪圖,小試牛刀

誤碼率性能!!!

算法工匠訓練營:MATLAB繪圖,小試牛刀

功率譜圖

算法工匠訓練營:MATLAB繪圖,小試牛刀

星座圖!!!同學們以後會在《通信原理》中看到它。

算法工匠訓練營:MATLAB繪圖,小試牛刀

同學們也會在《通信原理》中看到它(上圖)。同學們做好學習的準備了嗎?以後這些圖可是都要會畫的哦!

以上講解了很多二維圖形註釋命令,大家一定要多多實踐!

算法工匠訓練營:MATLAB繪圖,小試牛刀

title('string') :在當前座標軸上方正中央放置字符串string作為標題。

text(x,y,'string'):在圖形中指定的位置(x,y)上顯示字符串string。xlabel('string')、ylabel(‘string’) :在當前軸對象中的x、y軸貼標籤。注意:若再次執行xlabel或ylabel命令,則新標籤會覆蓋舊標籤。grid on:給當前的座標軸增加分隔線。

grid off :在當前的座標軸中去掉分隔線。

算法工匠訓練營:MATLAB繪圖,小試牛刀

算法工匠訓練營:MATLAB繪圖,小試牛刀

算法工匠訓練營:MATLAB繪圖,小試牛刀

算法工匠訓練營:MATLAB繪圖,小試牛刀

算法工匠訓練營:MATLAB繪圖,小試牛刀

上述內容就是關於如何畫二維圖形的知識。那如何畫三維圖形呢?

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 專業領域畫圖。為同學們以後做好鋪墊!

算法工匠訓練營:MATLAB繪圖,小試牛刀

算法工匠訓練營:MATLAB繪圖,小試牛刀

scatter可用於描繪散點圖。

scatter(X,Y):X和Y是數據向量,以X中數據為橫座標,以Y中數據位縱座標描繪散點圖,點的形狀默認使用圈。

例子:

X = [1:100];

Y = X + rand(size(X));

scatter(X, Y)可用於通信仿真中表示信號的星座圖,當然也在數據分析的很多地方可以用!!!

算法工匠訓練營:MATLAB繪圖,小試牛刀

算法工匠訓練營:MATLAB繪圖,小試牛刀

bar:條形圖

bar3 : 3D條形圖

barh : 繪製水平條形圖

bar3h : 水平3D條形圖

histogram: 直方圖

histogram2:二元直方圖

polarhistogram:極座標中直方圖

area: 填充區二維繪圖pie : 餅圖pie3 : 三維餅圖請同學們在命令行窗口使用這些函數,一定要掌握!只有通過使用才能掌握!反覆強調操作的重要性,不知道有沒有效果?我也只能做到這樣了!此時,老師拋出一個問題?matlab能不能製作動圖呢?

算法工匠訓練營:MATLAB繪圖,小試牛刀

算法工匠訓練營: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-');

學過概率統計課程的人都應該能看懂!正態分佈的案例實在是太多了。請記住上述程序中涉及到的函數。這個程序就是為了讓同學們感受正態分佈和平均分佈的差異!有圖就非常容易理解!

最後,我只想把我的知識通過網絡傳播給真正想學的人了!




分享到:


相關文章: