亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? vsolap1.m

?? Sparse Signal Representation using Overlapping Frames (matlab toolbox)
?? M
字號:
function W=VSolap1(X,Fin,S,VSalg,B,el)% VSolap1   Vector Selection for overlapping frame and 1D signal
%           a larger frame is build by repeating the input frame several
% times, i.e actual frame is input frame repeated B times. 
% Then, for each corresponding signal block
% a number of vectors are selected using a block-oriented vector selection
% algorithm, VSxxx, given by VSalg (char array).
% The program works for overlapping frames and 1D dignal.
%
% W=VSolap1(X,F,S,VSalg,B);       
% W=VSolap1(X,F,W,VSalg,B,el);       
%--------------------------------------------------------------------------------
% arguments:
%  W     - The weight matrix, W is a sparse matrix of size KxL
%  X     - The signal reshaped into blocks of length N, size NxL
%  F     - The frame of synthesis vectors (dictionary), size NxKxP  (P>1)
%          the vectors of F must be normalized, [F,nf]=NormalizeF(F);
%  S     - the third input argument may have different meaning depending on its size.
%    1x1   S is scalar, then it is assumed to be sparsness factor, 0<S<1,
%          a total of S*N*L weights will be selected, evenly distributed.
%    1xL   number of vectors to select for each block of length N 
%          S(l) is number of non-zero weights in W(:,l)
%          Note: only when B==1, if B>1 the distribution of weights may be changed
%    KxL   and the third argument should be the previous weights, W.
%          Now S=full(sum(W~=0)); and used as previous case (size 1xL).
%          If VSalg='VSab2' previous weights are used as input when VSalg is called
%  VSalg - Which vector selection algorithm to use, it must be a function
%          called like 'w=VSfomp2(x,S);' and have F and FF as as global variables. 
%          Recommended (=tested) are 'VSfomp2', 'VSmp2' or 'VSab2'.
%  B     - number of blocks to use at each call to VSalg, the actual frame will
%          be a block-diagonal matrix of size N(B+P-1)xKB, where the input frame, 
%          reshaped into size NPxK, is used in the blocks on the diagonal.
%          We should have B larger than or equal to (P-1) to keep overlapping 
%          within the adjacent (large/expanded/actual) frame.
%  el    - extra loops to do, vector selection will be done (1+el) times 
%          for each extended block,   default is el=0
%--------------------------------------------------------------------------------
% Note: Arguments for this function is almost like for VSblock

%--------------------------------------------------------------------------------
% Copyright (c) 2001.  Karl Skretting.  All rights reserved.
% Hogskolen in Stavanger (Stavanger University), Signal Processing Group
% Mail:  karl.skretting@tn.his.no   Homepage:  http://www.ux.his.no/~karlsk/
% 
% HISTORY:  dd.mm.yyyy
% Ver. 1.0  04.10.2001  KS: made function based on BlockVS (based on FindW)
% Ver. 1.1  26.10.2001  KS: some minor changes
% Ver. 1.2  03.12.2002  KS: moved from ..\Frames to ..\FrameTools%--------------------------------------------------------------------------------
% The main difference from BlockVS is that we do not have extra overlap (Be)
% instead we do vector selection twice for every block, first time when the 
% neighbor weights are zero, second time when they are set.
% This is not done when previous weights are given as input argument.
% Also the blocks may be different each time the function is called

global F FF 
Mfile='VSolap1';
Display=0;        % decide if function display information, 2 also waitbar
UseGMP=1;

if (nargin<5)
   error([Mfile,' should have at least 5 arguments, see help.']);
end
[k,Ls]=size(S);
[n,L]=size(X);
[N,K,P]=size(Fin);           % note: input frame is called Fin, not F
if P<2
   error([Mfile,' should have P>1, for P==1 use VSblock.']);
end
if (k==K) & (Ls==L)
   W=S;             % the old (previous) weights 
   S=full(sum(W~=0));
   [k,Ls]=size(S);
   WeightsGiven=1;
else
   W=sparse(K,L);    % the weight matrix is sparse and initial zeros
   WeightsGiven=0;
