IRootLab
An Open-Source MATLAB toolbox for vibrational biospectroscopy
fcon_mea_pick.m
Go to the documentation of this file.
1 %> @brief Picks region area, region peak, or value at fixed x-position
3  properties
4  %> ='f'. What to pick:
5  %> @arg <code>'f'</code> Value at fixed x-position
6  %> @arg <code>'m'</code> Maximum within range
7  %> @arg <code>'a'</code> Area within range
8  %>
9  %> 'm' and 'a' types require two elements in fcon_mea_pick::v
10  type = 'f';
11 
12  %> location/range vector, given in x-axis units
13  v = [];
14  end;
15 
16  methods
17  function o = fcon_mea_pick(o)
18  o.classtitle = 'Various';
19  o.flag_params = 1;
20  end;
21 
22  function o = illustrate(o, data, obsidx)
23  global SCALE;
24 
25 
26  vidx = v_x2ind(o.v, data.fea_x);
27 
28  % Validates vector
29  if o.type == 'f' || o.type == 'm'
30  if numel(o.v) < 2
31  irerror('Please supply a 2-element wavenumbers vector!');
32  end;
33 
34  if vidx(1) > vidx(2)
35  irerror('It seems that the vector elements are in inverted order!');
36  end;
37  else
38  if numel(o.v) < 1
39  irerror('Wavenumber vector is empty!');
40  end;
41  end;
42 
43 
44  y = data.X(obsidx(1, 1), :);
45  x = data.fea_x;
46  plot_curve_pieces(x, y, 'Color', [0, 0, 0], 'LineWidth', scaled(2));
47  hold on;
48 
49 
50 
51 
52 
53  switch o.type
54  case 'f'
55  plot(x(vidx(1, 1))*[1, 1], [0, y(vidx(1, 1))], 'r', 'LineWidth', scaled(2));
56  draw_peaks(x, y, vidx(1, 1), 1);
57 
58  case 'm'
59  vidx2 = vidx(1):vidx(2);
60  plot(x(vidx(1, 1))*[1, 1], [0, max(y)], 'r--', 'LineWidth', scaled(2));
61  plot(x(vidx(1, end))*[1, 1], [0, max(y)], 'r--', 'LineWidth', scaled(2));
62  [vv, ii] = max(y(vidx2));
63  draw_peaks(x, y, vidx2(ii), 1);
64 
65  case 'a'
66  vidx2 = vidx(1):vidx(2);
67  x_ = x(vidx2);
68  y_ = y(vidx2);
69  fill([x_, x_(end), x_(1)], [y_, 0, 0], [1, .5, .5], 'LineWidth', scaled(2), 'EdgeColor', [1, 0, 0]);
70  end;
71 
72  format_xaxis(data);
73  format_frank();
74  make_box();
75  end;
76  end;
77 
78  methods(Access=protected)
79  function data = do_use(o, data)
80 
81  vidx = v_x2ind(o.v, data.fea_x);
82 
83  switch o.type
84  case 'f'
85  data.X = data.X(:, vidx);
86  data.fea_x = data.fea_x(vidx);
87  case 'm'
88  data.X = max(data.X(:, vidx(1):vidx(2)), [], 2);
89  data.fea_x = 1;
90  data.fea_names = {'Maximum'};
91  data.xname = '';
92  data.xunit = '';
93  case 'a'
94  data.X = sum(data.X(:, vidx(1):vidx(2)), 2);
95  data.fea_x = 1;
96  data.fea_names = {'Area'};
97  data.xname = '';
98  data.xunit = '';
99  end;
100  end;
101  end;
102 end
function draw_peaks(in x, in y, in indexes, in flag_text, in color, in marker, in markersize)
Measure: calculates one scalar per dataset row.
Definition: fcon_mea.m:2
function make_box()
function v_x2ind(in v, in x)
function irerror(in s)
Picks region area, region peak, or value at fixed x-position.
Definition: fcon_mea_pick.m:2
function plot_curve_pieces(in x, in y, in varargin)
function scaled(in i)
Property v
location/range vector, given in x-axis units
Definition: fcon_mea_pick.m:17
function format_frank(in F, in scale, in handles)
function format_xaxis(in par)