»ùÓÚmatlabµÄÊý×ÖÂ˲¨Æ÷µÄÉè¼Æ

? Éè¼ÆµÄÂ˲¨Æ÷µÄ·ùƵÏìÓ¦ºÍ·ùƵÏìÓ¦ÏÔʾÔÚ½çÃæÖÐ

MATLABÖеÄÊôÐÔ¿ØÖƷdz£¶à, ÒªÉèÖÃÄÄЩ¶ÔÏóµÄÊôÐÔ, ÄÄЩ¿ÉÒÔ²»ÉèÖÃ, ¶¼ÐèÕë¶Ô¾ßÌåÎÊÌâ¾ßÌå·ÖÎö½â¾ö¡£½ÓÏÂÀ´ÔÙͨ¹ý¿Ø¼þ²¼Öñ༭Æ÷À´ÉèÖÿؼþµÄ¶ÔÆë·½Ê½¼°¼ä¾àµÈ, ÒÔÍêÉÆ½çÃæ¹¦ÄÜ¡£°´ÒªÇóÉè¼ÆºÃµÄ¡°Â˲¨Æ÷Éè¼ÆÈí¼þ¡±Ö÷Ãæ°å¼ûͼ4, ¹²°üÀ¨5¸öÇøÓò£º

? ͼÐÎÇø£ºÓÃÓÚÏÔʾ¸÷Ä£¿éµÄ·ÂÕæÇúÏß

? ²ÎÊýÉèÇø£ºÓɸö¾²Ì¬Îı¾¿òºÍ¸ö±à¼­¿òÒÔ¼°ÀàÐÍÑ¡Ôñ°´Å¦×é³É, ʵʱµÄ½øÐÐϵͳ²Î

ÊýµÄÉ趨ºÍÂ˲¨Æ÷Ô­Ð͵ÄÑ¡¶¨

? ¶ÔÏóÄ£ÐÍÇø£ºÓÉÏÂÀ­²Ëµ¥Ñ¡¶¨Êý×ÖÂ˲¨Æ÷ÀàÐÍ, µ±Óû§µÄÊäÈ˲ÎÊý·¢Éú±ä»¯Ê±, ¿É

ͨ¹ýµ¥»÷ÏìÓ¦µÄ¡° Run¡±°´Å¥, ʵÏÖÉè¼Æ½á¹ûµÄʵʱˢÐÂÓëÏÔʾ

? Êý¾ÝÏÔÊ¾Çø£º¶ÔÓ¦ÓÚͼÐÎÏÔʾ½á¹û, ʵʱÏÔʾÂ˲¨Æ÷½×´ÎºÍ·Ö×Ó·Öĸ¶àÏîʽϵÊý¡£

3.3»ùÓÚMATLAB GUIµÄÊý×ÖÂ˲¨Æ÷Éè¼ÆÊµÏÖ

3.3.1 ¡°Â˲¨Æ÷Éè¼ÆÈí¼þ¡±GUI½çÃæÉè¼Æ

ÔÚmatlabÃüÁîÐд°¿ÚÖÐÊäÈëguide»òµã»÷matlab½çÃæÉÏÃæµÄ²Ëµ¥ÖеÄͼ±ê£¬´ò

¿ªguiÉè¼ÆµÄͼÐνçÃæÈçͼ5 ¡£È»ºóÍÏÈëËùÒªµÄͼÐοؼþ£¬°´ÐèÒªÐÞ¸ÄÍâ¹ÛºÍ¿Õ¼äÊôÐÔ£¬Ö±ÖÁÂú×ãÒªÇó£¬Èçͼ6¡£ÉèÖÃÊôÐÔµã»÷guide½çÃæÉÏ·½µÄRun°´Å¥£¬»áÉú³ÉÒ»¸öfigÎļþ£¬Ò»¸ömÎļþ£¬ÆäÖÐfigÎļþ¾ÍÊǽçÃæµÄͼÐΣ¬mÎļþÊǽçÃæµÄ»Øµ÷º¯Êý£¬ÔÚmÎļþÀïÿ¸ö¿Ø¼þµÄ»Øµ÷º¯Êý¶¼ÒѾ­×Ô¶¯Éú³É£¬¿Ø¼þÒª×öµÄ¹¤×÷¾ÍÊÇÔÚÎļþ¿ò¼Ü϶¨ÒåÄ³Ð©ÌØÊâÒªÇóµÄ״̬²¢²¹³äÍêÕû»Øµ÷º¯Êý³¡, ʹµ¥»÷¿Ø¼þʱ¼¤»î»Øµ÷³ÌÐòÍê³ÉÒ»¶¨µÄ¹¦ÄÜ¡£ 3.3.1 ¡°Â˲¨Æ÷Éè¼ÆÈí¼þ¡±»Øµ÷º¯Êý±àд Éè¼Æ×Ü¿òͼÈçͼ7Ëùʾ

17

