⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 specshift.m

📁 Spectral Element Method for wave propagation and rupture dynamics.
💻 M
字号:
%datout = specshift(signal,shift)%% PURPOSE:	Subsample time-shift of real data%		via phase shift in spectral domain %% INPUT:	signal	in principle the input must be band-limited%			to < Nyquist frequency (1/2 sampling frequency)%			=> preprocess by taper then low-pass filter%			(this is usually done by the instrument anti-alias filter)%			If matrix: signal(time,index)%		shift	in sample units (can be non-integer, vector)%function datout = specshift(datin,shift)if any(size(datin)==1), datin = datin(:); endshift=shift(:);nshift = length(shift);[Nin,nsis] = size(datin);if nshift>1 & nsis>1 & nshift~=nsis, error('arguments have wrong size'); endN = 2^(nextpow2( Nin +max(abs(shift)) )); % +? to avoid wraparoundfdatin = fft(datin,N);ik = 2i*pi*(0:N/2).'/N; ik(N/2+2:N)=-ik(N/2:-1:2);if nsis==1 & nshift==1    fshift = exp(ik*shift) ;  fshift(N/2+1)=real(fshift(N/2+1)); 	% must be real at the Nyquist frequency (-> output is real),  					% although irrelevant when the input has been low-pass filtered  datout = real(ifft(fshift .*fdatin));  datout = datout(1:Nin) ;  else    fshift = exp(ik*shift') ;  % [N,ns]  if nsis==1 & nshift>1, fdatin = repmat(fdatin,1,nshift); end  if nshift==1 & nsis>1, fshift = repmat(fshift,1,nsis);   end  fshift(N/2+1,:)=real(fshift(N/2+1,:));  fshift = fshift.*fdatin;  datout = real(ifft( fshift ));  datout = datout(1:Nin,:);  end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -