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

波变换

开发平台:

Matlab

  1. function [out1,out2,out3] = key2info(lin_norm,lin_zero,key,typ)
  2. %KEY2INFO Key driven retrieve from tables.
  3. %   [OUT1,OUT2,OUT3] = KEY2INFO(HDL_NORM,HDL_ZERO,KEY,TYP)
  4. %   returns elements TAB1(index),TAB2(index)  and TAB3(index)
  5. %   where index is the approximate solution for TABX(index) = KEY,
  6. %   where TABX is constructed from the lines of the performance axes
  7. %   depending on the type of the typ input:
  8. %   typ = N means that the key is a l2-norm recovery value
  9. %   typ = Z means that the key is a number of zeros value
  10. %   typ = T means that the key is a threshold value.
  11. %   TAB1,TAB2 and TAB3 are constructed from the Xdata or Ydata of
  12. %   the lines which handles are lin_norm and lin_zero, depending
  13. %   on the value of key.
  14. %   TAB1,TAB2 and TAB3 are supposed to be of the same length.
  15. %
  16. %   See also WCMPSCR, WPCMPSCR.
  17. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 12-Mar-96.
  18. %   Last Revision: 14-May-2003.
  19. %   Copyright 1995-2004 The MathWorks, Inc.
  20. % $Revision: 1.12.4.2 $
  21. %   Only minimal argument checking for this program.
  22. switch upper(typ)
  23.   case 'N'
  24.     tab   = get(lin_norm,'Ydata');
  25.     index = getIndex('dec',key,tab);
  26.     out1  = tab(index);
  27.     tab   = get(lin_zero,'Ydata');
  28.     out2  = tab(index);
  29.     tab   = get(lin_norm,'Xdata');
  30.     out3  = tab(index);
  31.   case 'Z'
  32.     tab   = get(lin_zero,'Ydata');
  33.     index = getIndex('inc',key,tab);
  34.     out2  = tab(index);
  35.     tab   = get(lin_norm,'Ydata');
  36.     out1  = tab(index);
  37.     tab   = get(lin_norm,'Xdata');
  38.     out3  = tab(index);
  39.   case 'T'
  40.     tab   = get(lin_norm,'Xdata');
  41.     index = getIndex('inc',key,tab);
  42.     out3  = tab(index);
  43.     tab   = get(lin_norm,'Ydata');
  44.     out1  = tab(index);
  45.     tab   = get(lin_zero,'Ydata');
  46.     out2  = tab(index);
  47. end
  48. function index = getIndex(opt,key,tab)
  49. n     = length(tab);
  50. index = [];
  51. switch opt
  52.   case 'dec'
  53.     if     key<=tab(n) , index = n;
  54.     elseif key>=tab(1) , index = 1;
  55.     end
  56.   case 'inc'
  57.     if     key<=tab(1) , index = 1;
  58.     elseif key>=tab(n) , index = n;
  59.     end  
  60. end
  61. if isempty(index)
  62.     d = abs(key-tab);
  63.     m = min(d);
  64.     index = max(find(d==m));
  65. end