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

波变换

开发平台:

Matlab

  1. function [FactorTAB,minmaxTAB] = eucfacttab(A,B,flagConstREM)
  2. %EUCFACTAB Euclidean factor table for Euclidean division algorithm.
  3. %   [FacTAB,MinMaxTAB] = EUCFACTTAB(A,B)
  4. %
  5. %   EUCFACTTAB(...,flagConstREM)
  6. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 25-Apr-2001.
  7. %   Last Revision 08-Jul-2003.
  8. %   Copyright 1995-2004 The MathWorks, Inc.
  9. %   $Revision: 1.1.6.2 $ $Date: 2004/04/13 00:38:39 $ 
  10. if nargin<3 , flagConstREM = 1; end
  11. [EuclideTAB,first] = euclidedivtab(A,B);
  12. FactorTAB = {};
  13. idxFactorise = 0;
  14. for k=first:size(EuclideTAB,1)
  15.     add = EuclideTAB(k,1);
  16.     idx = k;
  17.     while idx>1
  18.         add{end+1} = EuclideTAB{idx,3};
  19.         idx = EuclideTAB{idx,5};    
  20.     end
  21.     if flagConstREM
  22.         addDEC = isconst(add{1});
  23.     else
  24.         addDEC = 1;
  25.     end
  26.     if addDEC
  27.         idxFactorise = idxFactorise+1;
  28.         if ~isempty(FactorTAB)
  29.             dFact = size(FactorTAB,2)-length(add);
  30.             if dFact ~= 0
  31.                 FactorTAB = modifyFactorTAB(FactorTAB,idxFactorise);
  32.             end
  33.         end
  34.         FactorTAB(idxFactorise,:) = fliplr(add);
  35.     end
  36. end
  37. [nbDec,nbFact] = size(FactorTAB);
  38. minmaxTAB = zeros(nbDec,2);
  39. minmaxTAB(:,1) = Inf;
  40. for i=1:nbDec
  41.     for j=1:nbFact
  42.         C  = abs(get(FactorTAB{i,j},'coefs'));
  43.         mi = min(C);
  44.         if mi<minmaxTAB(i,1) , minmaxTAB(i,1) = mi; end 
  45.         ma = max(C);
  46.         if ma>minmaxTAB(i,2) , minmaxTAB(i,2) = ma; end 
  47.     end
  48. end   
  49. %-------------------------------------------------------------------%
  50. function FTnew = modifyFactorTAB(FT,idx)
  51. disp(['Modification of FactorTAB - idxFact = ' int2str(idx)])
  52. N = size(FT,1);
  53. P = laurpoly(0,0);
  54. TMP = cell(N,1);
  55. for k = 1:N , TMP{k} = P; end
  56. FTnew = [FT(:,1:end-1) , cell(N,1) , FT(:,end)];
  57. %-------------------------------------------------------------------%