end
if k~=1
   error([Mfile,': size of third argument (S or W) is wrong, see help.']);
end
if n~=N
   error([Mfile,': size of X and F do not correspond, see help.']);
end   
if Ls==1   % S is sparseness factor, 0<S<1
   Savg=S;
   S=zeros(1,L);
   if UseGMP          % the 1D overlapping GMP algorithm is below
      disp([Mfile,': Use GMP to find some weights since only Savg was given.']);
      if Display; ssx=X(:)'*X(:); disp(' '); end;
      Fp=reshape(permute(Fin,[1,3,2]),N*P,K);                 % Fp is NPxK
      R=X; for (p=2:P);  R=[R;[X(:,p:L),X(:,1:(p-1))]];  end; % R is NPxL
      Q=Fp'*R;                                                % Q is KxL
      SNL=floor(Savg*N*L);     % number of non-zeros in W left to select
      L1=(L-max([floor(Savg*L/P),1])+1);
      while SNL>0
         [temp,k]=max(abs(Q));   
         [temp,l]=sort(temp);    
         k=k(l);
         temp=ones(1,L);
         for i=L:(-1):L1
            ki=k(i);li=l(i);  %  k(i) and l(i) are the indexes in Q (and W)
            if temp(li) 
               if ~W(ki,li); SNL=SNL-1; end;
               if (SNL<0); break; end;
               W(ki,li)=W(ki,li)+Q(ki,li);
               R(:,li)=R(:,li)-Fp(:,ki)*Q(ki,li);
               ll=(li-P+1):(li+P-1); ll=mod(ll-1,L)+1;
               for p1=1:P
                  for p2=setdiff(1:P,p1)
                     R((1:N)+(p2-1)*N,ll(P+p1-p2))=R((1:N)+(p1-1)*N,ll(P));
                  end
               end
               temp(ll)=0;
               Q(:,ll)=Fp'*R(:,ll);
            end
         end
         if Display
            temp=R(1:N,:);
            temp=temp(:)'*temp(:);
            temp=10*log10(ssx/temp);
            disp([int2str(SNL),' weights left, SNR=',num2str(temp)]);
         end
      end   
      clear Fp R Q SNL L1 temp k l ki li p1 p2
      S=full(sum(W~=0));
      % return    % this may be removed or included
   else
      % distrubute S*N*L evenly
      t1=0;
      for l=1:L
         t1=t1+N*Savg;
         S(l)=floor(t1);
         t1=t1-S(l);
      end
   end
   [k,Ls]=size(S);
end
if Ls~=L
   error([Mfile,': size of X and S do not correspond, see help.']);
end   
if (nargout < 1); 
   error([Mfile,': function must have one output arguments, see help.']); 
end

if (nargin<6); el=0; end;
if length(el)==0; el=0; end;
if length(B)==0; B=0; end;
if (nargout < 1); 
   error([Mfile,': function must have one output arguments, see help.']); 
end
if (el>30); el=30; end;   % not too many extra loops
if (B==0); B=2*P+4; end;

if (B<(P-1))
   disp([Mfile,': (B<(P-1)) is not good.']);
end   

% now build the frame to use here from input frame, Fin
% F and FF are global variables from now on
Fin=reshape(permute(Fin,[1,3,2]),N*P,K);    % Fin is changed from NxKxP to NPxK
% then, build the frame to use here
F=zeros(N*(B+P-1),K*B);
for b=0:(B-1)
   F((1:(N*P))+b*N,(1:K)+b*K)=Fin;
end
FF=F'*F;

Stot=sum(S);  % S is now 1xL
if Display
   disp([Mfile,': size F is ',int2str(size(F,1)),'x',int2str(size(F,2)),...
         ',  Savg=',int2str(floor(Stot*B/L)),...
         ',  L=',int2str(L),',  B=',int2str(B),',  P=',int2str(P),...
         ',  N=',int2str(N),',  K=',int2str(K),',  Stot=',int2str(Stot),'.']);
   hwbL = ceil((el+1)*(L+1)/B);
   t1=['Please wait while ',int2str(hwbL),' calls to ',VSalg,' is done.'];
   if Display>1
      hwbi = 0;
      hwb = waitbar(0,t1);
   else
      disp([Mfile,': ',t1]);
   end
   disp(' ');
