wfusfun.m
上传用户:haiyisale
上传日期:2013-01-09
资源大小:3246k
文件大小:2k
源码类别:

波变换

开发平台:

Matlab

  1. function [C,D] = wfusfun(A,B,funNUM)
  2. %WFUSFUN Template for a user defined method of fusion.
  3. %    For two arrays A and B which are of the same size,
  4. %    C = WFUSFUN(A,B) returns an array C which is of the same
  5. %    size as A and B. The array C is the "fusion" of A and B.
  6. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 13-Jan-2003.
  7. %   Last Revision: 11-Jul-2003.
  8. %   Copyright 1995-2004 The MathWorks, Inc.
  9. %   $Revision: 1.1.6.2 $  $Date: 2004/03/15 22:42:51 $ 
  10. if nargin<3 , funNUM = 5; end
  11. switch funNUM
  12.     case 1
  13.         t = 0.1;
  14.         sA = size(A); 
  15.         mA = floor(sA/2);
  16.         D = logical(ones(size(A)));
  17.         jmax = 0;
  18.         for i = mA(1):sA(1)
  19.             jmax = min([jmax + 1,mA(2)-1]);
  20.             for j = 1:jmax
  21.                 D(i,mA(2)-j:mA(2)+j) = 0;
  22.             end
  23.         end
  24.         C = A; C(D) = A(D); 
  25.         C(~D) = t*A(~D) + (1-t)*B(~D);
  26.     case 2 ,
  27.         try , t = method.param; catch , t = 0.1; end
  28.         D = ones(size(A));
  29.         sA = size(A);
  30.         x  = linspace(0,1,sA(1));
  31.         P = zeros(size(A));
  32.         jmax = 0;
  33.         for i = 1:sA(1)
  34.             P(i,:) = x(i);
  35.         end
  36.         if t~=1 , P = P.^t; end
  37.         C = A.*(1-P) + B.*P;
  38.         
  39.     case 3
  40.         try , t = method.param; catch , t = 0.1; end
  41.         D = ones(size(A));
  42.         sA = size(A);
  43.         sA2 = sA(2)/2;
  44.         y  = linspace(0,1,sA2);
  45.         P = zeros(size(A));
  46.         jmax = 0;
  47.         for i = 1:sA2
  48.             P(:,sA2+i)   = y(i);
  49.             P(:,sA2-i+1) = y(i);
  50.         end
  51.         if t>0 , P = 1-P; end
  52.         C = A.*(1-P) + B.*P; 
  53.         
  54.     case 4 , 
  55.         D = logical(tril(ones(size(A)))); t = 0.3;
  56.         C = A; 
  57.         C(D)  = t*A(D)+(1-t)*B(D);
  58.         C(~D) = t*B(~D)+(1-t)*A(~D);
  59.         
  60.     case 5 , 
  61.         D = logical(triu(ones(size(A))));  t = 0.3;
  62.         C = A; 
  63.         C(D)  = t*A(D)+(1-t)*B(D);
  64.         C(~D) = t*B(~D)+(1-t)*A(~D);
  65.         
  66. end