? Digital FilterÏÂÀ­²Ëµ¥

ÔÚÏÂÀ­Digital Filter²Ëµ¥ÀïÑ¡ÔñIIRºÍFIRÂ˲¨Æ÷Éè¼Æ

Ñ¡ÔñIIR»òÕßFIRÆÁ±ÎÏàÓ¦µÄÑ¡Ïµ±Ñ¡ÔñIIRÑ¡Ïîʱ£¬Ê¹FIRµÄWindowsµÄÑ¡Ôñ´°¿Ú²»ÄÜʹÓ㬳ÌÐòºÍЧ¹ûͼ£¨Í¼8 ¡¢Í¼9 £©ÈçÏ£º

function DigitalFilter_Callback(hObject, eventdata, handles) %¶ÁÈ¡´ËʱѡÔñµÄÂ˲¨Æ÷Ñ¡Ôñ£¬¡°IIR¡¢FIR¡±

DigitalFilter_value=get(handles.DigitalFilter,'Value'); %µ±Ñ¡ÔñÁËIIRʱ£¬Ê¹´°¿ÚÑ¡ÏîÆÁ±Î

if(DigitalFilter_value==1) set(handles.FilterDesign,'enable','on'); set(handles.Windows,'enable','off')

%µ±Ñ¡ÔñÁËFIRʱ£¬Ê¹IIRµÄÂ˲¨Æ÷£¨Butterworth¡¢ Chebyshev¢ñµÈ£©Ñ¡ÏîÆÁ±Î else

set(handles.FilterDesign,'enable','off'); set(handles.Windows,'enable','on') end

Filter TypeÏÂÀ­²Ëµ¥

? ÔÚÏÂÀ­²Ëµ¥Filter TypeÖÐÑ¡ÔñÂ˲¨Æ÷ÀàÐÍ

Ñ¡ÔñµÍͨ»òÕ߸ßͨÂ˲¨Æ÷ʱ£¬Òþ²ØÏàÓ¦µÄ´øÍ¨ºÍ´ø×èµÄµÚ¶þ¸öÁÙ½çÆµÂÊ£¬Ê¹ÆäƵÂʲÎÊý²»ÄÜÊäÈ룬³ÌÐòºÍЧ¹ûͼ£¨Í¼10 ¡¢Í¼11 £©ÈçÏ£º

function FilterType_Callback(hObject, eventdata, handles)

%¶ÁÈ¡´ËʱÉè¼ÆµÄÂ˲¨Æ÷µÄÀàÐÍ£¬¡°Lowpass¡¢Highpass¡¢Bandpass¡¢Bandstop¡± FilterType_value=get(handles.FilterType,'Value'); %µ±Ñ¡ÔñLowpass»òÕßHighpass£¬ÆÁ±ÎÏàÓ¦µÄÁÙ½çÆµÂʵÄÏÔʾ

if((FilterType_value==1)||(FilterType_value==2)) set(handles.Fp2,'visible','off');set(handles.Fs2,'visible','off');

set(handles.text17,'visible','off');set(handles.text19,'visible','off')

set(handles.text6,'visible','off');set(handles.text10,'visible','off');

else

%µ±Ñ¡ÔñBandpass»òÕßBandstop£¬Ê¹ÏàÓ¦µÄÁÙ½çÆµÂʵÄÏÔʾ£¬Ê¹²ÎÊýÄܹ»ÊäÈë

if((FilterType_value==3)||(FilterType_value==4))

set(handles.Fp2,'visible','on');set(handles.Fs2,'visible','on');

set(handles.text17,'visible','on');set(handles.text19,'visible','on')s

et(handles.text6,'visible','on');set(handles.text10,'visible','on');

end

18

end

? Min OrderºÍCustom Orde°´Å¥

ÔÚÉè¼ÆÂ˲¨Æ÷½×Êýʱ£¬¿ÉÑ¡Ôñ×Ô¶¨Òå½×ÊýºÍÀûÓÃ×îС½×ÊýÉè¼ÆÂ˲¨Æ÷£¬²¢ÏÔʾ×îС½×Êý £¬ÕâÀïÉæ¼°µÄ¿Ø¼þMin OrderºÍCustom Order£¬Æä»Øµ÷º¯ÊýÈçÏ£º £¨1£©°´Å¥Min Order

Ñ¡ÔñʹÓÃ×îС½×ÊýÉèÖÃʱ£¬ÆÁ±Î×Ô¶¨Òå½×ÊýµÄÊäÈ룬Èçͼ12£º function MinOrder_Callback(hObject, eventdata, handles) MinOrder_value=get(handles.MinOrder,'Value');

if(MinOrder_value==1) set(handles.Order,'visible','off'); else

set(handles.Order,'visible','on'); end £¨2£©°´Å¥Custom Order

Ñ¡Ôñ×Ô¶¨Òå½×Êýʱ£¬ÏÔʾ½×ÊýÊäÈë¿ò£¬Èçͼ13

