| ²é¿´: 753 | »Ø¸´: 0 | ||
172547204Ìú³æ (³õÈëÎÄ̳)
|
[ÇóÖú]
Ëã·¨´íÎó£¬ÇóÔÒòºÍ½â¾ö°ì·¨
|
|
Sample Text£º??? Attempted to access Amp(2); index out of bounds because numel(Amp)=1. Error in ==> x_svdprony at 263 xn(i)=xn(i)+Amp(2)*exp(damp(2)*(i-1)*dt)*cos(2*pi*Fre(2)*(i-1)*dt+bth(2)); Sample Text %´ò¿ªÖ¸¶¨Îļþ£¬²¢¶ÔÐźŽøÐÐPon·ÖÎö¼ÆËã function [M, Amp, Fre, damp, Pha, main_f, main_damp, x, xc, y, Amp_Response, er, all, N, dt]=x_svdprony(x_in, dt, fL, showfigure) format long; x_in=[32.32 29.29 27.56 25.95 24.44 23.02 21.68 20.41 19.23 18.11 17.05 16.06 15.12 14.24 13.41 12.63 11.89 11.2 10.55 9.93 9.36 8.81 8.3 7.81 7.36 6.93 6.53 6.15 5.79 5.45 5.13 4.83 4.55 4.29 4.04 3.8 3.58 3.37 3.17 2.99 2.81 2.65 2.5 2.35 2.21 2.08 1.96 1.85 1.74 1.64 1.54 1.45 1.37 1.29 1.21 1.14 1.07 1.01 0.95 0.9 0.84 0.79 0.75 ]; x = x_in; cpu=cputime; N=size(x,1);%·µ»ØµÄÊÇÊý×éµÄÐÐÊýÒ²¾ÍÊÇÓжàÉÙ¸öÊäÈëÊý¾Ý %È¡N/2µÄÕûÊý²¿·ÖΪ³õʼµÄP P=floor(N/2);%ËÄÉáÎåÈëÈ¡ÕûÊý %È¥Ö±Á÷»·½Ú x_Sum = 0; for i=N-5:N x_Sum = x_Sum + x(i); end x_av = x_Sum / N; if x_av > 10E-10 for i=1:N x(i) = x(i) - x_av; end end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Â˲¨»·½Ú %fL=1; fL=2; if fL>1 for i=fL+1:N x(i-fL)=0; for j=1:fL x(i-fL) = x(i-fL)+(1/fL)*x(i-j+1); end end end N=N-fL; tt=0:1:N-1; %PÒªÇóΪżÊý if mod(P, 2) ~= 0 P = P - 1; end P1=P; if mod(P, 2) == 0 % Generate R£¬Éú³ÉÑù±¾¾ØÕó for i=1 1for j=1 1+1ss=0; for k=P1:N-1 %ǰÏòÔ¤²âÎó²î ss=ss+x(k+2-j,1)*x(k+1-i,1); %ºóÏòÔ¤²âÎó²î %ss=ss+x(k+1-P1+i)*x(k+1-P1-1+j); %ͬʱ¿¼ÂÇË«ÏòÎó²î %ss=ss+x(k+2-j,1)*x(k+1-i,1)+x(k+1-P1+i)*x(k+1-P1-1+j); end R(i,j)=ss; end end % divide R into R1 and R2, and get A; R1*A=R2; for i=1 ![]() for j=1 ![]() R1(i,j)=R(i,j+1); end end for i=1 ![]() R2(i)=R(i,1); end %Ìí¼ÓµÄ´úÂ룬ʹÓÃSVD£TLSËã·¨%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Ê×ÏȽøÐÐSVD·Ö½â [u,s,v]=svd(R1); %¸ù¾ÝÆæÒìֵȷ¶¨Êµ¼ÊµÄ½×ÊýM M=0; %¼ÆËãÈ«²¿ÆæÒìÖµµÄ¾ù·½ºÍ Sum_SVD=0; for i=1 ![]() Sum_SVD = Sum_SVD+s(i,i)^2; end cur_sum = 0; i=1; while 1 - sqrt(cur_sum/Sum_SVD) > 0.000001 & i<=P cur_sum = cur_sum + s(i,i)^2; M = M + 1; i = i + 1; end %Êä³öÔ¤²âµÄ½×ÊýM M; %Éú³ÉSp¾ØÕó Sp=zeros(M+1, M+1); for j=1:M for i=1 P-1)-M+1Sp = Sp+s(j,j)^2*v(i:i+M,j)*v(i:i+M,j)'; end end %¸ù¾Ý¹«Ê½Éú³É×î¼Ñ×îС¶þ³Ë½â Sp_inv=inv(Sp); if isinf(Sp_inv(1,1)) == 1 Sp_inv = pinv(Sp); end a_SVD = Sp_inv(1+1:M+1, 1)/Sp_inv(1,1); P = M; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Get Zi cof_SVD(1)=1; for i=1:M cof_SVD(i+1)=a_SVD(i); end Z=roots(cof_SVD); % Get y,y should be very close to x for i=1 ![]() y(i)=x(i); end for i=P+1:N y(i)=0; end for i=P+1:N for j=1 ![]() y(i)=y(i)-a_SVD(j)*x(i-j); end end % Get B for i=1:N for j=1 ![]() Fy(i,j)=Z(j)^(i-1); end end Fz=Fy'; FH=Fy'*Fy; Fn=inv(FH); B = inv(Fy'*Fy)*Fy'*y'; % Calculate Amplitude, Phasor, Frequency and damp dt=0.01; for i=1 ![]() Amp(i)=abs(B(i)); Pha(i)=atan(imag(B(i))/real(B(i))); Fre(i)=atan(imag(Z(i))/real(Z(i)))/(2*pi*dt); damp(i)=log(abs(Z(i)))/dt; end %µ÷ÊÔÓõĴúÂë if isnan(Amp(1)) == 1 error('·ùÖµµÄÇó½â³öÏÖ´íÎó£¡'); end % Get xc,verify if xc is nearly equal to x for i=1 ![]() if(real(B(i))>=0.0) bth(i)=Pha(i); else bth(i)=pi+Pha(i); end end %¶ÔPhaÖØÐ·ùÖµ for i=1 ![]() if Pha(i) < 0 Pha(i) = Pha(i) + 2*pi; end end for i=1:N xc(i)=0.0; for j=1 ![]() xc(i)=xc(i)+Amp(j)*exp(damp(j)*(i-1)*dt)*cos(2*pi*Fre(j)*(i-1)*dt+bth(j)); end end %.........¡£¡£¡£×Ô¼º±àµÄ´úÂë¡£¡£¡£¡£¡£¡£¡£¡£ xm(i)=0.0; for i=1:N xm(i)=xm(i)+Amp(1)*exp(damp(1)*(i-1)*dt)*cos(2*pi*Fre(1)*(i-1)*dt+bth(1)); end xn(i)=0.0; for i=1:N xn(i)=xn(i)+Amp(2)*exp(damp(2)*(i-1)*dt)*cos(2*pi*Fre(2)*(i-1)*dt+bth(2)); end % xk(i)=0.0; %for i=1:N % xk(i)=xk(i)+Amp(3)*exp(damp(3)*(i-1)*dt)*cos(2*pi*Fre(3)*(i-1)*dt+bth(3)); %end figure; % subplot(2,1,1); % plot(tt,x(1:N),'b', tt,y, 'r', tt,xc, '*b'); %plot(tt,xm,'r', tt,xn, 'b',tt,xc,'g',tt,x(1:N), '*b',tt,xk,'m'); plot(tt,xm,'r', tt,xn, 'b',tt,xc,'g',tt,x(1:N), '*b');%¶þ½×»Í¼ÃüÁî %plot(tt,xc,'r',tt,x(1:N), '*b'); ylabel('µçѹ£¨V£©'); legend('ÄâºÏµÄµÚÒ»ÌõÖ¸Êý·ÖÁ¿','ÄâºÏµÄµÚ¶þÌõÖ¸Êý·ÖÁ¿','ÄâºÏÇúÏß','ʵ¼Ê²âÁ¿Öµ'); % legend('ÄâºÏÇúÏß','ʵ¼Ê²âÁ¿Öµ'); %¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£×Ô¼º±àµÄ´úÂë¡£¡£¡£¡£¡£¡£¡£¡£ % if showfigure == 1 % %ÏÔÊ¾ÌØÕ÷¸ùµÄλÖà % figure; % plot(damp, 2*pi*Fre, 'r*'); % end xj=xc'; er=0; all = 0; for i=1:N er=er+(x(i)-xc(i))^2; all = all+x(i)^2; end SNR=-20*log(sqrt(er/all)); % Calculate Prony spectrum %ƵÆ×µÄȡֵ·¶Î§Îª0£5Hz f=0:0.01:4.99; for j=1:size(f,2) sptr(j)=0; sptr1(j)=0; sptr2(j)=0; angl(j)=0; tmpangle = 0; for k=1 ![]() sptr1(j)=sptr1(j)+Amp(k)*cos(bth(k))*(2*damp(k)/(damp(k)^2+(2*pi*(f(j)-Fre(k)))^2)); sptr2(j)=sptr2(j)+Amp(k)*sin(bth(k))*(2*damp(k)/(damp(k)^2+(2*pi*(f(j)-Fre(k)))^2)); end sptr(j)=sqrt(sptr1(j)^2+sptr2(j)^2); tmpangle = atan2(sptr1(j),sptr2(j)); angl(j) = tmpangle*360/pi; end %¶Ô·ùƵÏìÓ¦½øÐйéÒ»»¯£¬²¢ÇÒѰÕÒÖ÷µ¼ÆµÂÊģʽ %ѰÕÒsptrµÄ×î´óÖµ max_sptr=0; main_f=0; for j=1:size(f,2) if sptr(j) > max_sptr max_sptr = sptr(j); %Ö÷µ¼ÆµÂʳöÏÖÔÚ×î´ó·ùƵÏìӦλÖà if f(j) ~= 0; main_f = f(j); else max_sptr = 0; end end end main_f; %ÕÒ³öÕæÕý¼ÆËãµÄƵÂÊÖµ f_err = 10; f_main = 0; for i=1:size(Amp, 2) if abs(main_f - Fre(i)) < f_err f_main = Fre(i); damp_main = damp(i); f_err = abs(main_f - Fre(i)); end end main_f = f_main; main_damp = damp_main; %½øÐйéÒ»»¯ for j=1:size(f,2) sptr(j)=sptr(j)/max_sptr; Amp_Response(j) = sptr(j); end for i=1:size(f,2) if angl(i) > 0 angl(i)=angl(i)-360; end end showfigure = 1; if showfigure == 1 % %ÏÔÊ¾ÌØÕ÷¸ùµÄλÖà % figure; % plot(damp, 2*pi*Fre, 'r*'); % end % if showfigure == 1 %ÔÚÒ»¸öͼÉÏÏÔʾʱÓòÄâºÍÇúÏߺÍPronyƵÆ×·Ö²¼ % figure; % subplot(2,1,1); %plot(tt,x(1:N),'b', tt,y, 'r', tt,xc, '*b'); % plot(tt,x(1:N),'r', tt,xc, '*b'); %ÐÞ¸ÄµÄ subplot(2,1,2); %ÐÞ¸ÄµÄ plot(f,sptr); %subplot(2,2,3); %plot(f,sptr); %subplot(2,2,4); % plot(f,angl); end cpu=cputime-cpu; format short; end end |
» ²ÂÄãϲ»¶
Çó²ÄÁÏ£¬»·¾³×¨Òµµ÷¼Á
ÒѾÓÐ3È˻ظ´
335Çóµ÷¼Á
ÒѾÓÐ5È˻ظ´
Çóµ÷¼Á
ÒѾÓÐ7È˻ظ´
Ò»Ö¾Ô¸¼ª´ó»¯Ñ§322Çóµ÷¼Á
ÒѾÓÐ4È˻ظ´
»·¾³Ñ§Ë¶288Çóµ÷¼Á
ÒѾÓÐ8È˻ظ´
341Çóµ÷¼Á(Ò»Ö¾Ô¸ºþÄÏ´óѧ070300)
ÒѾÓÐ6È˻ظ´
Ò»Ö¾Ô¸±±¾©»¯¹¤´óѧ 070300 ѧ˶ 336·Ö Çóµ÷¼Á
ÒѾÓÐ7È˻ظ´
299Çóµ÷¼Á
ÒѾÓÐ5È˻ظ´
306Çó0703µ÷¼ÁÒ»Ö¾Ô¸»ªÖÐʦ·¶
ÒѾÓÐ8È˻ظ´
Ò»Ö¾Ô¸ºÓ±±¹¤Òµ´óѧ0817»¯¹¤278·ÖÇóµ÷¼Á
ÒѾÓÐ11È˻ظ´
ÕÒµ½Ò»Ð©Ïà¹ØµÄ¾«»ªÌû×Ó£¬Ï£ÍûÓÐÓÃŶ~
¹ØÓÚ¾§Ìå½á¹¹½âÎöÖеÄA¡¢BÀà´íÎóµÄ½â¾ö°ì·¨
ÒѾÓÐ4È˻ظ´
LARSËã·¨ÎÊÌâÇóÖú
ÒѾÓÐ6È˻ظ´
¹ØÓÚµü´úËã·¨µÄÊÕÁ²ÎÊÌ⣬Çó¸ßÈËÖ¸µã£¡
ÒѾÓÐ3È˻ظ´
¼±£¡£¡£¡ÐÂÊÖÇóÖúphylip Èí¼þ¾ßÌå²Ù×÷ÒÔ¼°´íÎó½â¾ö·½·¨
ÒѾÓÐ4È˻ظ´
vasp.5.2±àÒë³ö´í£¬¹òÇó½â¾ö°ì·¨£¡
ÒѾÓÐ10È˻ظ´
bruker topspin ÄÑÌâ½â¾ö·½·¨
ÒѾÓÐ23È˻ظ´
·¢ÏÖÉú»î¡¢¹¤×÷ÖеÄÎÊÌ⣬²¢Ìá³öʹÓÃÈ˹¤ÖÇÄÜ·½·¨È¥½â¾öÎÊÌâµÄ·½°¸
ÒѾÓÐ13È˻ظ´
2¸öAÀà´íÎó£¬Çó½â¾ö°ì·¨
ÒѾÓÐ19È˻ظ´
±½»ùÅðËáõ¥¹ýÖù×ÓÏûʧµÄÎÊÌ⣬Çó½â¾ö·½·¨
ÒѾÓÐ9È˻ظ´
¡¾ÇóÖú¡¿gaussian¼ÆËã´íÎóL301£¬Çë¸ßÊִͽÌ
ÒѾÓÐ14È˻ظ´
¡¾½»Á÷¡¿³£¼ûA¡¢BÀà´íÎó¼°½â¾ö°ì·¨´óÊÕ¼¯
ÒѾÓÐ61È˻ظ´
¡¾ÇóÖú¡¿DLSÖÐÊý¾ÝËã·¨ÎÊÌâ
ÒѾÓÐ16È˻ظ´
¡¾ÇóÖú¡¿ÒÅ´«Ëã·¨Çó½âeil51.tspÎÊÌ⣬Àë×îÓŽ⻹ºÜÔ¶¡£Ôõô°ì£¿
ÒѾÓÐ26È˻ظ´
¡¾½»Á÷¡¿icp²âÊÔ¹ý³ÌÖÐÅöµ½µÄÎÊÌâ¼°½â¾ö·½·¨
ÒѾÓÐ5È˻ظ´
¡¾ÇóÖú¡¿ÇóÖúB Àà´íÎóµÄ½â¾ö·½·¨
ÒѾÓÐ5È˻ظ´
¡¾×ÊÔ´¡¿ÒºÏàÉ«Æ×³£¼ûÎÊÌâ¼°´¦Àí·½·¨
ÒѾÓÐ43È˻ظ´
¡¾Ô´´¡¿GAUSSION¼ÆËã³£¼û´íÎó¼°½â¾ö·½°¸
ÒѾÓÐ32È˻ظ´
¿ÆÑдÓСľ³æ¿ªÊ¼£¬ÈËÈËΪÎÒ£¬ÎÒΪÈËÈË













1
P-1)-M+1
»Ø¸´´ËÂ¥
µã»÷ÕâÀïËÑË÷¸ü¶àÏà¹Ø×ÊÔ´