end

for i_el=0:el
   temp=ceil(rand(1,1)*B);         % random offset each time
   Usel=temp:B:(L+B);
   for l=Usel
      xl=l+(0:(B+P-2));  % indexes for this block (x)
      wl=l+(0:(B-1));  % indexes for this block (w)
      wl0=wl-B;        % previous block (w)
      wl1=wl+B;        % next block (w)
      if (l+2*B-1)>L
         xl=rem(xl-1,L)+1;
         wl=rem(wl-1,L)+1;
         wl0=rem(wl0-1,L)+1;
         wl1=rem(wl1-1,L)+1;
      end
      if (l-B)<1
         xl=mod(xl-1,L)+1;
         wl=mod(wl-1,L)+1;
         wl0=mod(wl0-1,L)+1;
         wl1=mod(wl1-1,L)+1;
      end
      %
      x=X(:,xl);x=x(:);     % (B+P-1)Nx1
      w=W(:,wl);w=w(:);     % BKx1
      w0=W(:,wl0);w0=w0(:);     % BKx1
      w1=W(:,wl1);w1=w1(:);     % BKx1
      s=sum(S(wl));         % number of weights available
      %
      xr0=F*w0;
      xr1=F*w1;
      r=x-[xr0((B*N+1):((B+P-1)*N));zeros(B*N,1)]-[zeros(B*N,1);xr1(1:((P-1)*N))];
      %
      if s==1
         % should only find one weight, then find the best
         w=zeros(size(w));
         c=(r'*F);                % the inner products
         [temp,i]=max(abs(c));i=i(1);
         w(i)=c(i);
      elseif s>1
         if strcmp(VSalg,'VSab2')
            if (full(sum(w~=0))==s)
               w=VSab2(r,w);    %  Vector Selection using previous w
            else
               w=VSfomp2(r,s);  %  Vector Selection selecting s vectors
               % w=VSab2(r,w);    %  Vector Selection using previous w
            end
         else
            w=feval(VSalg,r,s);       % ! Vector Selection
         end
      else
         w=zeros(size(w));
      end
      %
      W(:,wl)=reshape(w,K,B);
      S(wl)=full(sum(W(:,wl)~=0));
      if sum(S(wl))<s
         % if fewer than available was used, we may select more in next block
         i=l+B; if (i>L); i=i-L; end;
         S(i)=S(i)+s-sum(S(wl));
      end
      if Display>1
         hwbi = hwbi+1;
         waitbar(hwbi/hwbL,hwb);
      end
   end
end
if Display>1
   close(hwb);
end

% check that S is correct, is this test relevant??
% temp=full(sum(W~=0));
% if sum(temp==S)~=L
%    disp([Mfile,': Logical error?, program did not track changes in S.']);
%    S=temp;
% end

Ssum=sum(S);
if Display
   disp([Mfile,': Number of weights selected is ',int2str(Ssum),'.']);
else
   if Ssum~=Stot
      disp([Mfile,': Number of weights used has changed from ',int2str(Stot),...
            ' to ',int2str(Ssum),'.']);
   end
end
%
if Ssum<Stot
   % we should try to select some more weights
   I=find(S<(Stot/L));
   length(I);
   temp=floor(length(I)/(Stot-Ssum));
   t=ceil(rand(1,1)*temp);
   i=t:temp:length(I);
   Usel=I(i);
   Usel=Usel(1:(Stot-Ssum));
   % this for-loop is almost exactly as above  (exceptions marked by **)
   for l=Usel
      xl=l+(0:(B+P-2));  % indexes for this block (x)
      wl=l+(0:(B-1));  % indexes for this block (w)
      wl0=wl-B;        % previous block (w)
      wl1=wl+B;        % next block (w)
      if (l+2*B-1)>L
         xl=rem(xl-1,L)+1;
         wl=rem(wl-1,L)+1;
         wl0=rem(wl0-1,L)+1;
         wl1=rem(wl1-1,L)+1;
      end
      if (l-B)<1
         xl=mod(xl-1,L)+1;
         wl=mod(wl-1,L)+1;
         wl0=mod(wl0-1,L)+1;
         wl1=mod(wl1-1,L)+1;
      end
      %
      x=X(:,xl);x=x(:);     % (B+P-1)Nx1
      w=W(:,wl);w=w(:);     % BKx1
      w0=W(:,wl0);w0=w0(:);     % BKx1
      w1=W(:,wl1);w1=w1(:);     % BKx1
      s=sum(S(wl))+1;           %                                           **
      %
      xr0=F*w0;
      xr1=F*w1;
      r=x-[xr0((B*N+1):((B+P-1)*N));zeros(B*N,1)]-[zeros(B*N,1);xr1(1:((P-1)*N))];
      %
      if s==1
         w=VSmp(r,s);
      else
         w=feval(VSalg,r,s);       % ! Vector Selection                    **
      end
      %
      W(:,wl)=reshape(w,K,B);
      S(wl)=full(sum(W(:,wl)~=0));
   end
   Ssum=sum(S);
   disp([Mfile,': Number of weights is increased to ',int2str(Ssum),'.']);
end

return

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本精品视频一区二区| 91麻豆蜜桃一区二区三区| 91精品国产综合久久久久久| 日韩精品乱码av一区二区| 4438x亚洲最大成人网| 国产乱一区二区| 亚洲欧美日韩久久| 91精品国产综合久久久久久漫画 | 56国语精品自产拍在线观看| 麻豆国产精品一区二区三区| 亚洲免费大片在线观看| 日韩午夜av电影| 色综合中文字幕| 国产福利91精品一区二区三区| 亚洲成av人片www| 国产精品福利一区二区三区| 久久久久久久久久久电影| 国产精品亲子伦对白| 色猫猫国产区一区二在线视频| 国内欧美视频一区二区| 天天综合网天天综合色 | 视频一区在线播放| 综合久久一区二区三区| 欧美高清在线精品一区| 久久久久久亚洲综合| 日韩亚洲欧美一区二区三区| 欧美夫妻性生活| 欧美日韩一级视频| 在线精品视频免费观看| 色婷婷精品久久二区二区蜜臀av | 国产精品乱子久久久久| 26uuu亚洲| 精品88久久久久88久久久| 日韩欧美一区二区视频| 日韩视频一区在线观看| 精品少妇一区二区三区免费观看| 91精品啪在线观看国产60岁| 91精品国产欧美一区二区18| 欧美精品乱码久久久久久按摩| 欧美日韩精品三区| 欧美性xxxxx极品少妇| 欧美三级中文字幕在线观看| 欧美天堂亚洲电影院在线播放| 欧美亚洲国产一区二区三区va| 在线看国产一区二区| 欧美无人高清视频在线观看| 欧美日韩免费高清一区色橹橹| 欧美视频日韩视频在线观看| 欧美日韩成人综合天天影院 | 欧美一级片免费看| 91精品黄色片免费大全| 制服.丝袜.亚洲.另类.中文| 欧美tk—视频vk| 国产午夜精品在线观看| 国产精品无人区| 亚洲女同女同女同女同女同69| 亚洲精品欧美二区三区中文字幕| 亚洲另类一区二区| 五月开心婷婷久久| 黄色日韩三级电影| 成人国产精品免费| 欧洲av在线精品| 91精品国产综合久久福利| 久久综合狠狠综合久久激情| 中文字幕中文字幕中文字幕亚洲无线| 亚洲欧美一区二区三区孕妇| 亚洲一区二区三区四区在线免费观看 | 成人网页在线观看| 99久久精品国产观看| 91香蕉视频污| 3d动漫精品啪啪一区二区竹菊| 精品88久久久久88久久久| 国产精品国产三级国产aⅴ入口| 亚洲已满18点击进入久久| 丝袜美腿成人在线| 国产成人av电影免费在线观看| 97超碰欧美中文字幕| 欧美日韩国产精选| 国产无遮挡一区二区三区毛片日本| 中文一区二区完整视频在线观看 | 丝袜美腿一区二区三区| 激情久久五月天| 91麻豆福利精品推荐| 91精品国产麻豆| 国产精品沙发午睡系列990531| 亚洲第一av色| 成人在线综合网站| 在线成人av影院| 中文字幕一区二区三| 久久国产精品色婷婷| 色婷婷亚洲精品| 久久久噜噜噜久久中文字幕色伊伊| 一区二区三区久久| 国产传媒欧美日韩成人| 欧美一区二区女人| 亚洲免费av高清| 国产91精品一区二区麻豆网站| 欧美视频日韩视频| 亚洲视频一区二区在线观看| 久久99久久99精品免视看婷婷| 色欧美日韩亚洲| 久久奇米777| 免费观看成人av| 在线免费观看不卡av| 国产精品视频免费| 国产黄色精品网站| 欧美一区二区三区白人| 亚洲一区二区3| 99re66热这里只有精品3直播| 2021中文字幕一区亚洲| 亚洲国产成人av| 一本到不卡精品视频在线观看| 久久精品视频在线看| 蜜桃视频一区二区| 91精品欧美久久久久久动漫 | 另类小说综合欧美亚洲| 91传媒视频在线播放| 日本亚洲最大的色成网站www| www.欧美日韩| 国产欧美精品一区二区三区四区| 午夜电影久久久| 色94色欧美sute亚洲线路二 | 国产精品二三区| 国产不卡视频在线播放| 国产日韩欧美精品在线| 久久国产福利国产秒拍| 欧美日本韩国一区二区三区视频 | 色94色欧美sute亚洲13| 综合av第一页| 99re热视频这里只精品| 亚洲欧美日韩综合aⅴ视频| 成人免费的视频| 国产精品欧美一区喷水| 豆国产96在线|亚洲| 久久亚洲私人国产精品va媚药| 久久国产精品第一页| 日韩一区二区中文字幕| 久草中文综合在线| 久久综合国产精品| 国产成人自拍网| 国产精品亲子伦对白| 99视频有精品| 亚洲激情综合网| 欧美日韩美少妇| 免费xxxx性欧美18vr| 欧美va亚洲va| 国产一区二区三区免费观看| 久久综合久久鬼色中文字| 国产福利视频一区二区三区| 国产亚洲欧美激情| 粉嫩av一区二区三区| 国产精品成人免费在线| 欧美在线观看视频一区二区 | 欧美电影免费观看高清完整版在线观看 | 久久久久久黄色| 成人福利电影精品一区二区在线观看| 国产精品美女视频| 欧美在线看片a免费观看| 日韩不卡一区二区| 久久午夜老司机| 91视频91自| 日韩精品久久理论片| 久久色成人在线| 91网站在线观看视频| 午夜精品久久久久久久| 精品日韩欧美一区二区| 成人午夜av在线| 亚洲bt欧美bt精品| 久久综合九色综合欧美98| 99国产精品久久久久久久久久| 亚洲成人av一区| 国产肉丝袜一区二区| 色综合天天狠狠| 日本vs亚洲vs韩国一区三区二区| 久久精品一区四区| 欧美在线观看视频一区二区三区| 免费人成精品欧美精品| 国产精品乱人伦中文| 8v天堂国产在线一区二区| 国产精品99久久久久久有的能看 | 久久www免费人成看片高清| 国产日产精品一区| 欧美又粗又大又爽| 国产综合久久久久久鬼色| 一区二区三区在线视频播放| 欧美成人一级视频| 色乱码一区二区三区88| 国产一区在线视频| 亚洲图片欧美综合| 中文字幕的久久| 日韩久久久久久| 在线观看视频欧美| 成人丝袜视频网| 蜜臀久久99精品久久久久久9| 日韩毛片视频在线看| 精品福利在线导航| 欧美三级日韩在线| 欧美国产激情二区三区| 国产91富婆露脸刺激对白| 欧美网站一区二区|