[356]  1  %'set_col_vec': % sets the color code for vectors depending on a scalar and input parameters (used for plot_field)


 2  %


[313]  3  %function [colorlist,col_vec,minC,ColCode1,ColCode2,maxC]=colvec(colcode,vec_C)


[356]  4  %


[8]  5  %OUTPUT


 6  %colorlist(nb,3); %list of nb colors


 7  %col_vec, size=[length(vec_C),3)];%list of color indices corresponding to vec_C


 8  %minC, maxC: min and max of vec_C


[313]  9  %ColCode1, ColCode2: absolute threshold in vec_C corresponding to colcode.ColCode1 and colcode.ColCode2


[8]  10  %INPUT


 11  % colcode: struture setting the colorcode for vectors


 12  % colcode.CName: 'ima_cor','black','white',...


[405]  13  % colcode.ColorCode ='black', 'white', 'rgb','brg', '64 colors'


[315]  14  % colcode.CheckFixVecColor =0; thresholds scaling relative to min and max, =1 fixed thresholds


 15  % colcode.MinVec; min


 16  % colcode.MaxVec; max


[313]  17  % colcode.ColCode1: first threshold for rgb, relative to min (0) and max (1)


 18  % colcode.ColCode2: second threshold for rgb, relative to min (0) and max (1),


 19  % rmq: we need min <= ColCode1 <= ColCode2 <= max, otherwise


 20  % ColCode1 and ColCode2 are adjusted to the bounds


[8]  21  % vec_C: matlab vector representing the scalar setting the color


 22  function [colorlist,col_vec,colcode_out]=set_col_vec(colcode,vec_C)


 23  col_vec=[];


[405]  24  if ~isstruct(colcode),colcode=[];end;


[8]  25  colcode_out=colcode;%default


 26  if isempty(vec_C)  ~isnumeric(vec_C)


[405]  27  colorlist=[0 0 1]; %blue


[102]  28  col_vec=ones(size(vec_C));


[8]  29  return


 30  end


 31 


[405]  32 


 33 


 34  % colcode_out.ColCode1=ColCode1;


 35  % colcode_out.ColCode2=ColCode2;


 36  %% uniform color plot


 37  check_multicolors=0;


 38  col_vec=ones(size(vec_C));%all vectors at color#1 by default


[8]  39  %default input parameters


[405]  40  if ~isfield(colcode,'ColorCode')  isempty(colcode.ColorCode)


 41  colorlist=[0 0 1]; %blue


[8]  42  else


[405]  43  if strcmp(colcode.ColorCode,'black')


 44  colorlist(1,:)=[0 0 0];%black


 45  elseif strcmp(colcode.ColorCode,'white')


 46  colorlist(1,:)=[1 1 1];%white


 47  else


 48  check_multicolors=1;


 49  end


[8]  50  end


[405]  51 


 52  if check_multicolors


 53  if (isfield(colcode,'CheckFixVecColor') && isequal(colcode.CheckFixVecColor,1))


 54  minC=colcode.MinVec;


 55  maxC=colcode.MaxVec;


[8]  56  else


[405]  57  minC=min(vec_C);


 58  maxC=max(vec_C);


[8]  59  end


[405]  60  colcode_out.MinC=minC;


 61  colcode_out.MaxC=maxC;


 62  if strcmp(colcode.ColorCode,'rgb') strcmp(colcode.ColorCode,'bgr')% 3 color representation


 63  if isfield(colcode,'ColCode1')


 64  colcode_out.ColCode1=colcode.ColCode1;


 65  else


 66  colcode_out.ColCode1=minC+(maxCminC)/3;%default


 67  end


 68  if isfield(colcode,'ColCode2')


 69  colcode_out.ColCode2=colcode.ColCode2;


 70  else


 71  colcode_out.ColCode2=minC+2*(maxCminC)/3;%default


 72  end


 73  colorlist(2,:)=[0 1 0];%green


 74  col_vec(vec_C < colcode_out.ColCode1)=1;% vectors with vec_C smaller than ColCode1 set to the first color (r or b)


 75  col_vec((vec_C >= colcode_out.ColCode1) & (vec_C < colcode_out.ColCode2))=2;% select green vectors


 76  col_vec(vec_C >= colcode_out.ColCode2)=3;


 77  if strcmp(colcode.ColorCode,'rgb')


 78  colorlist(1,:)=[1 0 0];%red


 79  colorlist(3,:)=[0 0 1];%blue


 80  else


 81  colorlist(1,:)=[0 0 1];%blue


 82  colorlist(3,:)=[1 0 0];%red


 83  end


 84  else


 85  colorjet=jet;% ususal colormap from blue to red


 86  sizlist=size(colorjet);


 87  indsel=ceil((sizlist(1)/64)*(1:64));


 88  colorlist(:,1)=colorjet(indsel,1);


 89  colorlist(:,2)=colorjet(indsel,2);


 90  colorlist(:,3)=colorjet(indsel,3);


 91  sizlist=size(colorlist);


 92  nblevel=sizlist(1);


 93  col2_1=maxCminC;


 94  col_vec=1+floor(nblevel*(vec_CminC)/col2_1);


 95  col_vec=col_vec.*(col_vec<= nblevel)+nblevel*(col_vec >nblevel);% take color #nblevel at saturation


 96  col_vec=col_vec.*(col_vec>= 1)+ (col_vec <1);% take color #1 for values below 1


 97  end


[8]  98  end

