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