wavelet_denoise.m
上传用户:speoil
上传日期:2022-06-23
资源大小:224k
文件大小:12k
源码类别:

波变换

开发平台:

Matlab

  1. function varargout = Wavelet_Denoise(varargin)
  2. % WAVELET_DENOISE Application M-file for Wavelet_Denoise.fig
  3. %    FIG = WAVELET_DENOISE launch Wavelet_Denoise GUI.
  4. %    WAVELET_DENOISE('callback_name', ...) invoke the named callback.
  5. % Last Modified by GUIDE v2.0 11-Nov-2004 09:30:52
  6. if nargin == 0  % LAUNCH GUI
  7. fig = openfig(mfilename,'reuse');
  8. % Generate a structure of handles to pass to callbacks, and store it. 
  9. handles = guihandles(fig);
  10. guidata(fig, handles);
  11. if nargout > 0
  12. varargout{1} = fig;
  13. end
  14. elseif ischar(varargin{1}) % INVOKE NAMED SUBFUNCTION OR CALLBACK
  15. try
  16. if (nargout)
  17. [varargout{1:nargout}] = feval(varargin{:}); % FEVAL switchyard
  18. else
  19. feval(varargin{:}); % FEVAL switchyard
  20. end
  21. catch
  22. disp(lasterr);
  23. end
  24. end
  25. %| ABOUT CALLBACKS:
  26. %| GUIDE automatically appends subfunction prototypes to this file, and 
  27. %| sets objects' callback properties to call them through the FEVAL 
  28. %| switchyard above. This comment describes that mechanism.
  29. %|
  30. %| Each callback subfunction declaration has the following form:
  31. %| <SUBFUNCTION_NAME>(H, EVENTDATA, HANDLES, VARARGIN)
  32. %|
  33. %| The subfunction name is composed using the object's Tag and the 
  34. %| callback type separated by '_', e.g. 'slider2_Callback',
  35. %| 'figure1_CloseRequestFcn', 'axis1_ButtondownFcn'.
  36. %|
  37. %| H is the callback object's handle (obtained using GCBO).
  38. %|
  39. %| EVENTDATA is empty, but reserved for future use.
  40. %|
  41. %| HANDLES is a structure containing handles of components in GUI using
  42. %| tags as fieldnames, e.g. handles.figure1, handles.slider2. This
  43. %| structure is created at GUI startup using GUIHANDLES and stored in
  44. %| the figure's application data using GUIDATA. A copy of the structure
  45. %| is passed to each callback.  You can store additional information in
  46. %| this structure at GUI startup, and you can change the structure
  47. %| during callbacks.  Call guidata(h, handles) after changing your
  48. %| copy to replace the stored original so that subsequent callbacks see
  49. %| the updates. Type "help guihandles" and "help guidata" for more
  50. %| information.
  51. %|
  52. %| VARARGIN contains any extra arguments you have passed to the
  53. %| callback. Specify the extra arguments by editing the callback
  54. %| property in the inspector. By default, GUIDE sets the property to:
  55. %| <MFILENAME>('<SUBFUNCTION_NAME>', gcbo, [], guidata(gcbo))
  56. %| Add any extra arguments after the last argument, before the final
  57. %| closing parenthesis.
  58. % --------------------------------------------------------------------
  59. function varargout = pushbutton4_Callback(h, eventdata, handles, varargin)
  60. [filename, pathname] = uigetfile( ...
  61.     {'*.wav', 'All wav-Files (*.wav)'; ...
  62.         '*.*','All Files (*.*)'}, ...
  63.     'Select Wave File');
  64. % If "Cancel" is selected then return
  65. File = fullfile(pathname,filename);
  66. [x1 fs nbits]=wavread(File);
  67. x2=x1(1:65536);
  68. axes(handles.axes1)
  69. plot(x2);
  70. set(handles.axes1,'XMinorTick','on')
  71. grid on
  72. handles.X1=x2;
  73. guidata(h, handles);
  74. handles.X2=fs;
  75. guidata(h, handles);
  76. set(handles.edit1,'String',File)
  77. uiwait(msgbox('File Loaded','File Loaded','modal'));
  78. % --------------------------------------------------------------------
  79. function varargout = Denoise_Callback(h, eventdata, handles, varargin)
  80. f1 = get(handles.edit1,'String')
  81. x=findstr(f1,'')
  82. if x==[]
  83. [s,N] = makesig(f1);
  84. n = randn(1,N);
  85. f2 = str2double(get(handles.edit4,'String'));
  86. if f2==2
  87. h = 2; 
  88. elseif f2==4
  89. h = 4; 
  90. elseif f2==6;
  91. h = 6; 
  92. elseif f2==8;
  93. h = 8 ; 
  94. elseif f2==10;
  95. h = 10; 
  96. else
  97. h = 2; 
  98. end  
  99. x = s + n/h; 
  100. f2 = str2double(get(handles.edit3,'String'))
  101. if f2==4
  102. h = daubcqf(4); 
  103. elseif f2==6
  104. h = daubcqf(6); 
  105. elseif f2==8;
  106. h = daubcqf(8); 
  107. elseif f2==10;
  108. h = daubcqf(10); 
  109. else
  110. h = daubcqf(4); 
  111. end
  112. f1 = str2double(get(handles.edit2,'String'))
  113. if f1==1
  114. [yd,yn,opt2] = denoise(x,h);
  115. elseif f1==2
  116.  [yd,yn,opt2] = denoise(x,h,1);
  117. else
  118. [yd,yn,opt2] = denoise(x,h);
  119. end
  120. axes(handles.axes4)
  121. plot(x);hold on;plot(yd,'r');hold off;
  122. legend('Noisy Signal','Filter Signal')
  123. set(handles.axes4,'XMinorTick','on')
  124. grid on
  125. uiwait(msgbox('Denoising Done','Denoising','modal'));
  126. else
  127. File=get(handles.edit1,'String');   
  128. x1=wavread(File);
  129. x2=x1(1:65536);
  130. f2 = str2double(get(handles.edit3,'String'))
  131. if f2==4
  132. h = daubcqf(4); 
  133. elseif f2==6
  134. h = daubcqf(6); 
  135. elseif f2==8;
  136. h = daubcqf(8); 
  137. elseif f2==10;
  138. h = daubcqf(10); 
  139. else
  140. h = daubcqf(4); 
  141. end
  142. f1 = str2double(get(handles.edit2,'String'))
  143. if f1==1
  144. [yd,yn,opt2] = denoise(x2,h);
  145. elseif f1==2
  146.  [yd,yn,opt2] = denoise(x2,h,1);
  147. else
  148. [yd,yn,opt2] = denoise(x2,h);
  149. end
  150. axes(handles.axes4)
  151. plot(yd)
  152. set(handles.axes4,'XMinorTick','on')
  153. grid on
  154. uiwait(msgbox('Denoising Done','Denoising','modal'));
  155. end
  156. % --------------------------------------------------------------------
  157. function varargout = File_Callback(h, eventdata, handles, varargin)
  158. % --------------------------------------------------------------------
  159. function varargout = Close_Callback(h, eventdata, handles, varargin)
  160. % --------------------------------------------------------------------
  161. function varargout = Calculate_Callback(h, eventdata, handles, varargin)
  162. % --------------------------------------------------------------------
  163. function varargout = Untitled_6_Callback(h, eventdata, handles, varargin)
  164. File=get(handles.edit1,'String');   
  165. x1=wavread(File);
  166. x2=x1(1:65536);
  167. h = daubcqf(6); 
  168. [yd,yn,opt2] = denoise(x2,h,1);
  169. axes(handles.axes2)
  170. plot(yd);
  171. set(handles.axes2,'XMinorTick','on')
  172. grid on
  173. uiwait(msgbox('Denoising Done','Denoising','modal'));
  174. % --------------------------------------------------------------------
  175. function varargout = Help_Callback(h, eventdata, handles, varargin)
  176. % --------------------------------------------------------------------
  177. function varargout = Untitled_8_Callback(h, eventdata, handles, varargin)
  178. [data map]=imread('sheraz.bmp');
  179. uiwait(msgbox('This Software is developed by Sheraz Khan','About Developer','custom',data,map));
  180. % --------------------------------------------------------------------
  181. function varargout = LoadFile_Callback(h, eventdata, handles, varargin)
  182. function varargout = Open_Callback(h, eventdata, handles, varargin)
  183. % Use UIGETFILE to allow for the selection of a custom address book.
  184. [filename, pathname] = uigetfile( ...
  185.     {'*.wav', 'All wav-Files (*.wav)'; ...
  186.         '*.*','All Files (*.*)'}, ...
  187.     'Select Address Book');
  188. % If "Cancel" is selected then return
  189.     File = fullfile(pathname,filename);
  190. x1=wavread('File');
  191. x2=x1(1:65536);
  192.    h = daubcqf(6); 
  193.    [yd,yn,opt2] = denoise(x2,h,1,[]);
  194. axes(handles.axes1)
  195. plot(x2);hold on;plot(yd,'r');
  196. set(handles.axes1,'XMinorTick','on')
  197. grid on
  198. % --------------------------------------------------------------------
  199. function varargout = edit1_Callback(h, eventdata, handles, varargin)
  200. % --------------------------------------------------------------------
  201. function varargout = popupmenu1_Callback(h, eventdata, handles, varargin)
  202. val = get(h,'Value');
  203. switch val
  204. case 1
  205. set(handles.edit2,'String','1')
  206. case 2
  207. set(handles.edit2,'String','2')
  208. end
  209. % --------------------------------------------------------------------
  210. function varargout = popupmenu2_Callback(h, eventdata, handles, varargin)
  211. val = get(h,'Value');
  212. switch val
  213. case 1
  214. set(handles.edit3,'String','4')
  215. case 2
  216. set(handles.edit3,'String','6')
  217. case 3
  218. set(handles.edit3,'String','8')
  219. case 4
  220. set(handles.edit3,'String','10')
  221. end
  222. % --------------------------------------------------------------------
  223. function varargout = edit2_Callback(h, eventdata, handles, varargin)
  224. % --------------------------------------------------------------------
  225. function varargout = edit3_Callback(h, eventdata, handles, varargin)
  226. % --------------------------------------------------------------------
  227. % --------------------------------------------------------------------
  228. function varargout = popupmenu3_Callback(h, eventdata, handles, varargin)
  229. val = get(h,'Value');
  230. switch val
  231. case 1
  232. set(handles.pushbutton4,'Enable','on')
  233. set(handles.text10,'Visible','off')
  234. set(handles.popupmenu4,'Visible','off')
  235. set(handles.text11,'Visible','off')
  236. set(handles.popupmenu5,'Visible','off')
  237. set(handles.radiobutton3,'Visible','on')
  238. set(handles.radiobutton4,'Visible','on')
  239. set(handles.frame2,'Visible','on')
  240. set(handles.text12,'Visible','on')
  241. case 2
  242. set(handles.pushbutton4,'Enable','off')
  243. set(handles.radiobutton3,'Visible','off')
  244. set(handles.radiobutton4,'Visible','off')
  245. set(handles.frame2,'Visible','off')
  246. set(handles.text12,'Visible','off')
  247. set(handles.text10,'Visible','on')
  248. set(handles.popupmenu4,'Visible','on')
  249. set(handles.text11,'Visible','on')
  250. set(handles.popupmenu5,'Visible','on')
  251. end
  252. % --------------------------------------------------------------------
  253. function varargout = popupmenu4_Callback(h, eventdata, handles, varargin)
  254. val = get(h,'Value');
  255. switch val
  256. case 1
  257. set(handles.edit1,'String','Bumps')
  258. signal= 'Bumps';
  259. case 2
  260. set(handles.edit1,'String','Blocks')
  261. signal= 'Blocks';
  262. case 3
  263. set(handles.edit1,'String','Doppler')
  264. signal= 'Doppler';
  265. case 4
  266. set(handles.edit1,'String','Ramp')
  267. signal= 'Ramp';
  268. case 5
  269. set(handles.edit1,'String','Cusp')
  270. signal= 'Cusp';
  271. case 6
  272. set(handles.edit1,'String','Sing')
  273. signal= 'Sing';
  274. case 7
  275. set(handles.edit1,'String','HiSine')
  276. signal= 'HiSine';
  277. case 8
  278. set(handles.edit1,'String','LoSine')
  279. signal= 'LoSine';
  280. case 9
  281. set(handles.edit1,'String','LinChirp')
  282. signal= 'LinChirp';
  283. case 10
  284. set(handles.edit1,'String','TwoChirp')
  285. signal= 'TwoChirp';
  286. case 11
  287. set(handles.edit1,'String','QuadChirp')
  288. signal= 'QuadChirp';
  289. case 12
  290. set(handles.edit1,'String','MishMash')
  291. signal= 'MishMash';
  292. case 13
  293. set(handles.edit1,'String','Werner Sorrows')
  294. signal= 'Werner Sorrows';
  295. case 14
  296. set(handles.edit1,'String','Leopold')
  297. signal= 'Leopold';
  298. case 15
  299. set(handles.edit1,'String','HeaviSine')
  300. signal= 'HeaviSine';
  301. end
  302. f2 = str2double(get(handles.edit4,'String'));
  303. if f2==2
  304. h = 2; 
  305. elseif f2==4
  306. h = 4; 
  307. elseif f2==6;
  308. h = 6; 
  309. elseif f2==8;
  310. h = 8 ; 
  311. elseif f2==10;
  312. h = 10; 
  313. else
  314. h = 2; 
  315. end  
  316. [s,N] = makesig(signal);
  317.    n = randn(1,N);
  318. x = s + n/h; 
  319.     axes(handles.axes1)
  320. plot(x);hold on;plot(s,'r');hold off;
  321. legend('Noisy Signal','Pure Signal')
  322. set(handles.axes1,'XMinorTick','on')
  323. grid on
  324. % --------------------------------------------------------------------
  325. function varargout = popupmenu5_Callback(h, eventdata, handles, varargin)
  326. val = get(h,'Value');
  327. switch val
  328. case 1
  329. set(handles.edit4,'String','2')
  330. case 2
  331. set(handles.edit4,'String','4')
  332. case 3
  333. set(handles.edit4,'String','6')
  334. case 4
  335. set(handles.edit4,'String','8')
  336. case 5
  337. set(handles.edit4,'String','10')
  338. end
  339. % --------------------------------------------------------------------
  340. function varargout = edit4_Callback(h, eventdata, handles, varargin)
  341. % --------------------------------------------------------------------
  342. function varargout = edit5_Callback(h, eventdata, handles, varargin)
  343. % --------------------------------------------------------------------
  344. function varargout = radiobutton3_Callback(h, eventdata, handles, varargin)
  345. set(handles.radiobutton4,'Value',0)
  346. set(handles.axes1,'Visible','on')
  347. set(handles.axes7,'Visible','off')
  348. x2=handles.X1;
  349. fs=handles.X2
  350. axes(handles.axes1)
  351. plot(x2);
  352. set(handles.axes1,'XMinorTick','on')
  353. grid on
  354. % --------------------------------------------------------------------
  355. function varargout = radiobutton4_Callback(h, eventdata, handles, varargin)
  356. set(handles.radiobutton3,'Value',0)
  357. set(handles.axes1,'Visible','off')
  358. set(handles.axes7,'Visible','on')
  359. x2=handles.X1;
  360. fs=handles.X2
  361. fft1=fft(x2,65536);
  362. w=(0:32767)/32768*(fs/2);
  363. axes(handles.axes7)
  364. plot(w,abs(fft1(1:32768)));
  365. set(handles.axes7,'XMinorTick','on')
  366. grid on
  367. % --------------------------------------------------------------------
  368. function varargout = Signal_Callback(h, eventdata, handles, varargin)
  369. % --------------------------------------------------------------------
  370. function varargout = Length_Callback(h, eventdata, handles, varargin)
  371. % --------------------------------------------------------------------
  372. function varargout = Untitled_12_Callback(h, eventdata, handles, varargin)
  373. % --------------------------------------------------------------------
  374. function varargout = Type_Callback(h, eventdata, handles, varargin)