| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 | 
							- function [cmap] = cmaplevel(levels, colors, cmin, cmax, num_colors)
 
- %CMAPLEVEL Create colormap from specified levels and colors
 
- %
 
- % Description:
 
- %   Pixel value within [Lv(k) Lv(k+1)) assigned to RGB color(k,:)
 
- % Usage:
 
- %   [cmap] = cmaplevel(levels, colors, cmin, cmax, num_colors)
 
- % Input:
 
- %   c = 1x3 float of RGB values between 
 
- % Output:
 
- %   str = html color code format, e.g. color(23, 47, 83)
 
- %
 
- % Xiaohu Mo
 
- % TODO input checking
 
- % TODO specify number of color levels
 
- %%
 
- if cmin > cmax
 
-     cmap = [];
 
-     return;
 
- elseif cmin == cmax % clevels will be NaN
 
-     [tilde, ind] = max(levels);
 
-     cmap = repmat(colors(ind, :), [num_colors, 1]);
 
-     return;
 
- end
 
- if ~isvector(levels)
 
-     cmap = [];
 
-     return;
 
- end
 
- %% sort the levels and colors
 
- t = horzcat(levels(:), colors);
 
- t = sortrows(t, 1);
 
- levels = t(:, 1);
 
- colors = t(:, 2:4);
 
- %% indices of the absolute levels on colormap
 
- clevels = fix((levels-cmin)/(cmax-cmin)*num_colors) + 1;
 
- %% create cmap
 
- cmap = zeros(num_colors, 3);
 
- % add the last level below cmin if exist
 
- indices = find(clevels < 1, 1, 'last');
 
- % all useful levels
 
- indices = [indices find(clevels >= 1 & clevels <= num_colors)];
 
- % fill the colormap
 
- for ind = indices:numel(levels)
 
-     cmap(clevels(ind):num_colors, :) = repmat(colors(ind, :), [num_colors-clevels(ind)+1 1]);
 
- end
 
 
  |