function CustomOrderButton_Callback(hObject, eventdata, handles) CustomOrderButton_value=get(handles.CustomOrderButton,'Value'); if(CustomOrderButton_value==0) set(handles.Order,'visible','off'); else

set(handles.Order,'visible','on'); end

£¨3£©ÆäÖÐÉæ¼°Run¿Ø¼þÖеijÌÐòÈçÏ£º ¢ÙÏÔʾ×îС½×Êý

set(handles.MinOrderDisplay,'string',num2str(n)) ¢Úµ±Ñ¡ÔñÁË×Ô¶¨Òå½×Êýʱ£¬¶ÁÈ¡×Ô¶¨Òå½×Êý if(MinOrder_value==0)

n=str2double(get(handles.Order,'String'))

end

? Fp1¡¢Fp2¡¢Fst1¡¢Fst2Îı¾±à¼­¿ò

²ÎÊýÊäÈëʱ£¬ÔÚÊäÈë³éÑùƵÂÊFsµÄǰÌáÏ£¬ÅжÏÂ˲¨Æ÷ͨ´øÁÙ½çÆµÂÊ£¨Fp1¡¢Fp2£©¡¢Â˲¨Æ÷×è´øÁÙ½çÆµÂÊ£¨Fst1¡¢Fst2£©µÄ¹éÒ»»¯ÆµÂÊwp1¡¢ wp2¡¢ws1¡¢ws1ÊÇ·ñÔÚ[0,1]Ö®¼ä£¬Èç²»ÕýÈ·ÏÔʾ´íÎó¶Ô»°¿ò£¬Æä³ÌÐòºÍЧ¹ûͼ£¨Í¼14£©ÈçÏ£º function Fp1_Callback(hObject, eventdata, handles) %¼ì²éÊäÈëµÄͨ´øÁÙ½çÆµÂÊFp1µÄ¹éÒ»»¯ÆµÂÊÊÇ·ñÔÚ[0,1]Ö®¼ä

19

Fs_value=str2double(get(handles.Fs,'String')); Fp1_value=str2double(get(handles.Fp1,'String')); wp1=2*Fp1_value/Fs_value;

%Èç¹û²»ÔÚ[0,1]Ö®¼ä£¬ÏÔʾÊäÈë´íÎó¶Ô»°¿ò if(wp1>=1)

errordlg(¡®wp1=2*Fp1/Fs,¹éÒ»»¯ÆµÂʲ»ÔÚ¡¾0£¬1¡¿Ö®¼ä£¬ÇëÊäÈëÕýÈ·µÄ²ÎÊý¡¯,¡®´íÎóÐÅÏ¢¡¯) end

ͼ 14 ÊäÈë²ÎÊý´íÎóÐÅÏ¢¿òÏÔʾ Fp2¡¢Fst1¡¢Fst2µÄ»Øµ÷º¯ÊýͬÀí±à³Ì

? Run°´Å¥

¸ù¾ÝÊäÈëµÄ²ÎÊýÏÔʾÉè¼ÆµÄÂ˲¨Æ÷µÄ·ùÆµÌØÐÔºÍÏàÆµÌØÐÔͼ£¬Æä³ÌÐòÈçÏ£º function Run_Callback(hObject, eventdata, handles) %µã»÷RunÁ¢¼´ÔËÐÐAutoChoose,mÎļþ£¬ÊµÏÖÂ˲¨Æ÷Éè¼Æ³ÌÐò AutoChoose(handles) ? Auto Run°´Å¥

µ±Ñ¡ÔñÁËAuto Run°´Å¥Ê±£¬Äܹ»¸ù¾ÝËùÑ¡µÄIIRµÄÂ˲¨Æ÷£¨Butterworth¡¢ Chebyshev¢ñµÈ£©¡¢FIRµÄ´°¿ÚÑ¡ÏͼÐÎÏÔʾÀàÐÍ£¨Linear¡¢Logarithmic£©Á¢¼´ÏÔʾÂ˲¨Æ÷µÄ·ùÆµÌØÐÔºÍÏàÆµÌØÐÔͼ£¬ÆäÖÐIIRµÄÂ˲¨Æ÷£¨Butterworth¡¢ Chebyshev¢ñµÈ£©µÄ»Øµ÷º¯Êý³ÌÐòÈçÏ£º

function FilterDesign_Callback(hObject, eventdata, handles) AutoRun_value=get(handles.AutoRun,'Value');

%µ±Ñ¡ÔñÁËFilter£¨Butterworth¡¢ Chebyshev¢ñµÈ£©ÖÐÒ»ÖÖFilterÔËÐÐAutoChoose,mÎļþ

if(AutoRun_value==1) AutoChoose(handles) end ? Quit°´Å¥

20

ÁªÏµ¿Í·þ£º779662525#qq.com(#Ìæ»»Îª@)