tomwalters@0
|
1 % method of class @signal
|
tomwalters@0
|
2 %
|
tomwalters@0
|
3 % INPUT VALUES:
|
tomwalters@0
|
4 %
|
tomwalters@0
|
5 % RETURN VALUE:
|
tomwalters@0
|
6 %
|
bleeck@3
|
7 % This external file is included as part of the 'aim-mat' distribution package
|
bleeck@3
|
8 % (c) 2011, University of Southampton
|
bleeck@3
|
9 % Maintained by Stefan Bleeck (bleeck@gmail.com)
|
bleeck@3
|
10 % download of current version is on the soundsoftware site:
|
bleeck@3
|
11 % http://code.soundsoftware.ac.uk/projects/aimmat
|
bleeck@3
|
12 % documentation and everything is on http://www.acousticscale.org
|
tomwalters@0
|
13
|
tomwalters@0
|
14 function rethandle=fill(sig,border,stil)
|
tomwalters@0
|
15 % usage: handle=fill(sig,border,stil)
|
tomwalters@0
|
16 % works as plot, but fills the content with the color of the signal
|
tomwalters@0
|
17
|
tomwalters@0
|
18
|
tomwalters@0
|
19
|
tomwalters@0
|
20 if nargin<3
|
tomwalters@0
|
21 stil='b';
|
tomwalters@0
|
22 end
|
tomwalters@0
|
23
|
tomwalters@0
|
24
|
tomwalters@0
|
25 % if we are dealing with milliseconds (very often), then the units are in
|
tomwalters@0
|
26 % ms as well
|
tomwalters@0
|
27 if strfind(sig.unit_x,'(ms)')>0
|
tomwalters@0
|
28 multiplier=1000;
|
tomwalters@0
|
29 else
|
tomwalters@0
|
30 multiplier=1;
|
tomwalters@0
|
31 end
|
tomwalters@0
|
32
|
tomwalters@0
|
33
|
tomwalters@0
|
34
|
tomwalters@0
|
35 sr=getsr(sig);
|
tomwalters@0
|
36 durationbin=size(sig.werte,1);
|
tomwalters@0
|
37 duration=durationbin/sr;
|
tomwalters@0
|
38 if nargin<2
|
tomwalters@0
|
39 t1=1;
|
tomwalters@0
|
40 t2=durationbin;
|
tomwalters@0
|
41 border=[t1 t2 min(sig.werte(t1:t2)) max(sig.werte(t1:t2))];
|
tomwalters@0
|
42 end
|
tomwalters@0
|
43
|
tomwalters@0
|
44 if isstruct(border) || isempty(border)
|
tomwalters@0
|
45 options=border;
|
tomwalters@0
|
46 t1=1;
|
tomwalters@0
|
47 t2=durationbin;
|
tomwalters@0
|
48 border=[t1 t2 min(sig.werte(t1:t2)) max(sig.werte(t1:t2))];
|
tomwalters@0
|
49 else
|
tomwalters@0
|
50 options=[];
|
tomwalters@0
|
51 if ischar(border)
|
tomwalters@0
|
52 stil=border;
|
tomwalters@0
|
53 t1=1;
|
tomwalters@0
|
54 t2=durationbin;
|
tomwalters@0
|
55 border=[t1 t2 min(sig.werte(t1:t2)) max(sig.werte(t1:t2))];
|
tomwalters@0
|
56 else
|
tomwalters@0
|
57 if nargin <2
|
tomwalters@0
|
58 t1=1;
|
tomwalters@0
|
59 t2=durationbin;
|
tomwalters@0
|
60 border=[t1 t2 min(sig.werte(t1:t2)) max(sig.werte(t1:t2))];
|
tomwalters@0
|
61 else
|
tomwalters@0
|
62 t1=border(1);
|
tomwalters@0
|
63 t2=border(2);
|
tomwalters@0
|
64 x1=time2bin(sig,t1);
|
tomwalters@0
|
65 x2=time2bin(sig,t2);
|
tomwalters@0
|
66 nr=size(border,2);
|
tomwalters@0
|
67 if nr==2 % wenn nur die x-Werte angegeben werden
|
tomwalters@0
|
68 border=[x1 x2 min(sig.werte(x1+1:x2)) max(sig.werte(x1+1:x2))];
|
tomwalters@0
|
69 else
|
tomwalters@0
|
70 border(1)=x1;
|
tomwalters@0
|
71 border(2)=x2;
|
tomwalters@0
|
72 end
|
tomwalters@0
|
73 end
|
tomwalters@0
|
74 end
|
tomwalters@0
|
75 end
|
tomwalters@0
|
76
|
tomwalters@0
|
77 if ~isfield(options,'is_log');
|
tomwalters@0
|
78 is_log=0;
|
tomwalters@0
|
79 else
|
tomwalters@0
|
80 is_log=options.is_log;
|
tomwalters@0
|
81 end
|
tomwalters@0
|
82
|
tomwalters@0
|
83 if isfield(options,'minimum_time');
|
tomwalters@0
|
84 border(1)=time2bin(sig,options.minimum_time);
|
tomwalters@0
|
85 minimum_time=options.minimum_time;
|
tomwalters@0
|
86 else
|
tomwalters@0
|
87 minimum_time=bin2time(sig,border(1));
|
tomwalters@0
|
88 end
|
tomwalters@0
|
89
|
tomwalters@0
|
90 if isfield(options,'maximum_time');
|
tomwalters@0
|
91 border(2)=time2bin(sig,options.maximum_time);
|
tomwalters@0
|
92 maximum_time=options.maximum_time;
|
tomwalters@0
|
93 else
|
tomwalters@0
|
94 maximum_time=bin2time(sig,border(2));
|
tomwalters@0
|
95 end
|
tomwalters@0
|
96
|
tomwalters@0
|
97
|
tomwalters@0
|
98 % if the time scale is reversed (time from left to right)
|
tomwalters@0
|
99 if isfield(options,'time_reversed');
|
tomwalters@0
|
100 time_reversed=options.time_reversed;
|
tomwalters@0
|
101 else
|
tomwalters@0
|
102 time_reversed=0;
|
tomwalters@0
|
103 end
|
tomwalters@0
|
104
|
tomwalters@0
|
105 start_time=getminimumtime(sig);
|
tomwalters@0
|
106
|
tomwalters@0
|
107 min_x_screen=border(1); % einer wird abgezogen damit wir bei Null beginnen, nicht beim ersten bin, was blöde aussieht
|
tomwalters@0
|
108 max_x_screen=border(2);
|
tomwalters@0
|
109 minshowy=border(3);
|
tomwalters@0
|
110 maxy=border(4);
|
tomwalters@0
|
111
|
tomwalters@0
|
112 xvals=getxvalues(sig);
|
tomwalters@0
|
113
|
tomwalters@0
|
114
|
tomwalters@0
|
115 xvals=xvals.*multiplier;
|
tomwalters@0
|
116 yvals=getvalues(sig);
|
tomwalters@0
|
117
|
tomwalters@0
|
118
|
tomwalters@0
|
119 % fill up the corners
|
tomwalters@0
|
120 yvals=[0 yvals' 0];
|
tomwalters@0
|
121 tstart=getminimumtime(sig);
|
tomwalters@0
|
122 tstop=getmaximumtime(sig);
|
tomwalters@0
|
123 % xvals=[tstart:1/sr*multiplier:tstop*multiplier+1/sr*multiplier];
|
tomwalters@0
|
124 xvals=[tstart*multiplier:1/sr*multiplier:tstop*multiplier+1/sr*multiplier];
|
tomwalters@0
|
125 % xvals=1:length(yvals);
|
tomwalters@0
|
126
|
tomwalters@0
|
127 % this is the plotting command:
|
tomwalters@0
|
128 handle=fill(xvals,yvals,stil,'facecolor',stil,'EdgeColor',stil);
|
tomwalters@0
|
129
|
tomwalters@0
|
130 if time_reversed
|
tomwalters@0
|
131 set(gca,'XDir','reverse') % turn them around, because the higher values shell end on the right
|
tomwalters@0
|
132 else
|
tomwalters@0
|
133 set(gca,'XDir','normal') % normale ausrichtung
|
tomwalters@0
|
134 end
|
tomwalters@0
|
135
|
tomwalters@0
|
136 if is_log
|
tomwalters@0
|
137 set(gca,'XScale','log')
|
tomwalters@0
|
138 t=minimum_time*multiplier;
|
tomwalters@0
|
139 tix=[t 2*t 4*t 8*t 16*t 32*t 64*t 128*t 256*t 512*t 1024*t];
|
tomwalters@0
|
140 if ~isempty(sig.x_tick_labels)
|
tomwalters@0
|
141 ti=sig.x_tick_labels;
|
tomwalters@0
|
142 set(gca,'XTicklabel',ti);
|
tomwalters@0
|
143 end
|
tomwalters@0
|
144 set(gca,'XTick',tix);
|
tomwalters@0
|
145 else % its linear
|
tomwalters@0
|
146 set(gca,'XScale','linear')
|
tomwalters@0
|
147 end
|
tomwalters@0
|
148
|
tomwalters@0
|
149 miny=border(3);
|
tomwalters@0
|
150 maxy=border(4);
|
tomwalters@0
|
151 y=[miny maxy];
|
tomwalters@0
|
152 if miny==maxy
|
tomwalters@0
|
153 maxy=miny+1;
|
tomwalters@0
|
154 miny=miny-1;
|
tomwalters@0
|
155 end
|
tomwalters@0
|
156 if isnan(miny) || isnan(maxy)
|
tomwalters@0
|
157 else
|
tomwalters@0
|
158 axis([minimum_time*multiplier maximum_time*multiplier miny*1.05 maxy*1.05]);
|
tomwalters@0
|
159 end
|
tomwalters@0
|
160
|
tomwalters@0
|
161 xlabel(sig.unit_x);
|
tomwalters@0
|
162 ylabel(sig.unit_y);
|
tomwalters@0
|
163 title(sig.name,'Interpreter','none');
|
tomwalters@0
|
164
|
tomwalters@0
|
165 if nargout==1
|
tomwalters@0
|
166 rethandle=handle;
|
tomwalters@0
|
167 end
|
tomwalters@0
|
168
|
tomwalters@0
|
169 return
|