function MAP=bow(varargin)
%Three colormaps.
%
%Call:
% MAP=bow
% MAP=bow(N)
% MAP=bow(mode)
% MAP=bow(mode,N)
% MAP=bow(N,mode)
%Input:
% N = defines colormap length ML:
% default N: ML = 64
% N=1: ML = 127
% N=2: ML = 253
%
% mode: type of colormap, default mode = 'bow'
% mode='edf' - edf colormap, EDF.M is a subfunction
% mode = 'afm' (subfunction) close to that used
% by Molecular Imaging for AFM
% bow('afm',N) has linear intensity of red, therefore conveniently
% scales numerical data for color to value transformation.
% Other afm-intensities are also monotonical and defined analytically.
%Output:
% MAP = colormap
% DEMO
% shim(peaks(200));
% colormap bow;colorbar,shg
% colormap bow(1,'edf');colorbar,shg
% colormap bow('afm');colorbar,shg
%
%Vassili Pastushenko Sep. 2004 - Mar 2006
%==============================
ARGS=varargin;
LARG=length(ARGS);
if LARG>2
o_o
error('too many inputs')
end
switch LARG
case 0
mode='bow';
case 1
if ischar(ARGS{1})
mode=ARGS{1};
else
MUL=ARGS{1};
mode='bow';
end
case 2
if ischar(ARGS{1})
mode=ARGS{1};
MUL=ARGS{2};
else
mode=ARGS{2};
MUL=ARGS{1};
end
end
if ~ischar(mode)||length(mode)~=3
o_o
error('''edf'' or ''afm'' versions available')
end
if strcmp(mode,'afm')
MAP=afm;
end
if strcmp(mode,'edf')
MAP=edf;
end
if strcmp(mode,'bow')
MAP=[
0 0 0
0.42105 0 0.15789
0.63158 0 0.36842
0.84211 0 0.63158
1 0 1
0.78947 0 0.89474
0.63158 0 0.84211
0.42105 0 0.8
0.15789 0 0.87
0 0 1
0 0.31579 0.94737
0 0.47368 1
0 0.63158 1
0 0.78947 1
0 1 1
0 1 0.84211
0 0.94737 0.68421
0 0.84211 0.52632
0 0.78947 0.31579
0 0.87 0.10526
0 1 0
0.4 0.97 0
0.52632 1 0
0.73684 1 0
1 1 0
1 0.86957 0
1 0.69565 0
0.95652 0.52174 0
0.91304 0.34783 0
0.91304 0.17391 0
1 0 0
1 0.36842 0.31579
1 0.52632 0.47368
1 0.68421 0.63158
1 0.84211 0.78947
1 1 1
];
t=31:36;
AD=interp1(t,MAP(t,:),[32.5 34.5 36]);
MAP=[MAP([1,3:31],:);AD];
MAP=doub(MAP);
RED=MAP(14:20,:);
t=(0:6)/6;
IN=interp1(t,RED,(0:5)/5);
MAP=[MAP(1:13,:);IN;MAP(21:end,:)];
MAP(14:17,:)=[.3 0 .83; .2 0 .875;0.1 0.1 .935;0 0.2 1];
end
if exist('MUL')
MUL=round(abs(MUL));
if ~any(MUL==(1:2))
return
else
for i=1:MUL
MAP=doub(MAP);
end
end
end
function MAP=edf(MUL)
% edf-based COLORMAP
%Call:
% MAP=edf (64 colors)
% MAP =edf(anything): MAP=parfil(MAP), 127 colors
%Input:
% MUL: (default 0) defines number of colors(i.e. size(MAP,1)):
% MULK=0: 64
% MUL=1: 127
% MUL=2: 253
%Output:
% MAP = colormap
% Vassili Pastushenko 2005
%==============================
NAR=nargin;
if NAR
if ~isscalar(MUL)
o_o
error('Enter 1 or 2 in edf()')
end
MUL=round(abs(MUL));
if ~any(MUL==0:2)
o_o
error('Enter 1 or 2 in edf()')
end
else
MUL=0;
end
up=inline('(1:x)/(x+1)');
xw=(1:18);
lin=up(9);
%w=xw.*(18-xw).^2;w=1-w/max(w)*.5;
w=1-up(5)/3;ww=linspace(w(5),1,14);ww(1)=[];
w=[w,ww];
lw=[lin w];
%plot([lin,w],'.')
zers=zeros(1,18);
r=[lin,1,1-lin,zers,lw];
g=[zers,up(18),1,1-up(18),0,up(8)];
b=[lw,1-up(9),zers,up(10)];
MAP=[r; g; b]';
switch MUL
case 1
MAP=doub(MAP);
case 2
MAP=doub(doub(MAP));
end
function o_o(arg)
% sound warning
%Call:
%
%Input:
%
%Output:
%
% Vassili Pastushenko 2005
%==============================
if nargin
S=bip(1);
else
S=bip;
end
S=[S;zeros(1200,1);flipud(S)];
sound(S);
pause(.2);
function S=bip(pib)
%Sound bit
%Call:
% bip
%Input:
%
%Output:
%
%
%Vassili Pastushenko Jul 2004
%==============================
t=(1:.1:100)';
ONETWO=linspace(1,3,length(t))';
S=cos(t.*ONETWO)./(2+ONETWO);
if nargin>0
S=flipud(S);
end
if nargout<1
sound(S);
clear S;
end
function M=doub(MAP)
LMAP=size(MAP,1);
N=2*LMAP-1;
M=zeros(N,3);
M(1:2:N,:)=MAP;
M(2:2:N-1,:)=(MAP(1:LMAP-1,:)+MAP(2:LMAP,:))/2;
function M=afm
%lINEARLY SCALE RED COLOR INTENSITY
% Vassili Pastushenko March 2006
%==============================
r=linspace(.2,1,64)';
x=linspace(0,1,64)';
g=.7;g=((x+g)/(1+g)).^3;
b=((x+.3)/1.3).^10;
M=[r g b];