第一篇:南郵自動控制原理實驗報告
實驗一、控制系統的時域分析 實驗二、線性系統的根軌跡研究 實驗三、系統的頻率響應和穩定性研究 實驗四、連續系統串聯校正
課程名稱:
自動控制原理
仿真實驗一:控制系統的時域分析 一、實驗目的:. 觀察控制系統的時域響應; 2 . 記錄單位階躍響應曲線; 3 . 掌握時間響應分析的一般方法; 4 . 初步了解控制系統的調節過程。
二、
實驗步驟:. 開機進入 Matlab 運行界面。. Matlab 指令窗:“Command Window”,運行相關指令。依次完成實驗內容。. 本次實驗的相關 Matlab 函數(參考材 教材 P74:
:
控制系統模型描述):
G=tf([num],[den])可輸入一傳遞函數。
step(G,t)在時間范圍 t 秒內,畫出單位階躍響應圖。
impulse(G,t)在時間范圍 t 秒內,畫出單位脈沖響應圖。
三、
實驗結果 1.觀察一階系統1()1sTs? ??數 的時域響應:取不同的時間常數 T,分別觀察該系統的脈沖響應、階躍響應、斜坡響應以及單位加速度響應。
脈沖響應:
T=1s
T=3S
階躍響應:
T=1s
T=7s
斜坡響應:
T=1s
T=3s
單位加速度 響應:
T=1s
T=7s
2、、二階系統的時域性能分析:觀測 二階系統22 2()2nn nss??? ?? ?? ?的單位 階躍響應。
((1))
令 1n? ?,0, 0.5, 2 ? 分別取,結合單位 階躍 響應圖,觀察阻尼比對階躍響應的影響。
阻尼比 =0 :
>> G=tf([1],[1,0,1])
Transfer function:
1
-------
s^2 + 1
>> step(G,18)
阻尼比 =0.5 :
>> G=tf([1],[1,1,1])
Transfer function:1
-----------
s^2 + s + 1
>> step(G,18)
阻尼比 =2 :
>> G=tf([1],[1,2,1])
Transfer function:1
-------------
s^2 + 2 s + 1
>> step(G,18)
結論:
當阻尼比取 0 0 時,其振蕩頻率為 1 1,即為無阻尼振蕩;當阻尼比大于 0 0 小于 1 1 時,二階系統
為欠阻尼二階系統,其單位階躍響應為衰減振蕩;當阻尼于 比大于 1 1 時,二階系統為過阻尼二階系統,其單位階躍響應為是非振蕩的。
(2 2)
令 0.5 ? ?,1, 2, 5n? 分別取
,結合單位階躍響應圖,觀察自然頻率對階躍響應的影響。
自然頻率 =1 :
>> G=tf([1],[1,1,1])
Transfer function:1
-----------
s^2 + s + 1
>> step(G,18)
自然頻率 =2 :
>> G=tf([4],[1,2,4])
Trans fer function:2
-------------
s^2 + 2 s + 2
>> step(G,18)
自然頻率 =5 :
>> G=tf([25],[1,5,25])
Transfer function:5
-------------
s^2 + 5 s + 5
>> step(G,18)
結論:
自然頻率越小,阻尼比越小,系統的階躍響應幅值越大。
((3))
調節自然頻率與阻尼比,要求:
Tr<0.56s Tp<1.29s Ts<5.46 超調不大于 于 5 %.記錄下滿足上述要求的自然頻率與阻尼比。
G=tf([45],[1,10,45])G = 45
---------------
s^2 + 10 s + 45 Continuous-time transfer function.>> step(G,6)
自然頻率=16.9538rad/sec 阻尼比=0.73578
實驗二線性系統的根軌跡研究
2.1 實驗目的((1))
考察閉環系統根軌跡的一般形成規律。
((2))
觀察和理解引進零極點對閉環根軌跡的影響。
((3))
觀察、理解根軌跡與系統時域響應之間的聯系。
((4))
初步掌握利用產生根軌跡的基本指令和方法。
2.2 實驗內容 根軌跡繪制的指令法、交互界面法;復平面極點分布和系統響應的關系。
已知單位負反饋系統的開環傳遞函數為2)^ 5 4()2()(2? ???s ss Ks G,實驗要求:
((1))
用 試用 MATLAB 的 的 rlocus 指令,繪制閉環系統根軌跡。(要求寫出指令,并繪出圖形。)
指令:
:G=tf([1 2],[1 8 26 40 25])
rlocus(G)
((2))
用 利用 MATLAB 的 的 rlocfind 指令,確定根軌跡的分離點、根軌跡與虛軸的交點。(要求寫出指令,并給出結果。)
指令:
:rlocfind(G)分離點:-2.0095 + 1.0186i
K=0.0017 與 虛軸的 交點:
:-0.0000 + 3.6025i
K=65.8411
((3))
用 利用 MATLAB 的 的 rlocfind 指令, 求出系統臨界穩定增益, 并用指令驗證系統的穩定性。
系統 臨 界穩定增益:
:65.8411 由于系統 無右半平面的開環極點,且 奈奎斯特曲線不 包圍((-1,j0)點。
系統穩定。
((4))
用 利用 SISOTOOL 交互界面,獲取和記錄根軌跡分離點、根軌跡與虛軸的交點處的關鍵參數,并與前面所得的結果進行校對驗證。(要)
求寫出記錄值,并給出說明。)
指令:
:SISOTOOL(G)
原值:
:K=0.00017
校正值:
:K=0.000169
原值:K=65.8411
校正值:K=71.8((5))
在 在 SISOTOOL 界面上,打開閉環的階躍響應界面,然后用鼠標使閉環極點(小紅方塊)從開環極點開始沿根軌跡不斷移動,在觀察三個閉環極點運動趨向的同時,注意觀察系統階躍響應的變化。根據觀察,(A)寫出響應中出現衰減振蕩分量時的 的 K 的取值范圍,(B)寫出該響應曲線呈現“欠阻尼”振蕩型時的 K。的取值范圍。
(A A)
0< K<71.8
(B B)
0 實驗三系統的頻率響應和穩定性研究 3.1 實驗目的(1)繪制并觀察典型開環系統的 Nyquist 圍線。 (2)繪制并觀察典型開環系統的 Bode 圖。 (3)運用 Nyquist 準則判斷閉環系統的穩定性。 (4)初步掌握相關 MATLAB 指令的使用方法。 3.2 實驗內容 一、(必做內容)使用 sisotool 交互界面研究典型開環系統的頻率特性曲線,并進行閉環系統穩定性討論。 以下各小題的要求: (A)根據所給開環傳遞函數的結構形式,繪制相應的幅相頻率曲線和對數幅相頻率曲線。 (B)顯示出曲線對應的開環傳遞函數具體表達式。 (C)假如 MATLAB 指令繪制的幅相頻率曲線不封閉,或用文字說明所缺部分曲線的走向,或在圖上加以添加所缺曲線;曲線與(-1,j0)點的幾何關系應足夠清晰,能支持判斷結論的導出。 (D)對該開環函數構成的單位負反饋系統的穩定性作出判斷,說明理由;假如閉環不穩定,則應指出不穩定極點的數目。 (1))1)(1(2 11? ??s T s TKG,其中 K , T 1, T 2 可取大于 0 的任意數。 取 K=1,T1=1,T2=2; 指令如下: G=tf([1],[2 3 1])Transfer function: 2 s^2 + 3 s + 1 margin(G)nyquist(G) P=0,R=0,Z=0 系統穩定 (2))1)(1)(1(3 2 12? ? ??s T s T s TKG,其中 K , T 1, T 2, T 3 可取大于 0 的任意 取 K=1,T1=1,T2=2,T3=3; 指令如下: G=tf([1],[6 11 6 1])Transfer function:------------------------6 s^3 + 11 s^2 + 6 s + 1 margin(G) nyquist(G) P=0,R=0,Z=0 系統穩定 (3))1(14??s T sKG,其中 K , T 1 可取大于 0 的任意數。 取 K=1,T1=1; 指令如下: G=tf([1],[1 1 0])Transfer function:-------s^2 + s margin(G) nyquist(G) P=0,R=0,Z=0 系統穩定(4))1)(1()1(2 16? ???s T s T ss T KGa,其中。 K 可取大于 0 的任意數。 K=1,Ta=1,T1=1,T2=2; 指令如下: G=tf([1 1],[2 3 1 0])Transfer function: s + 1-----------------2 s^3 + 3 s^2 + s margin(G)nyquist(G) P=0,R=0,Z=0 系統穩定(5))1(127??s T sKG,其中 K , T 1 可取大于 0 的任意數。 K=1,T1=1; 臨界穩定,指令如下: G=tf([1],[1 1 0 0])Transfer function: 1---------s^3 + s^2 margin(G) nyquist(G) (6)1128,)1()1(T Ts T ss T KGaa????,其中 K 可取大于 0 的任意數。 K=1,Ta=2,T1=1; 指令如下: G=tf([2 1],[1 1 0 0])Transfer function:s + 1---------s^3 + s^2 margin(G)nyquist(G) 臨界穩定(7)1129,)1()1(T Ts T ss T KGaa????,其中 K 可取大于 0 的任意數。 K=1,Ta=1,T1=2; 臨界穩定,指令如下: G=tf([1 1],[2 1 0 0])Transfer function: s + 1-----------2 s^3 + s^2 margin(G)nyquist(G) (8)210)1)(1(ss T s T KGb a? ??,其中 K , T a,T b 可取大于 0 的任意數。 時間常數 T 與 K 給出具體數值仿真 取 K=1,Ta=1,Tb=2 指令如下: G=tf([2,3,1],[1,0,0])G =s^2 + 3 s + 1 --------------- s^2 Continuous-time transfer function.>> margin(G)>> nyquist(G) 臨界穩定 實驗四 連續系統串聯校正 一、實驗目的 1.加深理解串聯校正裝置對系統動態性能的校正作用。 2.對給定系統進行串聯校正設計,并通過模擬實驗檢驗設計的正確性。 二、實驗儀器 1.EL-AT-III 型自動控制系統實驗箱一臺 2.計算機一臺 三、實驗內容 1.串聯超前校正(1)系統模擬電路圖如圖 5-1,圖中開關 S 斷開對應未校情況,接通對應超前校正。 圖 圖 5 5--1 1 超前校正電路圖 (2)系統結構圖如圖 5-2 圖 圖 5 5--2 2 超前校正系統結構圖 圖中 Gc1(s)=2 2(0.055s+1) Gc2(s)= 0.005s+1 2.串聯滯后校正(1) 模擬電路圖如圖 5-3,開關 s 斷開對應未校狀態,接通對應滯后校正。 圖 圖 5 5--3 滯后校正模擬電路圖 (2)系統結構圖示如圖 5-4 圖 圖 5 5--4 滯后系統結構圖 圖中 Gc1(s)=10 10(s+1) Gc2(s)= 11s+1 3.串聯超前—滯后校正(1) 模擬電路圖如圖 5-5,雙刀開關斷開對應未校狀態,接通對應超前—滯后校正。 圖 圖 5 5--5 超前 — 滯后校正模擬電路圖 (2) 系統結構圖示如圖 5-6。 圖 圖 5 5--6 6 超前 — 滯后校正系統結構圖 圖中 Gc1(s)=6 6(1.2s+1)(0.15s+1) Gc2(s)= (6s+1)(0.05s+1) 四、實驗步驟 1.啟動計算機,在桌面雙擊圖標 [自動控制實驗系統] 運行軟件。 2.測試計算機與實驗箱的通信是否正常,通信正常繼續。如通信不正常查找原因使通信正常后才可以繼續進行實驗。 超前校正: 3.連接被測量典型環節的模擬電路(圖 5-1)。電路的輸入 U1 接 A/D、D/A 卡的 DA1 輸出,電路的輸出 U2 接 A/D、D/A 卡的 AD1 輸入,將將純積分電容兩端連在模擬開關上。檢查無誤后接通電源。 4.開關 s 放在斷開位置。-5.在實驗項目的下拉列表中選擇實驗五[五、連續系統串聯校正]。鼠標單擊 按鈕,彈出實驗課題參數設置對話框。在參數設置對話框中設置相應的實驗參數后鼠標單擊確認等待屏幕的顯示區顯示實驗結果,并記錄超調量?p 和調節時間 ts。 6.開關 s 接通,重復步驟 5,將兩次所測的波形進行比較。并將測量結果記入下表中: 超前校正系統 指標 校正前 校正后 階躍響應曲線 見圖 1.1 見圖 1.2 δ% 51.1 11,8 Tp(秒) 166 118 Ts(秒) 1152 154 滯后校正: 7.連接被測量典型環節的模擬電路(圖 5-3)。電路的輸入 U1 接 A/D、D/A 卡的 DA1 輸出,電路的輸出 U2 接 A/D、D/A 卡的 AD1 輸入,將純積分電容兩端連在模擬開關上。檢查無誤后接通電源。 8.開關 s 放在斷開位置。 9.在實驗項目的下拉列表中選擇實驗五[五、連續系統串聯校正]。鼠標單擊 按鈕,彈出實驗課題參數設置對話框,在參數設置對話框中設置相應的實驗參數后鼠標單擊確認等待屏幕的顯示區顯示實驗結果,并記錄超調量?p 和調節時間 ts。 10.開關 s 接通,重復步驟 9,將兩次所測的波形進行比較。并將測量結果記入下表中: 滯后校正系統 指標 校正前 校正后 階躍響應曲線 見圖 2.1 見圖 2.2 δ% 67.2 11.53 Tp(秒) 213 439 Ts(秒) 2529 529 五、實驗報告 1.計算串聯校正裝置的傳遞函數 Gc(s)和校正網絡參數。 2.畫出校正后系統的對數坐標圖,并求出校正后系統的ω′c 及ν′。 3.比較校正前后系統的階躍響應曲線及性能指標,說明校正裝置的作用。 階躍響應曲線: 串聯超前校正前: 串聯超前校正后: 圖 1.1 圖 1.2 串聯滯后校正前: 串聯滯后校正后: 圖 2.1 圖 2.2 串聯超前校正前: G(s)= Wc=16.7rad/s,V=17 度 串聯超前校正后: G(s)= Wc=25rad/s,V=65 度 串聯滯后校正前: G(s)= Wc=17.7rad/s V=-14 度 串聯滯后校正后: G(s)= Wc=6.83rad/s V=31 度 由以上實驗結果,得到校正裝置作用:超前校正的是利用超前校正網絡的相位超前特性來增大系統的相位裕量,以達到改善系統瞬態響應的目的。為此,要求校正網絡最大的相位超前角出現在系統的截止頻率(剪切頻率)處。由于 RC 組成的超前網絡具有衰減特性,因此,應采用帶放大器的無源網絡電路,或采用運算放大器組成的有源網絡。 滯后校正裝置即利用校正裝置的超前部分來增大系統的相位裕度,以改善其動態性能;利用它的滯后部分來改善系統的靜態性能,兩者分工明確,相輔相成。 北京交通大學 自動控制原理研究性學習報告 ——基于MATLAB軟件的系統建模分析與校正 譚堃15221309 田斌15221310 努爾夏提15221305 張雪程13222028 摘要 本文利用MATLAB軟件來實現對自動控制系統建模、分析與設計、仿真的方法。它能夠直觀、快速地分析系統的動態性能、和穩態性能。并且能夠靈活的改變系統的結構和參數通過快速、直觀的仿真達到系統的優化設計。 關鍵詞:MATLAB,自動控制,系統仿真 1.主要任務 單位負反饋隨動系統固有部分的傳遞函數為 G(s)=4K/s(s+2) 1、畫出未校正系統的Bode圖,分析系統是否穩定。 2、畫出未校正系統的根軌跡圖,分析閉環系統是否穩定。 3、設計系統的串聯校正裝置,使系統達到下列指標:(1)靜態速度誤差系數Kv=20s-1;(2)相位裕量γ≥50°(3)幅值裕量Kg≥10dB。 4、給出校正裝置的傳遞函數。 5、分別畫出校正前,校正后和校正裝置的幅頻特性圖。計算校正后系統的穿越頻率ωc、相位裕量γ。 6、分別畫出系統校正前、后的開環系統的奈奎斯特圖,并進行分析。 2.理論分析 (1)確定K值 Kv=limsWk =2k=20 所以K = 10(2)校正前系統的開環對數幅頻特性如圖實線所示。 由A(wc)=20/[wc√(1+(wc/2)^2]=1; 得wc≈6.32; γ(wc)=180?+?(wc)=90?-72.4?=17.6? 可見相位裕量并不滿足要求,為不影響低頻段特性和改善暫態響應性能,采用引前矯正。 (3)設計串聯微分校正裝置: 微分校正環節的傳遞函數為 Wc(s)=(Tds+1)/[(Tds/γd)+1);最大相位移為 ?max=arcsin[(rd-1)/(rd+1)] 根據系統相位裕量γ(wc)≥50?的要求,微分矯正環節最大相位移為 ?max≥50?-17.6?=32.4? 考慮Wc’≥Wc,原系統相角位移將更負些,故?max將更大些,取?max=40?,即有 Sin40?=(γd-1)/(γd+1)=0.64解得γd=4.6 設校正后的系統穿越頻率Wc’為矯正裝置兩交接頻率w1與w2的幾何中點。即 Wc’=√w1w2=w1√rd 若認為Wc’/w1>>1,Wc’/w2<<1,則得 A(wc’)=1≈20wc’/(wc^2/2)解得w1≈4.32;w2≈19.87;wc’≈9.26。所以校正裝置的傳遞函數為 Wc(s)=(s/4.32+1)/[(s/19.87)+1);(4)驗算校正后系統指標 Wk’(s)=20(s/4.32+1)/[s(s/2+1)(s/19.87+1)] 同理,代入數值得校正裝置的相位裕量為γ(wc’)=52.4? 另?(wj)=-180?,可得出系統穿越頻率wj→∞;所以一定滿足 GM=20lg[1/(wk’(jwj)]≥10dB(三)MATLAB仿真 (1)時域分析 1.校正前系統的暫態響應曲線如圖: -圖1 系統單位階躍相應 計算結果: pos(超調量)=60.46%、、tp(峰值時間)= 0.5s、tr(上升時間)=1.8s,ts(調節時間)=3.7s 由圖可知:校正前系統的的調節時間較長,超調量過大。 3.校正后系統的暫態響應曲線如圖 圖2系統單位階躍相應 計算結果: pos(超調量)=15.88%、、tp(峰值時間)= 0.3s、tr(上升時間)=0.2s,ts(調節時間)=0.6s 系統的暫態響應與校正前相比有較大改善。該系統依然穩定,而且反應更加快速,應采用。 (2)根軌跡 校正前系統的根軌跡如圖 校正后系統的根軌跡如圖: 校正前后根軌跡對比 (3)對數頻率特性 校正前系統的開環對數頻率特性如圖實線所示: 圖1 系統對數頻率特性曲線 相位裕量γ=17.6 穿越頻率=6.32rad/s微分校正環節的對數頻率特性如圖所示: 校正后系統的開環對數頻率特性如圖所示: 相位裕量γ=52.4穿越頻率=9.26rad/s 對比圖 (4)幅相頻率特性 校正前系統的開環幅相頻率特性如圖所示: 圖7 系統幅相頻率特性曲線 校正后系統的開環幅相頻率特性如圖所示: 對比圖 四、程序附錄(1)時域分析 clear t=0:0.1:5;s=[184 794.8];d=[1 21.87 233.7 794.8];sys=tf(s,d);y1=step(sys,t);plot(t,y1)maxy1=max(y1);yss1=y1(length(t));pos1=100*(maxy1-yss1)/yss1;for i=1:1:51 if(y1(i)==maxy1)n=i;break;end end tp1=(n-1)*0.1;for i=1:1:51 if(y1(i)<1.02&&y1(i)>0.98)m=i;break;end end tr1=(m-1)*0.1;for i=51:-1:1 if(y1(i)>1.02||y1(i)<0.98)a=i;break;end end ts1=a*0.1;pos=[pos1] tp=[tp1] tr=[tr1] ts=[ts1] clear t=0:0.1:10;s=[40];d=[1 2 40];sys=tf(s,d);y1=step(sys,t);plot(t,y1)maxy1=max(y1);yss1=y1(length(t));pos1=100*(maxy1-yss1)/yss1;for i=1:1:101 if(y1(i)==maxy1)n=i;break; end end tp1=(n-1)*0.1;for i=1:1:101 if(y1(i)<1.02&&y1(i)>0.98)m=i;break;end end tr1=(m-1)*0.1;for i=101:-1:1 if(y1(i)>1.02||y1(i)<0.98)a=i;break;end end ts1=a*0.1;pos=[pos1] tp=[tp1] tr=[tr1] ts=[ts1] (2)對數頻率特性 clear s1=[0.23 1];d1=[0.05 1];s2=[40];d2=[1 2 40];s3=[184 794.8];d3=[1 21.87 233.7 794.8];sys1=tf(s1,d1);sys2=tf(s2,d2);sys3=tf(s3,d3);figure(1)bode(sys1,sys2,sys3) (3)根軌跡 clear s1=[40];d1=[1 2 40];s2=[184 794.8];d2=[1 21.87 233.7 794.8];sys1=tf(s1,d1);sys2=tf(s2,d2);figure(1)rlocus(sys1,sys2) (4)幅相頻率特性 clear s1=[40];d1=[1 2 40];s2=[184 794.8];d2=[1 21.87 233.7 794.8];sys1=tf(s1,d1);sys2=tf(s2,d2);figure(1)nyquist(sys1,sys2) 總結 本次研究性學習的內容主要是建立自動控制系統并運用MATLAB軟件對設計的自動控制系統進行仿真,其中涉及了關于自動控制方面的很多知識,也有關于數學建模方面的知識以及MATLAB軟件的應用,此次研究性學習建立了衛星姿態的自動控制。 在此次設計過程中遇到了很多問題,也接觸到了很多以前不知道的知識,特別是之前很少接觸過MATLAB軟件,這讓本次設計一度陷入停滯階段。后來在圖書館和網絡上查閱了大量的相關書籍,并在同學的細心指導下安裝了MATLAB軟件并學習其使用方法,從而使問題一步步得到了解決,最終成功的完成了此次研究性學習。 《自動控制原理》課程實驗報告 姓名: 班級: 學號: 實驗時間: 實驗成績: 一、實驗目的: 1.熟練掌握step()函數和impulse()函數的使用方法,研究線性系統在單位階躍、單位脈沖及單位斜坡函數作用下的響應。 2.通過響應曲線觀測特征參量ζ和ωn對二階系統性能的影響。3.熟練掌握系統的穩定性的判斷方法。 二、實驗要求: 1.根據實驗步驟,寫出調試好的MATLAB語言程序,及對應的MATLAB運算結果。 2.記錄各種輸出波形,根據實驗結果分析參數變化對系統的影響。3.總結判斷閉環系統穩定的方法,說明增益K對系統穩定性的影響。 三、實驗步驟: 1.觀察函數step()函數和impulse()的調用格式,假設系統的傳遞函 s2?3s?7數模型為G(s)?4,可以用幾種方法繪制出系統的階s?4s3?6s2?4s?1躍響應曲線?試分別繪制。 2?n2.對典型二階系統G(s)?2 2s?2??ns??n1)分別繪制出ωn=2(rad/s),ζ分別取0,0.25,0.5,1.0和2.0時的單位階躍響應曲線,分析參數ζ對系統的影響。 2)繪制出當ζ=0.25,ωn分別取1,2,4,6時單位階躍響應曲線,分析參數ωn對系統的影響。 3.單位負反饋系統的開環模型為G(s)?K,試判2(s?2)(s?4)(s?6s?25)斷系統的穩定性,并求出使得閉環系統穩定的K值范圍 四、實驗結果與結論 時域分析法直接在時間域中對系統進行分析,可以提供系統時間響應的全部信息,具有直觀、準確的特點。為了研究控制系統的時域特性,經常采用瞬態響應(如階躍響應、脈沖響應和斜坡響應)。本次實驗從分析系統的性能指標出發,給出了在MATLAB環境下獲取系統時域響應和分析系統的動態性能和穩態性能的方法。 1.用MATLAB求系統的瞬態響應時,將傳遞函數的分子、分母多項式的系數分別以s的降冪排列寫為兩個數組num、den。由于控制系統分子的階次m一般小于其分母的階次n,所以num中的數組元素與分子多項式系數之間自右向左逐次對齊,不足部分用零補齊,缺項系數也用零補上。用MATLAB求控制系統的瞬態響應 1)階躍響應 ①求系統階躍響應的指令有: step(num,den,t)時間向量t的范圍可以由人工給定(例如t=0:0.1:10) 在MATLAB程序中,先定義num,den數組,并調用上述指令,即可生成單位階躍輸入信號下的階躍響應曲線圖。② 求階躍響應的另一種方法 應當指出,當初始條件為零時,G(s)的單位階躍響應與 G(s)的單s位階躍響應相同??紤]到求系統的單位脈沖響應,因為對于單位脈沖輸入量,R(s)=1所以 C(s)G(s)s2?3s?71 ?C(s)??4?32R(s)ss?4s?6s?4s?1s因此,可以將G(s)的單位階躍響應變換成G(s)的單位脈沖響應。s向MATLAB輸入下列num1和den1,給出階躍響應命令,可以得到系統的單位階躍響應曲線如圖1-1所示,輸入下列num2和den2,給出脈沖響應命令,可以得到如圖1-1所示一樣的單位脈沖響應曲線。t=[0:0.1:10];num1=[1,3,7];den1=[1,4,6,4,1];y=step(num,den,t);plot(t,y);grid;t=[0:0.1:10];num=[1,3,7];den=[1,4,6,4,1,0]; 圖1-1 單位階躍響應曲線 y=impulse(num,den,t);plot(t,y);grid; 2.特征參量?和?n對二階系統性能的影響 標準二階系統的閉環傳遞函數為: 2?nC(s)?2 2R(s)s?2??ns??n二階系統的單位階躍響應在不同的特征參量下有不同的響應曲線。1)?對二階系統性能的影響 設定無阻尼自然振蕩頻率?n?2(rad/s),考慮5種不同的?值:利用MATLAB對每一種?求取單位階躍響應?=0,0.25,0.5,1.0和2.0,曲線,分析參數?對系統的影響。 為便于觀測和比較,在一幅圖上繪出5條響應曲線(采用“hold”命令實現)。 num=[0 0 4];den1=[1 0 4];den2=[1 1 4];den3=[1 2 4];den4=[1 4 4];den5=[1 8 4];t=[0:0.1:5];step(num,den1,t);grid;hold;text(2,1.7,'Zeta=0');step(num,den2,t);text(1.6,1.5,'0.25');step(num,den3,t);text(1.6,1.1,'0.5');step(num,den4,t);text(1.6,0.8,'1.0');step(num,den5,t); 圖1-2 ζ不同時系統的響應曲線 text(1.6,0.5,'2.0');由此得到的響應曲線如圖1-2所示: 2)?n對二階系統性能的影響 同理,設定阻尼比??0.25時,當?n分別取1,2,4,6時,利用MATLAB求取單位階躍響應曲線,分析參數?n對系統的影響。num1=[0 0 1];num2=[0 0 4];num3=[0 0 16];num4=[0 0 36];den1=[1 0.5 1];den2=[1 1 4];den3=[1 2 16];den4=[1 3 36];t=[0:0.1:5];step(num1,den1,t);grid;hold;text(0.1,1.4,'wn=1');step(num2,den2,t); text(1,1.4,'wn=2');step(num3,den3,t);text(2,1.4,'wn=4');step(num4,den4,t);text(4,1.4,'wn=6'); 圖1-3 ?n不同時系統的響應曲線 由此得到的響應曲線如圖1-3所示: 3.系統穩定性判斷 利用代數穩定判據可確定系統個別參數變化對系統穩定性的影響,以及為使系統穩定,這些參數應取值的范圍。 K 根據單位負反饋系統的開環模型 G(s)?(s?2)(s?4)(s2?6s?25)可以求的閉環系統的特征方程式為: D(s)?s4?12s3?69s2?198s?200?K?0 則其勞斯陣列為: s4s3s211252.552.5?198?12?(200?K)52.5200?K69198200?K0200?K s1s0根據穩定條件: 52.5?198?12?(200?K)>0;200+K>0;因此0<K<666.25 通信與信息工程學院 2011/2012學年第一學期 實 驗 報 告 實驗課程名稱 數字圖像處理與圖像通信實驗 專 業 電子信息工程 學 生 學 號 B08020425 學 生 姓 名 席與曦 指 導 教 師 劉 瑜 指 導 單 位 圖像與廣播電視系 日 期: 2011 年9 月 6 日 ================================ 實驗名稱:圖像的銳化處理 一、實驗目的: 學習用銳化處理技術來加強圖像的目標邊界和圖像細節。對圖像進行梯度算子、Roberts算子、Sobel算子邊緣檢測處理和Laplace算子邊緣增強處理,是圖像的某些特征(如邊緣、輪廓等)得以進一步的增強及突出。 二、實驗內容: (1)編寫梯度算子和Roberts算子濾波函數。 (2)編寫Sobel算子濾波函數。 (3)編寫拉普拉斯邊緣增強濾波函數。 三、實驗方法及編程: 在實驗中,我們對于這三種算子的算法,都有其各自對應的模板,根據這個模板我們可以方便地編寫出程序的主體結構。指導書中也有對應的流程框圖可供參考,以下是程序的主體部分: function newbuf=RobFilter(oldbuf,M,N);% ************************************************************************ % 函數名稱: % RobFilter()% 說明: % ‘Robert梯度’濾波算法。% ************************************************************************ for i=1:M-1 for j=1:N-1 newbuf(i,j)=abs(oldbuf(i,j)-oldbuf(i+1,j+1))+abs(oldbuf(i+1,j)-oldbuf(i,j+1));end end %-----------function newbuf=SobFilter(oldbuf,M,N);% ************************************************************************ % 函數名稱: % SobFilter()% 說明: % ‘Sobel’濾波算法。% ************************************************************************ for i=2:M-1 for j=2:N-1 sx=oldbuf(i+1,j-1)+2*oldbuf(i+1,j)+oldbuf(i+1,j+1)-oldbuf(i-1,j-1)-2*oldbuf(i-1,j)-oldbuf(i-1,j+1);sy=oldbuf(i-1,j+1)+2*oldbuf(i,j+1)+oldbuf(i+1,j+1)-oldbuf(i-1,j-1)-2*oldbuf(i,j-1)-oldbuf(i+1,j-1);newbuf(i,j)=abs(sx)+abs(sy);end end %-----------function newbuf=LapFilter(oldbuf,M,N);% ************************************************************************ % 函數名稱: % LapFilter()% 說明: % ‘Laplace’濾波算法。% ************************************************************************ for i=2:M-1 for j=2:N-1 newbuf(i,j)=5*oldbuf(i,j)-oldbuf(i-1,j)-oldbuf(i+1,j)-oldbuf(i,j-1)-oldbuf(i,j+1);end end %----------- 四、實驗結果及分析:(原圖像和處理后的圖像比較及分析) 從上面的圖像可以看出: Robert梯度算子得出的圖像能夠得出原圖的大部分邊緣細節,灰度差別越大的地方結果越大,所以顯示時較為明亮。一些邊緣由于灰度差值較小,在得出的結果圖像中不容易分辨出來。 Sobel算子得出的圖像則顯得明亮而粗壯。所有的邊緣細節均被顯示出來,特別是人物面部。由于其結果粗壯,面部細節顯得非常密集。 Laplace算子則用以將圖像的邊緣、細節增強,通過結果結果可以看出,圖像的細節明顯比原來突出。但是這個方法存在的弊端是,在背景區域,結果圖像中有一些噪聲的圖樣也被加強了。 日 期: 2011 年9 月 13 日 ================================ 實驗名稱:圖像信號的數字化 一、實驗目的: 通過本實驗了解圖像的數字化參數取樣頻率(像素個數)、量化級數與圖像質量的關系。 二、實驗內容: (1)編寫并調試圖像數字化程序。要求參數k,N可調。其中,k為亞抽樣比例,N為量化比特數。 (2)可選任意圖像進行處理,在顯示器上觀察各種數字化參數組合下的圖像效果。 三、實驗方法及編程: 在數字系統中進行處理、傳輸和存儲圖像,必須把代表圖像的連續信號轉變為離散信號,這種變換過程稱為圖像信號的數字化。它包括采樣和量化兩種處理。本實驗對數字圖像進行再采樣和再量化,以考察人眼對數字圖像的分辨率和灰度級的敏感程度。 function newbuf=Sample_Quant(oldbuf,k,n)% % ************************************************************************ % 函數名稱: % Sample_Quant()圖像數字化算法函數 % 參數: % oldbuf 原圖像數組 % M N 原圖像尺寸 % k 取樣間隔 % n 量化比特值 % newbuf 存放處理后的圖像二維數組 % 說明: % 在水平和垂直方向作1:k取樣,得到新的取樣圖像,再根據量化公式對每個像 % 素分別取n 比特量化,為了觀察顯示的需要,再按k:1的比例將再取樣的圖像還原 % 為原圖像尺寸。最后放入新的圖像數組中并返回該數組。% ************************************************************************ [M,N]=size(oldbuf);oldbuf=double(oldbuf);x=1;y=1;while x 四、實驗結果及分析:(原圖像和處理后的圖像比較及分析) 由實驗結果可以看出,亞抽樣比例k和量化比特數N對都會使圖像變得模糊,但兩者的影響是不相同的。 亞抽樣比例k的大小決定了數字化圖像的方塊效應是否明顯。當k較大時,數字化圖像會有較為明顯的塊狀出現,對于圖像的視覺效果影響很大。 量化比特數N則決定了圖像的灰度級,量化比特數為N時,圖像有個2N灰度級。所以當N較小時,圖像會出現不規則的區域有著相同的灰度值的情況,但是這些區域在原圖像中卻有著差別較小的不同的灰度值。特別是在原圖的灰度漸變的區域,這種效應會變得尤為明顯。 日 期: 2011 年9 月 20 日 ================================ 實驗名稱:圖像灰度級修正 一、實驗目的: 掌握常用的圖像灰度級修正方法,即圖像的灰度變換法和直方圖均衡化法,加深對灰度直方圖的理解。 二、實驗內容: (1)編程實現圖像的灰度變換。改變圖像輸入、輸出映射的灰度參數范圍(拉伸和反比),觀看圖像處理結果。 (2)修改可選參數gamma值,使其大于1,等于1和小于1,觀看圖像處理結果。(3)對圖像直方圖均衡化處理,顯示均衡前后的直方圖和圖像。實驗圖像選用hor256或vax256。 三、實驗方法及編程: 圖像增強常用到三種基本方式,分別為1線性2對數3冪次。線性變換的公式可表示為g?x,y??冪次變換的公式:s?cxr function newbuf=GrayTransf(oldbuf)% ************************************************************************ % 函數名稱: % GrayTransf()灰度變換函數 % 參數: % oldbuf 原圖像數組 % newbuf 存放處理后的圖像二維數組 % 說明: % 可以任意指定輸入圖像需要映射的灰度范圍和指定輸出圖像所在的灰度范圍。還可接 % 受一個可選的參數來指定修正因素r。% ************************************************************************ [M,N]=size(oldbuf);newbuf=imadjust(oldbuf,stretchlim(oldbuf),[]);newbuf=uint8(newbuf);%-----------function newbuf=GrayGamma(oldbuf,r)% ************************************************************************ % 函數名稱: % GrayGamma()gamma校正函數 % 參數: % r gamma校正值 % oldbuf 原圖像數組 % newbuf 存放處理后的圖像二維數組 % 說明: % 圖像獲取、打印和顯示的各種裝置是根據冪次規律進行響應的。習慣上,冪次等式中 % 的指數是指伽馬值.用于修正冪次響應現象的過程稱作伽馬校正。% imadjust()函數還可接受一個可選的參數來指定修正因素r(也稱gamma校正值)。% 根據r值的不同,輸入圖像與輸出圖像間的映射可能是非線性的。% ************************************************************************ newbuf=imadjust(oldbuf,stretchlim(oldbuf),[],r);newbuf=uint8(newbuf);%-----------function newbuf=GrayEqualize(oldbuf)% ************************************************************************ % 函數名稱: % GrayEqualize()直方圖均衡算法函數 d?cb?a[f?x,y??a]?c % 參數: % oldbuf 原圖像數組 % newbuf 存放處理后的圖像二維數組 % 說明: % 對oldbuf的原圖像數據進行灰度統計,然后計算每一個K所對應的S值,求出對照 % 表S(k),最后以原圖像灰度值K作為地址,對每一象素進行變換,得出均衡化以后的 % 新圖像存放在newbuf中。% ************************************************************************ [M,N]=size(oldbuf);NN=M*N;sk=0;[COUNTS,X]=imhist(oldbuf,256);for i=1:M for j=1:N kk=double(oldbuf(i,j));for k=1:kk sk=sk+COUNTS(k);end sk=sk/NN*256;newbuf(i,j)=sk;end end newbuf=uint8(newbuf);%----------- 四、實驗結果及分析:(原圖像和處理后的圖像比較及分析) 由實驗結果可以看出,所選的測試圖像的灰度值主要分布于低值的部分。 經過無gamma值的灰度值變換后,直觀地看出:分布于低值部分的直方圖分散開來,分布于幾乎所有的灰度值,但是對映于各個灰度值的像素個數分布仍是不均勻的。變換后的圖像比原圖顯得明亮、清晰。 經過第二第三幅圖像可以進一步看出:gamma值的灰度值變換則明顯受gamma值的影響:當gamma值大于1時,直方圖有向灰度為0的一端壓縮的趨勢,gamma越大,這種趨勢越明顯。此時的圖像比原圖清晰,但是原本偏暗的部分更加偏黑,原本較亮的部分則變得發白,總體而言,圖像偏暗的部分較多。當gamma值小于1時,其趨勢與gamma值大于1相反,故整個圖像顯得發白。 直方圖均衡后的圖像也顯得較為清晰、均勻。它能盡量將直方圖變得均衡,分布也更為均勻,各個灰度值所對應的像素個數盡可能相同。 日 期: 2011 年9 月 27 日 ================================ 實驗名稱:圖像的平滑濾波 一、實驗目的: 圖像平滑主要目的是減少噪聲對圖像的影響。噪聲有很多種類,不同的噪聲有不同的抑制措施。本實驗要求用平滑線性濾波和中值濾波兩種最典型、最常用的處理算法進行程序設計,學習如何對已被污染的圖像進行“凈化”。通過平滑處理,對結果圖像加以比較,得出自己的實驗結論。 二、實驗內容: (1)編寫并調試窗口尺寸為m×n的平滑濾波函數。 (2)編寫并調試窗口尺寸為m×n的中值濾波函數。 三、實驗方法及編程: 在M*N的圖像f上,用m*n大小的濾波器模板進行線性濾波由這個公式給出: g?x,y??ab??m??an??bf(x?m,y?n)h(m,n) function newbuf=AverageFilter(oldbuf,M,N,m)% ************************************************************************ % 函數名稱: % AverageFilter()均值濾波算法函數 % 參數: % oldbuf 噪聲圖像數組 % M N 噪聲圖像尺寸 % m 矩形平滑窗口尺寸 % newbuf 存放處理后的圖像二維數組 % 說明: % 用m*m的濾波器模板對oldbuf數組的噪聲圖像進行線性濾波,即用窗口內m*m個像 % 素的平均灰度值來代替圖像每個像素點的值,最后結果存放在newbuf數組中。% ************************************************************************ oldbuf=double(oldbuf);newbuf=zeros(M,N);for i=(m+1)/2:M-(m+1)/2 for j=(m+1)/2:N-(m+1)/2 for x=-(m-1)/2:(m-1)/2;for y=-(m-1)/2:(m-1)/2;newbuf(i,j)=newbuf(i,j)+oldbuf(i+x,j+y)/(m*m);end end end end %----------- function newbuf=MedianFilter(oldbuf,M,N,m)% ************************************************************************ % 函數名稱: % MedianFilter()中值濾波算法函數 % 參數: % oldbuf 原圖像數組 % M N 原圖像尺度 % m 滑動窗口尺寸 % newbuf 存放處理后的圖像數組 % 說明: % 把oldbuf數組m*m窗口內的象素值賦給winbuf,然后調用排隊函數SeekMid(),% 把該函數在窗口中找到的中值放到newbuf數組中。% ************************************************************************ for i=(m+1)/2:M-(m+1)/2 for j=(m+1)/2:N-(m+1)/2 k=1;for x=-(m-1)/2:(m-1)/2;for y=-(m-1)/2:(m-1)/2;winbuf(k)=oldbuf(i+x,j+y);k=k+1;end end newbuf(i,j)=SeekMid(winbuf,m);end end %-----------function mid=SeekMid(winbuf,m)% ************************************************************************ % 函數名稱: % SeekMid()排序函數 % 參數: % winbuf 滑動窗口 % m 滑動窗口尺寸 % mid 存放排序后中間位置的像素值 % 說明: % 將winbuf窗口中的m*m個像素進行排序,將排序隊列中間的像素值賦給變量mid。% ************************************************************************ winsize=length(winbuf);%取窗口尺寸 for i=1:winsize %編寫排序函數 for j=1:winsize-i if(winbuf(i)>winbuf(j+i))t=winbuf(i);winbuf(i)=winbuf(j+i);winbuf(j+i)=t;end end end mid=winbuf(ceil(m*m/2));% ceil函數朝正無窮大方向取整,總能取到中間位置 %----------- 四、實驗結果及分析:(原圖像和處理后的圖像比較及分析) 由實驗結果可以看出,對于處理椒鹽噪聲,中值濾波比均值濾波要好很多。當窗口大小為3×3時,均值濾波能一定程度上降低噪聲的污染,但是,仍能看出在噪聲點,并沒有完全消除噪聲,只是將噪聲與周圍的圖像進行了平均,噪聲點只是顯得模糊了,并沒有完全消除。相比之下,中值濾波則效果明顯,同為3×3的窗口,幾乎能把所有的噪聲點消除,效果非常顯著。當窗口大小變大時,也能將大部分噪聲點消除,但是會帶來嚴重的模糊。 同時我們可以看出,兩種方法都使得處理后的圖像比原圖要模糊,并且隨著窗口的變大,圖像變得越來越模糊。通過兩種方法之間的比較則可以看出,同等窗口下中值濾波帶來的模糊比均值濾波要輕一些。 日 期: 2011 年10 月 11 日 ================================ 實驗名稱:圖像方塊編碼(BTC) 一、實驗目的: 通過編程實驗,掌握方塊編碼的基本方法及壓縮性能。 二、實驗內容: 編程實現子塊為n×n的方塊編碼基本方法,分別取n=2,4,8方塊尺寸進行方塊編碼實驗,計算編碼后的均方誤差和壓縮比。 三、實驗方法及編程: 本實驗采用的方案為: (1)xT?x?x?mi?11mi (2)a0?xl?1m?q1qmm?q?xi?1ii xi?xT (3)a1?xh??xi?m?q?1 xi?xT function outbuf=BtcBlock(inbuf,n)% ************************************************************************ % 函數名稱: % btcblock()方塊編碼算法函數 % 參數: % inbuf 方塊數組 % n 方塊尺寸 % outbuf 存放處理后的方塊圖像 % 說明: % 把原圖像分成n*n子塊,對每個方塊的圖像數據分別計算xt,a0,a1值,再用分辨率 % 分量(a0,a1)替代方塊原來的數據 最后放入方塊圖像數組中并返回該數組。% ************************************************************************ temp=0;temp0=0;temp1=0;q=0;m=n*n;inbuf=double(inbuf);for i=1:n for j=1:n temp=temp+inbuf(i,j);end end xt=temp/m;for i=1:n for j=1:n if(inbuf(i,j)>=xt)q=q+1;temp1=temp1+inbuf(i,j);else temp0=temp0+inbuf(i,j);end end end if q~=m a0=round(temp0/(m-q));end if q~=0 a1=round(temp1/q);end for i=1:n for j=1:n if(inbuf(i,j) 四、實驗結果及分析:(原圖像和處理后的圖像比較及分析) 由實驗結果可以看出,窗口大小較小(如2×2)時,編碼圖像與原圖像比幾乎相同,很難察覺出誤差。而當窗口較大(如8×8)時,在一些細節較多的部位就能看出有較明顯的方塊效應。同時,窗口越大,其對碼率的壓縮效果也越明顯。綜合考慮,當窗口大于8×8時,方塊效應會導致觀察上有一定的障礙,故選擇2×2或4×4較為合適。 日 期: 2011 年10 月 18 日 ================================ 實驗名稱:圖像線性預測編碼(DPCM) 一、實驗目的: 通過編程設計,掌握幀內DPCM的編解碼方法(預測、量化)及其壓縮性能。 二、實驗內容: (1)編制一維前值預測DPCM編解碼程序,預測系數取(1,0,0,0)。 (2)編制二維前值預測DPCM編解碼程序,預測系數取(1/2,1/4,0,1/4)。(3)重建圖像f′(i,j)與原圖像f(i,j)的誤差圖像,用絕對值表示如下。 di,j?nf?(i,j)?f(i,j) 式中的n為放大因子,以便觀察誤差的分布情況。 本實驗采用15個量化分層的主觀量化器,其量化電平分別取(0,±5,±7,±10,±17,±28,±39,±52,±67)。 實驗圖像為cla0或cla1。 三、實驗方法及編程: 圖像的線性預測編碼所運用的基本原理是基于二維圖像中相鄰圖像間存在著很強的相關性。 ?0表示預測值,則x0的預測值為: 假定當前待編碼的像素為x0,ai表示預測系數,并用x?0?a1x1?a2x2?a3x3?a4x4 x預測誤差為: ?0 e?x0?xx0的恢復值為: ??x?0?eq(eq為e的量化值)x0function newbuf=Dpcm_code(oldbuf,M,N,dim);% ************************************************************************ % 函數名稱: % Dpcm_Code()“線性預測編解碼器”算法函數 % 參數: % oldbuf 原圖像數組 % M,N 原圖像尺度 % dim 選擇預測編碼維數 % newbuf 存放處理后的圖像二維數組 % 說明: % 根據線性預測編解碼算法調用各子模塊,對原圖像進行1D/2D線性預測編碼和解碼,% 解碼后的恢復圖像放在newbuf數組中。% ************************************************************************ global newbuf;%定義全局變量 for i=1:M for j=1:N pre_val=Predict_Value(i,j,N,dim);err=oldbuf(i,j)-pre_val;quan_err=Quant_Value(err);res_val=Restor_Value(quan_err,pre_val);newbuf(i,j)=Clip_Value(res_val);end end %-----------function newbuf=Error_Code(M,N,dim);% ************************************************************************ % 函數名稱: % Error_Code()“傳輸誤碼解碼器”算法函數 % 參數: % M,N 原圖像尺度 % dim 選擇預測編碼維數 % newbuf 存放處理后的圖像二維數組 % 說明: % 模擬信道傳輸過程中產生的誤碼,觀察傳輸誤碼經解碼后對恢復圖像的影響,解碼 % 后的恢復圖像放在newbuf數組中。% ************************************************************************ global newbuf;wrong=zeros(M,N);wrong(100,100)=120;for i=1:M for j=1:N pre_val=Predict_Value(i,j,N,dim);err=wrong(i,j);quan_err=Quant_Value(err);res_val=Restor_Value(quan_err,pre_val);newbuf(i,j)=Clip_Value(res_val);end end %-----------function Pvalue=Predict_Value(row,col,N,dim)% ************************************************************************ % {This function is used to give predicted value as linear predictor.% The prediction formula is as follows: % 1_D DPCM: ^x[i,j]=128 if j=1 % x'[i,j-1] if j>1 % 2_D DPCM: ^x[i,j]=128 if i=1,j=1 % x'[ i,j-1] if i=1,j>1 % x'[i-1,j ] if i>1,j=1 or N % 1/2x'[ i,j-1] if i>1,j>1 % 1/8x'[i-1,j-1](Pirsch's predictor)% 1/4x'[i-1,j ] % 1/8x'[i-1,j+1] % Dim : Dimension of prediction % Row : vertical coordinate of current pixel to be predicted % COL : horizontal coordinate of current pixel to be predicted} % ************************************************************************ global newbuf;switch dim case 1 if col==1 Pvalue=128;else Pvalue=newbuf(row,col-1);end case 2 if(row==1&&col==1)Pvalue=128;end if(row==1&&col>1)Pvalue=newbuf(row,col-1);end if(row>1&&col==1)||(row>1&&col==N)Pvalue=newbuf(row-1,col);end if(row>1&&col>1&&col 四、實驗結果及分析:(原圖像和處理后的圖像比較及分析) 由實驗結果可以看出,一維和二維預測編碼圖像與原圖均十分接近,兩者的差別難以察覺。而從誤碼圖像中可以看出,當在某一位置出現誤碼后,一維預測編碼會將誤差延續至整個行,顯得很明顯。二維預測編碼則與之不同,其將誤碼延續至其后的斜后方,并且隨著距離的增加迅速消失,總體而言,影響要小一些。兩相比較,可以體現出二維預測編碼的一些優勢。 日 期: 2011 年10 月 25 日 ================================ 實驗名稱:JPEG壓縮編碼 一、實驗目的: (1)掌握n×n子塊的DCT圖像變換及頻譜特點。(2)熟悉JPEG基本系統的圖像編解碼方法。 二、實驗內容: (1)編程實現n×n子塊DCT變換的圖像頻譜顯示,8×8子塊DCT變換系數按“Z”(Zig-Zag)掃描圖像重建,計算圖像的均方根誤差RMSE,顯示誤差圖像和誤差直方圖。 (2)編程實現JPEG壓縮編碼,進行8×8子塊的DCT圖像變換,JPEG量化矩陣的量化與反量化,8×8子塊DCT的圖像重建,計算圖像的均方根誤差RMSE,顯示誤差圖像和誤差直方圖。 三、實驗方法及編程: DCT頻譜系數在方塊中的分布有如下規律:直流系數位于左上角第一個的位置,且值較大。余下的為交流系數,越向右下角系數的值一般越小,屬于高頻分量。在細節較多的區域,DCT頻譜系數整體顯得較亮,而在背景區,除了直流系數和少數低頻系數,其余都為0或很小的值,故而顯示為黑色。對DCT系數做反DCT變換則可復原出原圖。若反變換前對DCT系數進行取舍則可以降低碼率,但是,會對圖像質量帶來一定的影響。JPEG壓縮編碼的算法主要計算步驟如下: (1)通過前向離散余弦變換減少圖像數據相關性。 (2)利用人眼的視覺特性對DCT系數進行量化。 (3)使用差分脈沖編碼調制對直流系數進行編碼。 (4)對交流系數進行“Z”形掃描,使用行程長度編碼對交流系數進行編碼。 (5)熵編碼器對上述描述符進行熵編碼,可以采用霍夫曼編碼,也可以采用算數編碼。 function newbuf=DctBlock(oldbuf,Block)% ************************************************************************ % 函數名稱: % DctBlock()DCT n*n塊頻譜函數 % % 參數: % oldbuf 原圖像數組 % Block DCT n*n當前塊選擇值 % newbuf 存放處理后的圖像二維數組 % % 說明: % 根據Block塊的當前選擇值,計算原圖像的n*n塊DCT變換,并轉換為可視頻譜圖,% 有利于頻譜的觀察。% ************************************************************************ oldbuf=double(oldbuf);H=dctmtx(Block);newbuf=blkproc(oldbuf,[Block Block],'P1*x*P2',H,H');newbuf=log(abs(newbuf));subplot(2,2,2);imshow(newbuf,[]);%-----------function newbuf=DctCode(oldbuf,DCTch)% ************************************************************************ % 函數名稱: % DctCode()DCT 8*8 塊系數“Z”字掃描圖像壓縮函數 % % 參數: % oldbuf 原圖像數組 % DCTch DCT 8*8 塊“Z”掃描當前系數選擇值 % newbuf 存放處理后的圖像二維數組 % % 說明: % 計算圖像的8×8子塊DCT變換,按“Z”字掃描順序,根據DCTch參數,只保留64個 % DCT系數中的前DCTch個系數,對修改后的DCT系數用逆DCT變換重建圖像,得到DCT % 變換的壓縮圖像。計算重建圖像的均方根誤差RMSE ;顯示誤差圖像和誤差直方圖。% ************************************************************************ zigzag=[1 2 6 7 15 16 28 29 %設置Z掃描順序 3 5 8 14 17 27 30 43 4 9 13 18 26 31 42 44 10 12 19 25 32 41 45 54 11 20 24 33 40 46 53 55 21 23 34 39 47 52 56 61 22 35 38 48 51 57 60 62 36 37 49 50 58 59 63 64];tbuf=ones(8);%定義8*8全1數組 maskbuf=tbuf.* zigzag<=DCTch;%根據當前DCTch值得到“Z”字掃描的二值掩模 oldbuf=double(oldbuf);H=dctmtx(8);dctno=blkproc(oldbuf,[8 8],'P1*x*P2',H,H');newbuf=blkproc(dctno,[8 8],'P1*(x.*P2)*P3',H',maskbuf,H);subplot(2,2,2);imshow(newbuf,[]);eimag(oldbuf,newbuf);%-----------function newbuf=JpegCode(oldbuf)% ************************************************************************ % 函數名稱: % JpegCode()JPEG近似基準編碼 % % 參數: % oldbuf 原圖像數組 % newbuf 存放處理后的圖像二維數組 % % 說明: % 實現JPEG壓縮編碼,進行 8×8 子塊DCT變換、JPEG量化矩陣的量化與反量化,8×8 %子塊DCT的圖像重建;計算重建圖像的均方根誤差RMSE;顯示誤差圖像和誤差直方圖。% ************************************************************************ z = [16 11 10 16 24 40 51 61 12 12 14 19 26 58 60 55 14 13 16 24 40 57 69 56 14 17 22 29 51 87 80 62 18 22 37 56 68 109 103 77 24 35 55 64 81 104 113 92 49 64 78 87 103 121 120 101 72 92 95 98 112 100 103 99];%標準亮度量化表 oldbuf=double(oldbuf);%原圖像數據轉換為雙精度 H=dctmtx(8);dctno=blkproc(oldbuf,[8 8],'P1*x*P2',H,H');jpegno=blkproc(dctno,[8 8],'round(x./P1)',z);jpegno1=blkproc(jpegno,[8 8],'x.*P1',z);newbuf=blkproc(jpegno1,[8 8],'P1*x*P2',H',H);subplot(2,2,2);imshow(newbuf,[]);eimag(oldbuf,newbuf);%-----------function eimag(oldbuf,newbuf)% ************************************************************************ % 函數名稱: % eimag()% 說明: % 計算重建圖像的均方根誤差RMSE;顯示誤差圖像和誤差直方圖。% ************************************************************************ e=double(oldbuf)-newbuf;%計算原圖像與壓縮圖像之差 [m,n]=size(e);RMSE=sqrt(sum(e(:).^2)/(m*n));%計算均方根誤差 if RMSE %如果有誤差,即rmse不為0 emax=max(abs(e(:)));%找圖像差最大值 [h,x]=hist(e(:),emax);%用于生成直方圖數據 if length(h)>= 1 %如果有數據 s=max(h(:));subplot(2,2,3),bar(x,h/s,'k');%顯示圖像差值直方圖 RMSE=num2str(RMSE);%把數值轉換為字符串 strRMSE=strcat('圖像差值直方圖 均方根誤差RMSE= ',RMSE);%把多個串連接成長串 title(strRMSE);e=mat2gray(e,[-emax,emax]);%顯示差值圖像 subplot(2,2,4),imshow(e);title('原圖像與壓縮圖像的差值圖像');%顯示結果圖像標題 end end %----------- 四、實驗結果及分析:(原圖像和處理后的圖像比較及分析)由實驗結果可以看出: 當保留的系數很少時,恢復的圖像有著嚴重的方塊效應,對觀看造成很大的阻礙。而當保留的系數較多時,恢復的圖像和原圖十分接近,對于觀看基本沒有影響。 JPEG是常用的靜態圖片編碼方法,實驗時進行了一定的簡化。從結果看,其編碼的結果較好,對觀看影響很小。同時,JPEG對于碼率的壓縮也是效果很好的。 實驗課程小結和思考(包括感想、體會與啟示) 本學期所學的圖像處理和圖像通信編碼方面的實驗所用到的理論知識在以前的課程中都學習過,但是當運用到實際實驗中的時候卻顯得比較生疏。這次實驗課程讓我對于理論知識和Matlab軟件的應用有了更多的了解,尤其是一些編程函數與之前學習的C或是C++有很大區別,這花費了我一定的時間去學習Matlab的使用。 實驗中的內容都是較為基礎和簡單的,與實際應用還有較大的距離。在今后的工作與學習過程中肯定會遇到復雜的多的難題。但是通過這次實驗課程,我從中看到了這些知識的應用方向與方法,對我有很大的幫助。 實驗報告 課程名稱 自動控制原理 _ 學生學院 自動化學院 _ 專業班級___物聯網工程(4)班___ 學 號____________ 學生姓名_________________ 組 員_________________ 指導教師_______李順祥 ________ 2018 年 1 月 一.實驗目的 1、用MATLAB的命令 2、掌握MATLAB有關傳遞函數求取其零、極點計算的函數 3、掌握用MATLAB求取系統的數學模型 二.實驗軟件環境 1、計算機 2、MATLAB軟件 三.實驗內容 1、特征多項式的建立與特征根的求取 在命令窗口依次運行下面命令,并記錄各命令運行后果 >>p=[1,2,0,4]; 構建特征多項式p(s)=s^3+3s^2+4的矩陣 >>r=roots(p) 求特征方程p(s)= p(s)=s^3+3s^2+4=0的特征根 >>p=poly(r) 從特征根構建特征多項式的矩陣 2、求單位反饋系統的傳遞函數 在命令窗口依次運行下面命令,并記錄各命令運行后果 >>numg=[1];deng=[500,0,0]; 構建傳遞函數G(s)=1/500s^2的特征多項式 >>numc=[1,1];denc=[1,2]; 構建傳遞函數Gc(s)=(s+1)/(s+2)的特征多項式 >>[num1,den1]=series(numg,deng,numc,denc); 求G(s)Gc(s)>>[num,den]=cloop(num1,den1,-1)求開環傳遞函數G(s)Gc(s)的閉環傳遞函數 >>printsys(um,den) 輸出傳遞函數 3、傳遞函數零、極點的求取 在命令窗口依次運行下面命令,并記錄各命令運行后果 >>num1=[6,0,1];den1=[1,3,3,1]; 構建傳遞函數G(s)=(6s^2+1)/(s^3+3s^2+3s+1)的特征多項式 >>z=roots(num1); 求G(s)的零點 >>p=roots(den1); 求G(s)的極點 >>n1=[1,1];n2=[1,2];d1=[1,2*i];d3=[1,3];>>num2=conv(n1,n2) 求多項式(s+1)(s+2)>>den2=conv(d1,conv(d2,d3)) 求多項式(s-2j)(s+2j)(s+3)>>printsys(num2,den2) 構建H(s)=(s+1)(s+2)/(s-2j)(s+2j)(s+3)>>num=conv(num1,den2);den=conv(den1,num2);構建G(s)/H(s)的特征多項式的矩陣 >>printsys(num,den) 輸出以多項式表示的傳遞函數 >>pzmap(num,den),title(‘極點-零點圖’) 輸出傳遞函數的極點和零點圖 4、求反饋聯接系統的傳遞函數 命令窗口依次運行下面命令,并記錄各命令運行后果 >>numg=[1];deng=[500,0,0]; 構建傳遞函數G(s)=1/500s^2的特征多項式 >>numh=[1,1];denh=[1,2]; 構建傳遞函數H(s)=(s+1)/(s+2)的特征多項式 >>[num,den]=feedback(numg,deng,numh,denh)>>printsys(num,den) 5、自行利用MATLAB命令求取以下系統傳遞函數,并記錄下結果 四.實驗的結果及分析1、2、3、4、5、五.實驗心得體會 通過本實驗,我了解了基本的Mathlab指令,也讓我認識到了mathlab的強大。還有通過本實驗我主要了解了如何使用matlab指令求解傳遞函數以及其零極點,較為基礎,但十分重要,為后面實驗的開展打下基礎。 一.實驗目的 1、掌握MATLAB對系統進行時間響應分析 2、掌握一節慣性系統以及二階系統的時間響應特征以及系統性能與系統參數之間的關系 二.實驗軟件環境 3、計算機 4、MATLAB軟件 三.實驗內容 1、使用MATLAB求一階慣性系統的單位階躍響應曲線。 系統傳遞函數: 在命令窗口依次運行下面命令,并記錄各命令運行后結果 >>t=[0:.5:5];>>y=1-exp(-2*t);>>plot(t,y’r’);>>axis[0 5 0 1.1];>>set(gca,’ytick’,0:.1:1.1);>>title(‘y(t)=1-exp(-2t)’);>>xlabel(‘t’);>>ylabel(‘y(t)’);>>grid 若系統傳遞函數:G(S)=10/s+1 自行編制在命令窗口運行命令,求其單位階躍響應,并與上面的結果進行比較 2、使用MATLAB求二階系統的單位階躍響應曲線。系統傳遞函數如下: 在命令窗口如下運行命令,并記錄各命令運行后結果 >>sysms s for zeta=[0:0.2:0.8,1:0.5:2] wn=0.4;wn=sym(num2str(wn));zet=sym(num2str(zeta));if zeta==0 figure(1)ezplot(ilaplace(wn^2/s/(s^2+wn^2)),[0 80]);grid on title(‘xi=0’)elseif zeta==1 figure(2)ezplot(ilaplace(wn^2/s/(s+wn)^2),[0 80]); hold on;else figure(2) ezplot(ilaplace(wn^2/s/(s^2+2*zeta*wn^2)),[0 80]); hold on;end end grid on;title(‘xi:0.2,0.4,0.6,0.8,1.0,1.5,2.0’)axis([0 80 0 1.8])gtext(‘0.4’)gtext(‘1.0’)gtext(‘2.0’) 四.實驗的結果及分析1、2、五.實驗心得體會 做完了這次實驗,我對如何使用Matlab對系統進行時域分析有了進一步的了解,包括對一階和二階系統,這是對系統分析的重要步驟。 一.實驗目的 1、掌握MATLAB平臺下繪制典型環節及系統開環傳遞函數的Bode圖和Nyquist圖(極坐標圖)的方法 2、掌握利用Bode圖和Nyquist圖對系統性能進行分析的理論和方法 二.實驗軟件環境 5、計算機 6、MATLAB軟件 三.實驗內容 1、作各自典型環節的Bode圖和Nyquist圖,參數自定(1)比例環節 (2)積分環節 (3)慣性環節 (4)震蕩環節 2、開環傳遞函數如下 作Bode圖和Nyquist圖:求取幅值裕度和相角裕度,據此判斷閉環系統穩定性與相對穩定性;按Nyquist穩定盤踞判斷閉環系統的穩定性。 四.實驗的結果及分析 1、(1) (2) (3) (4) 2、五.實驗心得體會 本實驗主要了解Matlab軟件的使用以及使用matlab指令求傳遞函數的頻率響應,了解各典型環節的頻率響應,并求出某一開環傳遞函數的伯德圖,通過其幅值裕量和相角裕量,判斷系統的穩定性。這是一整個對系統進行頻域分析的步驟,十分重要!第二篇:自動控制原理實驗報告
第三篇:《自動控制原理》課程實驗報告(范例)
第四篇:南郵08級圖像實驗報告
第五篇:廣工物聯網自動控制原理實驗報告