基于MATLAB的逆變電源研究含完整程序 中英文翻譯
《基于MATLAB的逆變電源研究含完整程序 中英文翻譯》由會員分享,可在線閱讀,更多相關(guān)《基于MATLAB的逆變電源研究含完整程序 中英文翻譯(41頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 目錄 1 方案論證 2 1.1 設(shè)計實現(xiàn)要求 2 1.2 設(shè)計方案確定 2 2 原理簡介 3 2.1 升壓斬波電路 3 2.1.1 升壓電路原理圖 3 2.1.2 原理分析 3 2.2 三相電壓型橋式逆變電路 4 2.2.1 逆變電路原理圖 4 2.2.2 逆變電路原理 4 2.3 SPWM逆變器的工作原理 5 2.4 Simulink仿真環(huán)境 5 3 仿真建模 5 3.1 斬波電路仿真建模 6 3.2 逆變電路仿真建模 7 3.3 逆變電源仿真建模 8 4 仿真實現(xiàn) 9 4.1 斬波電路仿真實現(xiàn) 9 4.2 逆變電路仿真實現(xiàn) 10 4.3 逆變電源
2、仿真實現(xiàn) 10 5 心得體會 12 參考文獻 12 附錄 逆變電源研究 1 方案論證 1.1 設(shè)計實現(xiàn)要求 本次設(shè)計要求對逆變電源進行Matlab仿真研究,輸入為100V,輸出為380V、50Hz三相交流電,采用PWM斬波控制技術(shù),建立Matlab仿真模型并得到實驗結(jié)果。 1.2 設(shè)計方案確定 由于要求的輸出為380V、50Hz三相交流電,顯然不能直接由輸入的100V直流電逆變產(chǎn)生,需將輸入的100V直流電壓通過升壓斬波電路提高電壓,再經(jīng)過逆變過程及濾波電路
3、得到要求的輸出。根據(jù)課本所學的,可以采用升壓斬波電路和三相電壓型橋式逆變電路的組合電路,將升壓后的電壓作為逆變電路的直流側(cè),得到三相交流電,同時采用PWM控制技術(shù),使其頻率為50HZ。 根據(jù)對輸出電壓平均值進行調(diào)制的方式不同,斬波電路分為脈沖寬度調(diào)制(PWM)、頻率調(diào)制和混合型三種。在此使用第一種方法,也是應(yīng)用最多的方法。通過控制開關(guān)器件的通斷實現(xiàn)電能的儲存和釋放過程,輸出信號為方波,調(diào)節(jié)脈寬可以控制輸出的電壓的大小。 根據(jù)直流側(cè)電源性質(zhì)不同,逆變電路可分為電壓型逆變電路和電流型逆變電路。這里的逆變電路屬電壓型。采用等腰三角波作為載波,用SPWM進行雙極性控制。該電路的輸出含有諧波,除了使
4、波形具有對稱性減少諧波和簡化控制外,還需要專門的濾波電路進行濾波。濾波電路采用RLC濾波電路。 直流斬波電路采用PWM斬波控制,輸出的方波經(jīng)過濾波電路后變?yōu)橹绷麟娝屯孀冸娐?。逆變采用PWM逆變電路,采用SPWM作為調(diào)制信號,輸出PWM波形,再經(jīng)過濾波電路得到380V、50Hz三相交流電。系統(tǒng)總體框圖如圖1-1所示。 圖1-1 系統(tǒng)總體框圖 最后通過MATLAB集成環(huán)境simulink進行仿真,驗證結(jié)果。 2 原理簡介 2.1 升壓斬波電路 2.1.1 升壓電路原理圖 圖2-1 升壓斬波電路原理圖 2.1.2 原理分析 假設(shè)L值、C值很大,V通時,E向L充電,充電
5、電流恒為I1,同時C的電壓向負載供電,因C值很大,輸出電壓uo為恒值,記為Uo。設(shè)V通的時間為ton,此階段L上積蓄的能量為EI1ton,V斷時,E和L共同向C充電并向負載R供電。設(shè)V斷的時間為toff,則此期間電感L釋放能量為 ,穩(wěn)態(tài)時,一個周期T中L積蓄能量與釋放能量相等, ,化簡得。輸出電壓高于電源電壓,故稱升壓斬波電路,也稱之為boost變換器。T與的比值為升壓比,將升壓比的倒數(shù)記作β,由于α+β=1,故。升壓斬波電路能使輸出電壓高于電源電壓的原因 :L儲能之后具有使電壓泵升的作用,并且電容C可將輸出電壓保持住。 2.2 三相電壓型橋式逆變電路 2.2.1 逆變電路原理圖 圖2
6、-2 三相橋式逆變電路原理圖 2.2.2 逆變電路原理 該電路采用雙極性控制方式,U、V和W三相的PWM控制通常公用一個三角載波,三相的調(diào)制信號、和一次相差120°。U、V和W各相功率開關(guān)器件的控制規(guī)律相同,現(xiàn)以U相為例來說明。當>時,給上橋臂以導通信號,給下橋臂以關(guān)斷信號,則U相相對于直流電源假想中點的輸出電壓。當<時,給以導通信號,給以關(guān)斷信號,則。和的驅(qū)動信號始終是互補的。當給()加導通信號時,可能是()導通,也可能是二極管()續(xù)流導通,這要由阻感負載中電流的方向來決定。V相和W相的控制方式都和U相相同。 2.3 SPWM逆變器的工作原理 由于期望的逆變器輸出是一
7、個正弦電壓波形,可以把一個正弦半波分作N等分。然后把每一等分的正弦曲線與橫軸所包圍的面積都用個與此面積相等的等高矩形脈沖來代替,矩形脈沖的中點與正弦波每一等分的中點重合。這樣,由N個等幅不等寬的矩形脈沖所組成的波形為正弦的半周等效。同樣,正弦波的負半周也可用相同的方法來等效。 這一系列脈沖波形就是所期望的逆變器輸出SPWM波形。由于各脈沖的幅值相等,所以逆變器可由恒定的直流電源供電,也就是說,這種交一直一交變頻器中的整流器采用不可控的二極管整流器就可以了。逆變器輸出脈沖的幅值就是整流器的輸出電壓。當逆變器各開關(guān)器件都是在理想狀態(tài)下工作時,驅(qū)動相應(yīng)開關(guān)器件的信號也應(yīng)為與形狀相似的一系列
8、脈沖波形,這是很容易推斷出來的。 2.4 Simulink仿真環(huán)境 Simulink是Matlab的仿真集成環(huán)境,是一個實現(xiàn)動態(tài)系統(tǒng)建模、仿真的集成環(huán)境。它使Matlab的功能進一步增強,主要表現(xiàn)為:①模型的可視化。在Windows環(huán)境下,用戶通過鼠標就可以完成模型的建立與仿真;②實現(xiàn)了多工作環(huán)境間文件互用和數(shù)據(jù)交換;③把理論和工程有機結(jié)合在一起。利用Matlab下的Simulink軟件和電力系統(tǒng)模塊庫(SimPowerSystems)進行系統(tǒng)仿真是十分簡單和直觀的,用戶可以用圖形化的方法直接建立起仿真系統(tǒng)的模型,并通過Simulink環(huán)境中的菜單直接啟動系統(tǒng)的仿真過程,同時將結(jié)果在示波器
9、上顯示出來。本文主要通過對逆變電源的Matlab仿真,研究逆變電路的輸入輸出及其特性,以及一些參數(shù)的選擇設(shè)置方法,從而為以后的學習和研究奠定基礎(chǔ),同時也學習使用Matlab軟件的Simulink集成環(huán)境進行仿真的相關(guān)操作。 3 仿真建模 根據(jù)系統(tǒng)總體框圖,可將其分為PWM升壓斬波電路和三相逆變電路電路(含濾波電路),下面分別對其進行仿真建模。 3.1 斬波電路仿真建模 斬波電路我采用了升壓斬波電路,電路原理圖如3-1所示,原理前面也講得很清楚了。電路輸出的電壓還要經(jīng)逆變后濾波,故對波形的要求不是很高,與負載并聯(lián)的電容C取很大,就可以達到濾波的目的,因此不需另外添加濾波電
10、路。 圖3-1 升壓斬波電路 該電路中開關(guān)器件用IGBT,控制IGBT的波形由PWM脈沖生成器Pulse Generator產(chǎn)生,Pulse Generator在Simulink Library Browser的Simulink下拉菜單Sources類別中。繪制仿真圖時,打開Simulink Library Browser,可以在分類菜單中查找所需元件,也可以直接在查找欄中輸入元件名稱,如Pulse Generator,雙擊查找。找到元件后直接將其拖到新建Model文件窗口中即可。電路中其他元件按以上方法找出,放入Model文件窗口中。其中電阻、電感和電容元件,選擇SimPowerSy
11、stems下拉菜單Elements類別中的Series RLC Branch,放入窗口后,雙擊該圖標,在Branch Type中選擇相應(yīng)類型,如電阻選R,電感選L,選擇完畢后單擊OK按鈕。放齊元件后,按升降壓斬波電路原理圖連接電路,為了方便觀察輸出,應(yīng)在輸出端加上電壓測量裝置Voltage Measurement,并在Simulink下拉菜單Commonly Used Blocks類別中選擇Scope,即示波器,以觀測輸出電壓波形。所構(gòu)成的升降壓斬波電路仿真模型,如圖3-2所示。
12、 圖3-2 升壓斬波電路仿真模型 3.2 逆變電路仿真建模 三相橋式PWM型逆變電路的模型可參考Marlab—>Help—>Demos—>Simulink—>SimPowerSystems—>General Demos中的Three-Phase Two-Level PWM Voltage Source Converters。此電路采用了三相逆變橋集成塊Universal Bridge 3 arms,濾波電路也已由Three-Phasse Parallel RLC Load模塊構(gòu)成,不需另加濾波電路。在此電路的基礎(chǔ)上稍作修改,即構(gòu)成三相橋式PWM型逆變電路模型,如圖3-3所示。其中
13、變壓器僅起隔離作用,不對電壓進行升降。 圖3-3 三相橋式PWM型逆變電路模型 3.3 逆變電源仿真建模 將斬波電路的輸出接到逆變電路的輸入,就得到逆變電源仿真模型,如圖3-4所示。 圖3-4 逆變電源仿真模型 4 仿真實現(xiàn) 4.1 斬波電路仿真實現(xiàn) 打開斬波電路窗口,根據(jù)參考資料設(shè)置初試參數(shù),設(shè)置時雙擊元件圖標。輸入直流電設(shè)為100V,開關(guān)器件IGBT和二極管Diode使用默認參數(shù)。負載R=50 ,電感L=6e-04H(即0.6mH),電容C=3e-05F(即30uF)。設(shè)置PWM發(fā)生器周期Period為0.0001s,占空比Pulse Width(%
14、of period)為84.1%,其他參數(shù)不變。單擊Start simulation按鍵,開始仿真,雙擊示波器Scope,觀察輸出波形圖。此時輸出波形持續(xù)等副震蕩,且幅值太高,很不理想。分析知升降壓斬波電路中電感和電容值均應(yīng)很大,將電容值改為500uF(C=5e-04F),電感值為3.8mH,觀察波形,如圖4-1 所示,輸出電壓約0.2s后穩(wěn)定在630V。 圖4-1逆變電路仿真波形 通過幾次調(diào)節(jié)各元件參數(shù)發(fā)現(xiàn),改變電感和電容的值,輸出電壓穩(wěn)定值也在變化。電容的作用主要是使輸出電壓保持住,電容值過小輸出波形會持續(xù)震蕩,應(yīng)取較大,但過大
15、的電容值會使輸出電壓穩(wěn)定的時間太長。根據(jù)以上規(guī)律反復(fù)改變各元件參數(shù),直到得到滿意的結(jié)果。 4.2 逆變電路仿真實現(xiàn) 逆變電路中的參數(shù)主要有離散PWM生成器(Discrete PWM Generator)中的載波頻率(Carrier frequency)、采樣時間(Sample time)、調(diào)制參數(shù)(Modulation index)和輸出電壓頻率(Frequency of output voltage),變壓器(Transformer)中的繞組參數(shù)(Winding parameters),Three-Phasse Parallel RLC Load模塊中的參考點相電壓(Nominal ph
16、ase-to-phase voltage)和頻率(Nominal frequency)。由于要求輸出交流電頻率為50Hz,上述參數(shù)中的頻率都應(yīng)為50Hz。載波頻率過小時,輸出的波形有些跳動,和正弦波有一定的差距,如圖4-2 逆變電路仿真波形所示。 圖4-2逆變電路仿真波形 4.3 逆變電源仿真實現(xiàn) 首先應(yīng)將斬波電路的輸出電壓調(diào)到630V左右,再對逆變電源進行仿真。反復(fù)調(diào)節(jié)參數(shù)知當斬波電路中PWM脈沖生成器的占空比達到84.1%時,輸出的直流電壓約為630V,此時的波形如圖4-5 所示,輸出電壓先大幅震蕩,
17、大約0.2s后,穩(wěn)定在630V左右。 圖4-3逆變電源斬波輸出波形 圖4-4 逆變電源輸出波形 改變逆變電源仿真模型中的參數(shù)到要求值,單擊Start simulation按鍵開始仿真,圖4-4為逆變電源輸出波形。有圖可知,逆變電源輸出三相交流電相電壓波形幅值為311V,各相電壓互差120°,周期為0.02s即頻率為50Hz,滿足任務(wù)要求。 5 心得體會 通過本次電力電子技術(shù)課程設(shè)計,我學會了使用Matlab軟件仿真集成環(huán)境Simulink進行仿真的基本操作方法,熟悉了用protel畫電路圖,也對斬波電路、逆變電源的原理有了進一步的理解。
18、電力電子技術(shù)是我們非常喜歡的一門課程,學到的知識非常實用,這次課設(shè)讓我把書本上的理論知識和實際電路仿真聯(lián)系起來,在增強實踐能力的同時,我也學到了運用matlab仿真電力電子電路,以后有很多電路我都可以做出仿真來。 在做此次課程設(shè)計中,我還是遇到了很多問題的,比如畫圖時找不到IGBT元件,設(shè)定電感電容參數(shù)時花了好多時間,仿真時還找不到所需的元件,最后還是通過問同學和上網(wǎng)查資料才完成,還真有點辛苦。Matlab很強大,以后還要繼續(xù)研究??! 參考文獻 1]王兆安等.電力電子技術(shù).北京:機械工業(yè)出版社,2007 [2]薛定宇.基于Matlab/Simulink的系統(tǒng)仿真技術(shù)與應(yīng)用.北京:清
19、華大學出版社,2006 [3]王丹力等.Matlab控制系統(tǒng)設(shè)計、仿真、應(yīng)用.北京:中國電力出版社,2007 [4]周建興等. MATLAB從入門到精通.北京:人民郵電出版社,2008 [5]陳國呈.PWM逆變技術(shù)及應(yīng)用.北京:中國電力出版社,2007 附錄一: 程序代碼(1): clear all; t=-2*pi:0.01:2*pi; y=3*sin(2*t); plot(t,y); xlabel ('時間');ylabel('信號強度'); title('正弦信號'); grid on; axis([-7 7 -3.5 3.5]); 實驗結(jié)果:
20、正弦序列: clear all; n=-20:20; y=sin(0.1*pi*n); stem(n,y); xlabel ('n');ylabel('信號強度'); title('正弦信號序列'); axis([-20 20 -3.5 3.5]); grid on; 輸出結(jié)果: 程序代碼(2): fs=100;%設(shè)定采樣頻率 N=256; n=0:N-1; t=n/fs; x=sinc(2*pi*t-8); %生成sa信號 subplot(311); plot(t,x);%作sa信號的時域波形 xlabel('t'); ylabel('y');
21、 title('sa信號sinc(2*pi*t-8)時域波形'); grid on; y=fft(x,N);%進行N點fft變換 mag=abs(y);%求幅值 f=(0:length(y)-1)'*fs/length(y);%進行對應(yīng)的頻率轉(zhuǎn)換 subplot(312); plot(f,mag);%做頻譜圖 axis([0,100,0,20]); xlabel('頻率(Hz)'); ylabel('幅值'); title('sa信號sinc(2*pi*t-8)時域波形幅頻譜圖N=256'); grid on; z=angle(y); subplot(313); p
22、lot(f,z);%做相譜圖 axis([0,100,-5,5]); xlabel('頻率(Hz)'); ylabel('角度'); title('sa信號sinc(2*pi*t-8)相頻圖N=256'); grid on; 波形: 程序代碼(3): function varargout = two(varargin) % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ...
23、 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @two_OpeningFcn, ... 'gui_OutputFcn', @two_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.
24、gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT % --- Executes just before erzhi is made visible. function two_OpeningFcn(hObject,
25、 eventdata, handles, varargin) % This function has no output args, see OutputFcn. --------------------------------------------------------- %接下來是菜單的程序 --------------------------------------------------------- function file_Callback(hObject, eventdata, handles) ---------------------------------
26、----------------------- %文件打開程序 function open_Callback(hObject, eventdata, handles) [name,path]=uigetfile({'*.bmp'},'載入圖像'); if isequal(name,0)|isequal(path,0) errordlg('沒有選中文件','出錯'); return; else x=imread([path,name]); axes(handles.axes1); imshow(x); handles.img
27、=x; handles.noise_img=x; guidata(hObject,handles) end --------------------------------------------------- function save_Callback(hObject, eventdata, handles) %文件保存 [filename,pathname] = uiputfile('*.bmp','圖片保存為'); if isequal([filename,pathname],[0,0]) errordlg('沒有保存','出錯');
28、 return; else file=strcat(pathname,filename); (handles.axes2); i=getimage(gca); imwrite(i,file); end ----------------------------------------------------- function exit_Callback(hObject, eventdata, handles) clc; close all; close(gcf); --------------------------------------------------
29、------- %編輯菜單的程序 ------------------------------------------------------ function edit_Callback(hObject, eventdata, handles) ------------------------------------------------- function huidu_Callback(hObject, eventdata, handles) %灰度處理 axes(handles.axes2); if isrgb(handles.img) y=rgb2gray(han
30、dles.img); %RGB imshow(y); else msgbox('這已經(jīng)是灰度圖像','轉(zhuǎn)換失敗'); end ------------------------------------------------------ function liangdu_Callback(hObject, eventdata, handles) %亮度處理 prompt={'輸入?yún)?shù)1','輸入?yún)?shù)2','輸入gamma'}; defans={'[0 0.7]','[0 1]','1'}; p=inputdlg(prompt,'輸入?yún)?shù)'
31、,1,defans); p1=str2num(p{1}); p2=str2num(p{2}); p3=str2num(p{3}); gamma=p3; x=(handles.img); y=imadjust(x,p1,p2,gamma); axes(handles.axes2); imshow(y); ------------------------------------------------------ function jietu_Callback(hObject, eventdata, handles) %截圖 set(handles.axes
32、2,'HandleVisibility','ON'); axes(handles.axes2); y=imcrop(handles.img); imshow(y); handles.Timage=y; ------------------------------------------------------ function fangda_Callback(hObject, eventdata, handles) ------------------------------------------------------ function lingjz_Callback(h
33、Object, eventdata, handles) %鄰近插值放大 axes(handles.axes2); prompt={'輸入放大倍數(shù):'}; defans={'2'}; p=inputdlg(prompt,'輸入放大倍數(shù)',1,defans); p1=str2num(p{1}); y=imresize(handles.img,p1,'nearest'); %最近鄰插值法放大 imshow(y); ------------------------------------------------------ function shuangxianfa_
34、Callback(hObject, eventdata, handles) %雙線放大 axes(handles.axes2); prompt={'輸入放大倍數(shù):'}; defans={'2'}; p=inputdlg(prompt,'輸入放大倍數(shù)',1,defans); p1=str2num(p{1}); y=imresize(handles.img,p1,'bilinear'); %最近鄰插值法放大 imshow(y); ------------------------------------------------ function shu
35、angsanci_Callback(hObject, eventdata, handles) %雙三次放大 axes(handles.axes2); prompt={'輸入放大倍數(shù):'}; defans={'2'}; p=inputdlg(prompt,'輸入放大倍數(shù)',1,defans); p1=str2num(p{1}); y=imresize(handles.img,p1,'bicubic'); imshow(y); ------------------------------------------------------- function
36、 suoxiao_Callback(hObject, eventdata, handles) %鄰近插值縮小 axes(handles.axes2); prompt={'輸入放大倍數(shù):'}; defans={'0.2'}; p=inputdlg(prompt,'輸入放大倍數(shù)',1,defans); p1=str2num(p{1}); y=imresize(handles.img,p1,'nearest'); %最近鄰插值法縮小 imshow(y); ---------------------------------------------------
37、--- function shuangxian_Callback(hObject, eventdata, handles) %雙線性縮小 axes(handles.axes2); prompt={'輸入放大倍數(shù):'}; defans={'0.2'}; p=inputdlg(prompt,'輸入放大倍數(shù)',1,defans); p1=str2num(p{1}); y=imresize(handles.img,p1,'bilinear'); %最近鄰插值法縮小 imshow(y); ----------------------------------------
38、---------------- function shuangsancisuox_Callback(hObject, eventdata, handles) %雙三次縮小 axes(handles.axes2); prompt={'輸入放大倍數(shù):'}; defans={'0.2'}; p=inputdlg(prompt,'輸入放大倍數(shù)',1,defans); p1=str2num(p{1}); y=imresize(handles.img,p1,'bicubic'); imshow(y); ------------------------------
39、------------------------ function xuanzhuan_Callback(hObject, eventdata, handles) ------------------------------------------------------- function updown_Callback(hObject, eventdata, handles) %上下翻轉(zhuǎn) axes(handles.axes2); x=(handles.img); if isrgb(handles.img) for k=1:3 y(:,:,k)=flipud(x(:,:
40、,k));%上下翻轉(zhuǎn)函數(shù) end imshow(y); else x=(handles.img); y=flipud(x); imshow(y); end --------------------------------------------------------- function leftright_Callback(hObject, eventdata, handles) %左右翻轉(zhuǎn) axes(handles.axes2); if isrgb(handles.img) x=(handles.img); for k=1:3 y
41、(:,:,k)=fliplr(x(:,:,k));%左右翻轉(zhuǎn)函數(shù) end imshow(y); else x=(handles.img); y=fliplr(x); imshow(y); end ------------------------------------------------------ function zeft90_Callback(hObject, eventdata, handles) %左轉(zhuǎn)90度 axes(handles.axes2); x=(handles.img); y=imrotate(x,90);
42、 imshow(y); ------------------------------------------------------- function right90_Callback(hObject, eventdata, handles) %右轉(zhuǎn)90度 axes(handles.axes2); x=(handles.img); y=imrotate(x,-90); imshow(y); ------------------------------------------------------ function other_Callback
43、(hObject, eventdata, handles) %任意角度旋轉(zhuǎn) axes(handles.axes2); prompt={'輸入?yún)?shù)1:'}; defans={'30'}; p=inputdlg(prompt,'輸入?yún)?shù)',1,defans); p1=str2num(p{1}); y=imrotate(handles.img,p1); imshow(y); ----------------------------------------------------- function gs_Callback(hObject, eventdata,
44、 handles) %加入高斯噪聲 axes(handles.axes2); prompt={'輸入?yún)?shù)1:','輸入?yún)?shù)2'}; defans={'0','0.02'}; p=inputdlg(prompt,'輸入?yún)?shù)',1,defans); p1=str2num(p{1}); p2=str2num(p{2}); y=imnoise(handles.img,'gaussian',p1,p2); imshow(y); handles.noise_img=y; guidata(hObject,handles); -----------------
45、-------------------------------------- function jy_Callback(hObject, eventdata, handles) %加入椒鹽噪聲 prompt={'輸入?yún)?shù)1:'}; %對話框的設(shè)置,用戶輸入的是字符串 defans={'0.02'}; %缺省值 p=inputdlg(prompt,'輸入?yún)?shù)',1,defans); p1=str2num(p{1}); %字符串轉(zhuǎn)化為數(shù)值 axes(handles.axes2); x=(handles.img); y=imnoise(x,'s
46、alt & pepper',p1); imshow(y); handles.noise_img=y; guidata(hObject,handles); -------------------------------------------------------- function cx_Callback(hObject, eventdata, handles) %加入乘性噪聲 axes(handles.axes2); prompt={'輸入?yún)?shù)1:'}; defans={'0.02'}; p=inputdlg(prompt,'輸入?yún)?shù)',
47、1,defans); p1=str2num(p{1}); y=imnoise(handles.img,'speckle',p1); imshow(y); handles.noise_img=y; guidata(hObject,handles); ----------------------------------------------------- function zhifangtutongji_Callback(hObject, eventdata, handles) --------------------------------------------------
48、------- function red_Callback(hObject, eventdata, handles) %R直方圖 set(handles.axes2,'HandleVisibility','ON'); axes(handles.axes2); x=imhist(handles.img(:,:,1)); %直方圖統(tǒng)計 x1=x(1:10:256); horz=1:10:256; bar(horz,x1); set(handles.axes2,'xtick',0:50:255); -------------------
49、-------------------------------------- function gray_Callback(hObject, eventdata, handles) %G直方圖 set(handles.axes2,'HandleVisibility','ON'); axes(handles.axes2); if isrgb(handles.img) x=imhist(handles.img(:,:,2)); %直方圖統(tǒng)計 x1=x(1:10:256); horz=1:10:256; bar(horz,x1); set(handles.axes2,'xt
50、ick',0:50:255); else msgbox('這是灰度圖像','旋轉(zhuǎn)失敗'); end ------------------------------------------------------ function blue_Callback(hObject, eventdata, handles) %B直方圖 set(handles.axes2,'HandleVisibility','ON'); axes(handles.axes2); if isrgb(handles.img) x=imhist(handles.img(:,:,3));
51、 %直方圖統(tǒng)計 x1=x(1:10:256); horz=1:10:256; bar(horz,x1); %axis([0 255 0 150000]); set(handles.axes2,'xtick',0:50:255); %set(handles.axes2,'ytick',0:2000:15000); else msgbox('這是灰度圖像','旋轉(zhuǎn)失敗'); end --------------------------------------------------------- function junheng_Cal
52、lback(hObject, eventdata, handles) %直方圖均衡 set(handles.axes2,'HandleVisibility','ON'); axes(handles.axes2); if isrgb(handles.img) a=histeq(handles.img(:,:,1)); b=histeq(handles.img(:,:,2)); c=histeq(handles.img(:,:,3)); k(:,:,1)=a; k(:,:,2)=b; k(:,:,3)=c; imsho
53、w(k); else h=histeq(handles.img); %直方圖均衡 imshow(h); end -------------------------------------------------------- %頻譜分析 ----------------------------------------------------- function pinpu_Callback(hObject, eventdata, handles) --------------------------------------------
54、------------ function pinputu_Callback(hObject, eventdata, handles) %顯示頻譜圖 axes(handles.axes2); x=(handles.img); if isrgb(x) m=fft2(x(:,:,1)); y=fftshift(m); imshow(log(abs(y)),[]); else m=fft2(x); y=fftshift(m); imshow(log(abs(y)),[]); end ---------------------
55、----------------------------------- function frequency_Callback(hObject, eventdata, handles) %低通濾波器 axes(handles.axes2); x=(handles.img); if isrgb(x) msgbox('這是彩色圖像,不能通過低通濾波器','失敗'); else y1=imnoise(x,'salt & pepper'); % 疊加椒鹽噪聲 f=double(y1); % 數(shù)據(jù)類型轉(zhuǎn)換,MATLAB不支持圖像的無符號整型的計算 g=fft2(f);
56、 % 傅立葉變換 g=fftshift(g); % 轉(zhuǎn)換數(shù)據(jù)矩陣 [M,N]=size(g); nn=2; % 二階巴特沃斯(Butterworth)低通濾波器 d0=10; %截止頻率為10 m=fix(M/2); n=fix(N/2); for i=1:M for j=1:N d=sqrt((i-m)^2+(j-n)^2); h=1/(1+0.414*(d/d0)^(2*nn)); % 計算低通濾波器傳遞函數(shù) result(i,j)=h*g(i,j
57、); end end result=ifftshift(result); y2=ifft2(result); y3=uint8(real(y2)); imshow(y3); % 顯示濾波處理后的圖像 end --------------------------------------------------------- function gaotong_Callback(hObject, eventdata, handles) %高通濾波器 axes(handles.axes2); x=(handles.img); if isrgb(x)
58、msgbox('這是彩色圖像,不能通過高通濾波器','失敗'); else y1=imnoise(x,'gaussian'); %加高斯噪聲 f=double(y1); % 數(shù)據(jù)類型轉(zhuǎn)換 k=fft2(f); % 傅立葉變換 g=fftshift(k); % 轉(zhuǎn)換數(shù)據(jù)矩陣 [M,N]=size(g); nn=2; d0=3; %截止頻率為3 m=fix(M/2); n=fix(N/2); for i=1:M for j=1:N d=sqrt((i-m)^2+(j-n)^2
59、); % 計算高通濾波器傳遞函數(shù) if d<=d0 h=0; else h=1; end result(i,j)=h*g(i,j); end end result=ifftshift(result); y2=ifft2(result); y3=uint8(real(y2)); imshow(y3); end --------------------------------------------------
60、- %接下來這段程序是灰度圖像處理程序 ------------------------------------------------- function huiduchuli_Callback(hObject, eventdata, handles) --------------------------------------------------- function erzhituxiang_Callback(hObject, eventdata, handles) %二值圖像 axes(handles.axes2); x=(handles.img); if isrg
61、b(x) msgbox('這是彩色圖像,不能轉(zhuǎn)換為二值圖像','轉(zhuǎn)換失敗'); else j=im2bw(x); imshow(j); end ------------------------------------------------------- function tuxiangfushi_Callback(hObject, eventdata, handles) %圖像腐蝕 axes(handles.axes2); x=(handles.img); if isrgb(x) msgbox('這是彩色圖像,不能進行圖像腐蝕','失敗'); els
62、e j=im2bw(x); se=eye(5); bw=bwmorph(j,'erode'); imshow(bw); end -------------------------------------------------------- function suoyintuxiang_Callback(hObject, eventdata, handles) %創(chuàng)建索引圖像 axes(handles.axes2); x=(handles.img); if isrgb(x) msgbox('這是彩色圖像,不能創(chuàng)建索引圖像','創(chuàng)建失敗'); else y=g
63、rayslice(x,16); axes(handles.axes2); imshow(y,jet(16)); end ------------------------------------------------------ %這段是顏色模型的轉(zhuǎn)換 -------------------------------------------------- function ysmx_Callback(hObject, eventdata, handles) ---------------------------------------------------- function
64、 hsv_Callback(hObject, eventdata, handles) %RGB圖像轉(zhuǎn)HSV axes(handles.axes2); x=(handles.img); if isrgb(x) HSV=rgb2hsv(x); imshow(HSV); else msgbox('這是灰度圖像,不能轉(zhuǎn)換','轉(zhuǎn)換失敗'); end ------------------------------------------------------ function ntsc_Callback(hObject, eventdata, handles) %R
65、GB轉(zhuǎn)NTSC axes(handles.axes2); x=(handles.img); if isrgb(x) ntsc=rgb2ntsc(x); imshow(ntsc); else msgbox('這是灰度圖像,不能轉(zhuǎn)換','轉(zhuǎn)換失敗'); end -------------------------------------------------------- function ycbcr_Callback(hObject, eventdata, handles) %RGB轉(zhuǎn)YCBCR axes(handles.axes2); x=(handles.
66、img); if isrgb(x) ycbcr=rgb2ycbcr(x); imshow(ycbcr); else msgbox('這是灰度圖像,不能轉(zhuǎn)換','轉(zhuǎn)換失敗'); end --------------------------------------------------------- %這是濾波程序 --------------------------------------------------------- function lvbo_SelectionChangeFcn(hObject, eventdata, handles) str=get(hObject,'string'); set(handles.axes2,'HandleVisibility','ON'); axes(handles.axes2); i=handles.noise_img; if isrgb(i) a=handles.noise_img(:,:,1); b=handles.noise_img(:,:,2); c=handles.noise
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。