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

📄 delay.m

📁 I developed an algorithm for using local ICA in denoising multidimensional data. It uses delay embed
💻 M
字号:
function delaysig = delay(sig,m,step,method);%delay - delayed the signal%% delaysig = delay(sig,m,step,method);%% 01.08.03 - initial version% 01.11.04 - using new delay architecture % Peter Grubererror(nargchk(2,4,nargin))     % check no. of input argsif (nargin<3) step=1; endif (nargin<4) method='multidim'; endd=size(sig);switch method case 'multidim'  flip='flip'; otherwise  flip='no';end% fast version for 1-dim signalsif (length(d)==2) if ((d(1)==1)||(d(2)==1))  switch flip   case 'flip'    sig=[sig(1:prod(d)) sig(prod(d)-1:-1:2)];  end  delaysig=[];  for i=-m:m   delaysig=[delaysig;circshift(sig',-round(i*step))'];  end  return endenddelaysig=delay_multidim(sig,m,step,flip);returnfunction delaysig = delay_multidim(sig,lag,step,preprocess);%dlay - compute delayed/undelayed signal with lag and step%% delaysig = delay_multidim(sig,lag,step,preprocess);%%  lag  - distance to consider%  step - step%% 01.10.03 - initial version% 01.10.04 - rewrite% Peter Grubererror(nargchk(2,4,nargin))     % check no. of input argsif (nargin<3) step=1; endif (nargin<4) preprocess='no'; endd=size(sig);switch preprocess case 'no'  ndims=d; case 'flip'  ndims=(2*d)-2;end% find offsets and weightsmdist=ceil(lag)+2;tcoord=ones(1,length(d))*(-mdist);linoffs=[];while (sum(tcoord)<(length(d)*mdist)) td=sqrt(sum(tcoord.^2)); if (td<=lag) linoffs=[linoffs [tcoord']]; end tcoord(1)=tcoord(1)+1; for i=1:length(d)-1  if (tcoord(i)>mdist)   tcoord(i+1)=tcoord(i+1)+1;   tcoord(i)=-mdist;  end endend% delaydimensionlo=size(linoffs,2);% trivial caseif (lo==0) delaysig=[]; returnend% length of delayed cordinatesnd=prod(ndims);ld=length(ndims);delaysig=zeros(nd,lo);% generate the delayed permutationsswitch preprocess case 'flip'  for i=1:ld   p=prod(ndims(1:i-1));   q=d(i);   r=prod(d(i+1:ld));   t=reshape(sig,[p,q,r]);   sig=t(:,[[1:q],[q-1:-1:2]],:);  end  sig=reshape(sig,ndims);  t=circshift(sig,-linoffs(:,1)); case 'no'  t=circshift(sig,-linoffs(:,1));end% shift all dimensions in ns and generate delaysigdelaysig(:,1)=t(:);for j=2:lo t=circshift(t,linoffs(:,[j-1:j])*[1;-1]); delaysig(:,j)=t(:);enddelaysig=delaysig';return

⌨️ 快捷键说明

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