声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

楼主: simon21

[小波] [分享]个人收集的一些关于小波分析的matlab程序

 关闭 [复制链接]
 楼主| 发表于 2006-5-23 14:44 | 显示全部楼层

消失矩作用的程序

  1. clear;clc;
  2. f=50;
  3. T=0.001;
  4. n=1:50;
  5. y=sin(2*pi*f*n*T);
  6. noise=[zeros(1,17),0.2*randn(1,15),zeros(1,18)];
  7. y_noise=y+noise;
  8. figure(1);
  9. subplot(2,1,1);
  10. plot(y);
  11. title('signal');
  12. subplot(2,1,2);
  13. plot(y_noise);
  14. title('noise & signal');
  15. [yl2,yh2]=dwt(y,'db2');
  16. [yl10,yh10]=dwt(y,'db10');
  17. figure(2);
  18. subplot(2,1,1);
  19. plot(yl2);
  20. title('db2 low frequency signal');
  21. subplot(2,1,2);
  22. plot(yh2);
  23. title('db2 high frequency signal');
  24. figure(3);
  25. subplot(2,1,1);
  26. plot(yl10);
  27. title('db10 low frequency signal');
  28. subplot(2,1,2);
  29. plot(yh10);
  30. title('db10 high frequency signal');
  31. [yl2,yh2]=dwt(y_noise,'db2');
  32. [yl10,yh10]=dwt(y_noise,'db10');
  33. figure(4);
  34. subplot(2,1,1);
  35. plot(yl2);
  36. title('db2 low frequency noise & signal');
  37. subplot(2,1,2);
  38. plot(yh2);
  39. title('db2 high frequency noise & signal');
  40. figure(5);
  41. subplot(2,1,1);
  42. plot(yl10);
  43. title('db10 low frequency noise & signal');
  44. subplot(2,1,2);
  45. plot(yh10);
  46. title('db10 high frequency noise & signal');
复制代码

[ 本帖最后由 simon21 于 2007-4-4 07:08 编辑 ]
回复 支持 反对
分享到:

使用道具 举报

 楼主| 发表于 2006-5-23 14:45 | 显示全部楼层

平移变换平移法(cycle_spinning)消除gibbs效应

  1. clear;
  2. clc; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  3. %% 1.原始信号 f=50; % 信号频率
  4. fs=800; % 采样频率
  5. N=128; % 采样点 % 信号赋值
  6. n=1:N;
  7. y=sin(2*pi*f*n/fs); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  8. %% 2.噪声
  9. noise=0.4*rand(1,128); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  10. %% 3.染噪信号
  11. y_noise=y+noise; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  12. %% 4.硬消噪采用cycle_spinning技术 % 累加量
  13. z5=zeros(1,N); % 平移变换频移法
  14. for i=1:N;
  15. z=circshift(y_noise.',i-1).'; % 源信号右平移
  16. [z1,z2]=lwt(z,'db3'); % 小波正变换
  17. z2=zeros(1,N/2); % 高频分量全部为零(主要噪声,硬消噪)
  18. z3=ilwt(z1,z2,'db3'); % 小波反变换
  19. z4=circshift(z3.',-(i-1)).'; % 变换后信号左平移
  20. z5=z5+z4/N; % 平均
  21. end;

  22. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  23. %% 5.显示 error=norm(y-z5)/norm(y); % 相对误差 figure(1);
  24. subplot(2,1,1)
  25. plot(y,'r');
  26. legend('源信号');
  27. subplot(2,1,2);
  28. plot(y_noise);
  29. legend('染噪信号');
  30. figure(2);
  31. subplot(2,1,1)
  32. plot(y,'r');
  33. legend('源信号');
  34. title(error);
  35. subplot(2,1,2);
  36. plot(z5);
  37. legend('消噪后信号');
复制代码

[ 本帖最后由 simon21 于 2007-4-4 07:08 编辑 ]
发表于 2006-5-24 16:08 | 显示全部楼层

请教一个问题,关于三楼那个程序(2代小波示意程序 )

本帖最后由 wdhd 于 2016-9-6 13:39 编辑

  2代小波示意程序 (三楼)中

  ……

  f1(:,T+1)=f1(:,1); % 补列

  f2(T+1,:)=f2(1,:); % 补行

  ……

  补行是把分裂的偶数的第一行补到偶数的最后,但是补列是怎么进行的?比如图像是256×256,分裂后奇数为128×256,偶数也为128×256,进行f1(:,T+1)=f1(:,1); 补列之后,相当于把原来的第129列替换成第1列这样补行和补列后,奇数和偶数的分裂结果为128×256和129×256还请大侠不吝赐教,小生在此谢过了

  [em24]

  
[此贴子已经被作者于2006-5-24 16:09:37编辑过]

发表于 2006-6-10 13:17 | 显示全部楼层
多谢楼主,都是好东西~
发表于 2006-8-14 19:55 | 显示全部楼层

真的不错

其实我一直在努力,但是水平有限,还是先向各位学习,谢谢大家!
发表于 2006-10-12 12:43 | 显示全部楼层
很不错。。。是需要有人来总结和整理。
发表于 2006-10-22 11:07 | 显示全部楼层
虽然不搞小波,但是为楼主的这种无私所敬佩!
发表于 2006-10-24 14:31 | 显示全部楼层
楼主真是太好了!!狂赞!!
博学多才!
发表于 2007-1-20 20:32 | 显示全部楼层
楼主真是大好人!能加楼主的QQ么?我的QQ573618825!谢谢楼主!:handshake
发表于 2007-1-20 20:35 | 显示全部楼层
我也是研究小波的,由于我身边没有人和我研究的一样,有好多问题想咨询楼主,在这里先谢谢楼主了。:@D
发表于 2007-2-4 15:45 | 显示全部楼层

信号的分析处理

matlab内容太多了,我是想把从实际中测得的信号,用matlab的分析功能进行分析,各位高手请指点,多谢谢!
发表于 2007-2-5 16:44 | 显示全部楼层
多谢楼主的无私奉献,在此感谢了/
发表于 2007-2-25 11:06 | 显示全部楼层
顶一下
 楼主| 发表于 2007-4-4 07:01 | 显示全部楼层
使用小波包变换分析信号的MATLAB程序

  1. %t=0.001:0.001:1;
  2. t=1:1000;
  3. s1=sin(2*pi*50*t*0.001)+sin(2*pi*120*t*0.001)+rand(1,length(t));

  4. for t=1:500;
  5. s2(t)=sin(2*pi*50*t*0.001)+sin(2*pi*120*t*0.001)+rand(1,length(t));
  6. end

  7. for t=501:1000;
  8. s2(t)=sin(2*pi*200*t*0.001)+sin(2*pi*120*t*0.001)+rand(1,length(t));
  9. end


  10. subplot(9,2,1)
  11. plot(s1)
  12. title('原始信号')
  13. ylabel('S1')

  14. subplot(9,2,2)
  15. plot(s2)
  16. title('故障信号')
  17. ylabel('S2')

  18. wpt=wpdec(s1,3,'db1','shannon');

  19. %plot(wpt);
  20. s130=wprcoef(wpt,[3,0]);
  21. s131=wprcoef(wpt,[3,1]);
  22. s132=wprcoef(wpt,[3,2]);
  23. s133=wprcoef(wpt,[3,3]);
  24. s134=wprcoef(wpt,[3,4]);
  25. s135=wprcoef(wpt,[3,5]);
  26. s136=wprcoef(wpt,[3,6]);
  27. s137=wprcoef(wpt,[3,7]);
  28. s10=norm(s130);
  29. s11=norm(s131);
  30. s12=norm(s132);
  31. s13=norm(s133);
  32. s14=norm(s134);
  33. s15=norm(s135);
  34. s16=norm(s136);
  35. s17=norm(s137);

  36. st10=std(s130);
  37. st11=std(s131);
  38. st12=std(s132);
  39. st13=std(s133);
  40. st14=std(s134);
  41. st15=std(s135);
  42. st16=std(s136);
  43. st17=std(s137);

  44. disp('正常信号的特征向量');
  45. snorm1=[s10,s11,s12,s13,s14,s15,s16,s17]
  46. std1=[st10,st11,st12,st13,st14,st15,st16,st17]

  47. subplot(9,2,3);plot(s130);
  48. ylabel('S130');
  49. subplot(9,2,5);plot(s131);
  50. ylabel('S131');
  51. subplot(9,2,7);plot(s132);
  52. ylabel('S132');
  53. subplot(9,2,9);plot(s133);
  54. ylabel('S133');
  55. subplot(9,2,11);plot(s134);
  56. ylabel('S134');
  57. subplot(9,2,13);plot(s135);
  58. ylabel('S135');
  59. subplot(9,2,15);plot(s136);
  60. ylabel('S136');
  61. subplot(9,2,17);plot(s137);
  62. ylabel('S137');


  63. wpt=wpdec(s2,3,'db1','shannon');

  64. %plot(wpt);
  65. s230=wprcoef(wpt,[3,0]);
  66. s231=wprcoef(wpt,[3,1]);
  67. s232=wprcoef(wpt,[3,2]);
  68. s233=wprcoef(wpt,[3,3]);
  69. s234=wprcoef(wpt,[3,4]);
  70. s235=wprcoef(wpt,[3,5]);
  71. s236=wprcoef(wpt,[3,6]);
  72. s237=wprcoef(wpt,[3,7]);

  73. s20=norm(s230);
  74. s21=norm(s231);
  75. s22=norm(s232);
  76. s23=norm(s233);
  77. s24=norm(s234);
  78. s25=norm(s235);
  79. s26=norm(s236);
  80. s27=norm(s237);

  81. st20=std(s230);
  82. st21=std(s231);
  83. st22=std(s232);
  84. st23=std(s233);
  85. st24=std(s234);
  86. st25=std(s235);
  87. st26=std(s236);
  88. st27=std(s237);

  89. disp('故障信号的特征向量');
  90. snorm2=[s20,s21,s22,s23,s24,s25,s26,s27]
  91. std2=[st20,st21,st22,st23,st24,st25,st26,st27]


  92. subplot(9,2,4);plot(s230);
  93. ylabel('S230');
  94. subplot(9,2,6);plot(s231);
  95. ylabel('S231');
  96. subplot(9,2,8);plot(s232);
  97. ylabel('S232');
  98. subplot(9,2,10);plot(s233);
  99. ylabel('S233');
  100. subplot(9,2,12);plot(s234);
  101. ylabel('S234');
  102. subplot(9,2,14);plot(s235);
  103. ylabel('S235');
  104. subplot(9,2,16);plot(s236);
  105. ylabel('S236');
  106. subplot(9,2,18);plot(s237);
  107. ylabel('S237');

  108. %fft

  109. figure
  110. y1=fft(s1,1024);
  111. py1=y1.*conj(y1)/1024;
  112. y2=fft(s2,1024);
  113. py2=y2.*conj(y2)/1024;

  114. y130=fft(s130,1024);
  115. py130=y130.*conj(y130)/1024;
  116. y131=fft(s131,1024);
  117. py131=y131.*conj(y131)/1024;
  118. y132=fft(s132,1024);
  119. py132=y132.*conj(y132)/1024;
  120. y133=fft(s133,1024);
  121. py133=y133.*conj(y133)/1024;
  122. y134=fft(s134,1024);
  123. py134=y134.*conj(y134)/1024;
  124. y135=fft(s135,1024);
  125. py135=y135.*conj(y135)/1024;
  126. y136=fft(s136,1024);
  127. py136=y136.*conj(y136)/1024;
  128. y137=fft(s137,1024);
  129. py137=y137.*conj(y137)/1024;

  130. y230=fft(s230,1024);
  131. py230=y230.*conj(y230)/1024;
  132. y231=fft(s231,1024);
  133. py231=y231.*conj(y231)/1024;
  134. y232=fft(s232,1024);
  135. py232=y232.*conj(y232)/1024;
  136. y233=fft(s233,1024);
  137. py233=y233.*conj(y233)/1024;
  138. y234=fft(s234,1024);
  139. py234=y234.*conj(y234)/1024;
  140. y235=fft(s235,1024);
  141. py235=y235.*conj(y235)/1024;
  142. y236=fft(s236,1024);
  143. py236=y236.*conj(y236)/1024;
  144. y237=fft(s237,1024);
  145. py237=y237.*conj(y237)/1024;

  146. f=1000*(0:511)/1024;
  147. subplot(1,2,1);
  148. plot(f,py1(1:512));
  149. ylabel('P1');
  150. title('原始信号的功率谱')
  151. subplot(1,2,2);
  152. plot(f,py2(1:512));
  153. ylabel('P2');
  154. title('故障信号的功率谱')

  155. figure

  156. subplot(4,2,1);
  157. plot(f,py130(1:512));
  158. ylabel('P130');
  159. title('S130的功率谱')
  160. subplot(4,2,2);
  161. plot(f,py131(1:512));
  162. ylabel('P131');
  163. title('S131的功率谱')
  164. subplot(4,2,3);
  165. plot(f,py132(1:512));
  166. ylabel('P132');
  167. subplot(4,2,4);
  168. plot(f,py133(1:512));
  169. ylabel('P133');
  170. subplot(4,2,5);
  171. plot(f,py134(1:512));
  172. ylabel('P134');
  173. subplot(4,2,6);
  174. plot(f,py135(1:512));
  175. ylabel('P135');
  176. subplot(4,2,7);
  177. plot(f,py136(1:512));
  178. ylabel('P136');
  179. subplot(4,2,8);
  180. plot(f,py137(1:512));
  181. ylabel('P137');
  182. figure

  183. subplot(4,2,1);
  184. plot(f,py230(1:512));
  185. ylabel('P230');
  186. title('S230的功率谱')
  187. subplot(4,2,2);
  188. plot(f,py231(1:512));
  189. ylabel('P231');
  190. title('S231的功率谱')
  191. subplot(4,2,3);
  192. plot(f,py232(1:512));
  193. ylabel('P232');
  194. subplot(4,2,4);
  195. plot(f,py233(1:512));
  196. ylabel('P233');
  197. subplot(4,2,5);
  198. plot(f,py234(1:512));
  199. ylabel('P234');
  200. subplot(4,2,6);
  201. plot(f,py235(1:512));
  202. ylabel('P235');
  203. subplot(4,2,7);
  204. plot(f,py236(1:512));
  205. ylabel('P236');
  206. subplot(4,2,8);
  207. plot(f,py237(1:512));
  208. ylabel('P237');
  209. figure
  210. %plottree(wpt)
复制代码
 楼主| 发表于 2007-4-4 07:14 | 显示全部楼层

基于小波消噪的雷达回波检测

基于小波消噪的雷达回波检测,可以检测雷达回波的有无及其准确的位置

  1. close all;clear;clc;
  2. signalw=1200;%信号宽度
  3. m=120000; %数据采样点数
  4. pfa=0.001;%虚警概率
  5. dectectw=signalw/4;%滑窗宽度
  6. a=wgn(1,m,13,50,'dbm','real');%噪声
  7. b=gate(a,m,dectectw,pfa)%门限
  8. signal=real(fmlin(signalw,0,0.25));%信号

  9. %加高斯白噪声信号
  10. mix=zeros(1,m);
  11. signalpos=40000;
  12. for l=signalpos:signalpos+signalw-1
  13.     mix(1,l)=signal(l-(signalpos-1),1);
  14. end
  15. mix=mix+a;%加高斯白噪声信号

  16. %检测信号有无及位置
  17. g=0;
  18. for l=1:dectectw
  19.     g=g+mix(l)*(mix(l))';
  20.    
  21. end
  22.    g0=g;
  23.    for k=(dectectw+1):m
  24.     g=g+mix(k)*(mix(k))'-mix(k-dectectw)*(mix(k-dectectw))';
  25.     if (g>b)
  26.         over=1
  27.         index=k
  28.         break
  29.     end
  30. end%检测信号有无及位置

  31. pnoise=mean(abs(a).^2);
  32. psignal=mean(abs(signal).^2);
  33. snr=10*log10(psignal/pnoise) %信噪比

  34. [mix1,c,l]=wden(mix,'rigrsure','s','sln',3,'db2');
  35. [a1,c,l]=wden(a,'rigrsure','s','sln',3,'db2');
  36. % figure(2)
  37. % subplot(2,1,1)
  38. % plot(a)
  39. % subplot(2,1,2)
  40. % plot(a1)
  41. [signal1,c,l]=wden(signal,'rigrsure','s','sln',3,'db2');
  42. % figure(3)
  43. % subplot(2,1,1)
  44. % plot(signal)
  45. % subplot(2,1,2)
  46. % plot(signal1)

  47. %检测信号有无及位置
  48. dectectw1=signalw*1/4;
  49. b1=gate(a1,m,dectectw1,pfa)
  50. g=0;
  51. for l=1:dectectw1
  52.     g=g+mix1(l)*(mix1(l))';
  53.    
  54. end
  55.    g0=g;
  56.    for k=(dectectw1+1):m
  57.     g=g+mix1(k)*(mix1(k))'-mix1(k-dectectw1)*(mix1(k-dectectw1))';
  58.     if (g>b1)
  59.         over=1
  60.         index=k
  61.         break
  62.     end
  63. end%检测信号有无及位置

  64. pnoise1=(sum(abs(mix1).^2)-sum(abs(signal1).^2))/m;
  65. psignal1=mean(abs(signal1).^2);
  66. snr1=10*log10(psignal1/pnoise1) %信噪比

  67. subplot(2,1,1)
  68. plot(mix)
  69. axis([0 60000 -4 4])
  70. TITLE('消噪前信号')
  71. str={['SNR=',num2str(snr),'dB']};
  72. text(45000,3,str)
  73. subplot(2,1,2)
  74. plot(mix1)
  75. axis([0 60000 -4 4])
  76. TITLE('消噪后信号')
  77. str={['SNR=',num2str(snr1),'dB']};
  78. text(45000,2.5,str)
复制代码
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-12 20:52 , Processed in 0.060763 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表