1 %====================================================================== |
1 %====================================================================== |
2 % G E T E R R . M |
2 % G E T E R R . M |
3 % doc: Wed Jun 30 23:24:51 2004 |
3 % doc: Wed Jun 30 23:24:51 2004 |
4 % dlm: Fri Mar 5 15:48:05 2010 |
4 % dlm: Wed Jul 6 20:26:14 2011 |
5 % (c) 2004 ladcp@ |
5 % (c) 2004 ladcp@ |
6 % uE-Info: 91 17 NIL 0 0 72 2 2 8 NIL ofnI |
6 % uE-Info: 19 35 NIL 0 0 72 2 2 8 NIL ofnI |
7 %====================================================================== |
7 %====================================================================== |
8 |
8 |
9 % MODIFICATIONS BY ANT: |
9 % MODIFICATIONS BY ANT: |
10 % Jun 30, 2004: - BUG: bin numbering was wrong for asymmetric up/down |
10 % Jun 30, 2004: - BUG: bin numbering was wrong for asymmetric up/down |
11 % bin setup |
11 % bin setup |
12 % Jul 5, 2004: - added comments to debug depth mapping |
12 % Jul 5, 2004: - added comments to debug depth mapping |
13 % Jul 16, 2004: - added global variable skip_figure_3 to workaround |
13 % Jul 16, 2004: - added global variable skip_figure_3 to workaround |
14 % linux matlab bug |
14 % linux matlab bug |
15 % Oct 7, 2008: - extensively modified procfig 3 for version IX_6 |
15 % Oct 7, 2008: - extensively modified procfig 3 for version IX_6 |
16 |
16 % Jun 29, 2011: - removed skp_figure_3 |
17 function l=geterr(dr,d,iplot) |
17 % - added ps.fig3_colormap, ps.fig3_err_y_axis, ps.fig3_avgerr |
|
18 % Jun 30, 2011: - fixed fig.3 middle column plot title for median plot |
|
19 % Jul 6, 2001: - fixed plot title |
|
20 |
|
21 function l=geterr(ps,dr,d,iplot) |
18 % function l=geterr(dr,d,iplot) |
22 % function l=geterr(dr,d,iplot) |
19 % returns predicitons of U_ocean and |
23 % returns predicitons of U_ocean and |
20 % U_ctd on the raw data grid |
24 % U_ctd on the raw data grid |
21 % |
25 % |
22 % CTD velocity |
26 % CTD velocity |
23 if nargin<3, iplot=1; end |
27 if nargin<4, iplot=1; end |
|
28 |
|
29 ps=setdefv(ps,'fig3_colormap',2); % 1: jet 2: polar |
|
30 ps=setdefv(ps,'fig3_err_y_axis',2); % 1: bin# 2: depth |
|
31 ps=setdefv(ps,'fig3_avgerr',2'); % 1: mean 2: median |
24 |
32 |
25 tim=dr.tim; |
33 tim=dr.tim; |
26 tim(1)=-1e30; |
34 tim(1)=-1e30; |
27 tim(end)=1e30; |
35 tim(end)=1e30; |
28 |
36 |
100 disp([' sorry dz not constant loop ',int2str(length(ii)),' elements']) |
108 disp([' sorry dz not constant loop ',int2str(length(ii)),' elements']) |
101 for j=1:length(ii) |
109 for j=1:length(ii) |
102 iiz=ceil(iz(ii(j))); |
110 iiz=ceil(iz(ii(j))); |
103 iit=itm(ii(j)); |
111 iit=itm(ii(j)); |
104 l.u_oce(iiz,iit)=d.ru(ii(j))-l.ru_ctd(ii(j)); |
112 l.u_oce(iiz,iit)=d.ru(ii(j))-l.ru_ctd(ii(j)); |
|
113 l.u_err(iiz,iit)=d.ru(ii(j))-l.ru_oce(ii(j))-l.ru_ctd(ii(j)); |
105 l.v_oce(iiz,iit)=d.rv(ii(j))-l.rv_ctd(ii(j)); |
114 l.v_oce(iiz,iit)=d.rv(ii(j))-l.rv_ctd(ii(j)); |
|
115 l.v_err(iiz,iit)=d.rv(ii(j))-l.rv_oce(ii(j))-l.rv_ctd(ii(j)); |
106 l.w_oce(iiz,iit)=d.rw(ii(j))-l.rw_ctd(ii(j)); |
116 l.w_oce(iiz,iit)=d.rw(ii(j))-l.rw_ctd(ii(j)); |
107 l.w_oce_z(iiz,iit)=d.rw(ii(j))-l.rw_ctd_z(ii(j)); |
117 l.w_oce_z(iiz,iit)=d.rw(ii(j))-l.rw_ctd_z(ii(j)); |
108 if existf(l,'rw_ctd_p') |
118 if existf(l,'rw_ctd_p') |
109 l.w_oce_p(iiz,iit)=d.rw(ii(j))-l.rw_ctd_p(ii(j)); |
119 l.w_oce_p(iiz,iit)=d.rw(ii(j))-l.rw_ctd_p(ii(j)); |
110 end |
120 end |
118 l.u_adcp(iiz,iit)=d.ru(ii(j)); |
128 l.u_adcp(iiz,iit)=d.ru(ii(j)); |
119 l.v_adcp(iiz,iit)=d.rv(ii(j)); |
129 l.v_adcp(iiz,iit)=d.rv(ii(j)); |
120 end |
130 end |
121 else % uplooker and downlooker bin sizes are equal |
131 else % uplooker and downlooker bin sizes are equal |
122 l.u_oce=full(sparse(ceil(iz(ii)),itm(ii),d.ru(ii)-l.ru_ctd(ii))); |
132 l.u_oce=full(sparse(ceil(iz(ii)),itm(ii),d.ru(ii)-l.ru_ctd(ii))); |
|
133 l.u_err=full(sparse(ceil(iz(ii)),itm(ii),d.ru(ii)-l.ru_oce(ii)-l.ru_ctd(ii))); |
123 l.v_oce=full(sparse(ceil(iz(ii)),itm(ii),d.rv(ii)-l.rv_ctd(ii))); |
134 l.v_oce=full(sparse(ceil(iz(ii)),itm(ii),d.rv(ii)-l.rv_ctd(ii))); |
|
135 l.v_err=full(sparse(ceil(iz(ii)),itm(ii),d.rv(ii)-l.rv_oce(ii)-l.rv_ctd(ii))); |
124 l.w_oce=full(sparse(ceil(iz(ii)),itm(ii),d.rw(ii)-l.rw_ctd(ii))); |
136 l.w_oce=full(sparse(ceil(iz(ii)),itm(ii),d.rw(ii)-l.rw_ctd(ii))); |
125 l.w_oce_z=full(sparse(ceil(iz(ii)),itm(ii),d.rw(ii)-l.rw_ctd_z(ii))); |
137 l.w_oce_z=full(sparse(ceil(iz(ii)),itm(ii),d.rw(ii)-l.rw_ctd_z(ii))); |
126 if existf(l,'rw_ctd_p') |
138 if existf(l,'rw_ctd_p') |
127 l.w_oce_p=full(sparse(ceil(iz(ii)),itm(ii),d.rw(ii)-l.rw_ctd_p(ii))); |
139 l.w_oce_p=full(sparse(ceil(iz(ii)),itm(ii),d.rw(ii)-l.rw_ctd_p(ii))); |
128 end |
140 end |
175 % blank out shallow/deep estimates |
187 % blank out shallow/deep estimates |
176 ii=find(iz<0 | iz>max(dr.z)/dz); |
188 ii=find(iz<0 | iz>max(dr.z)/dz); |
177 d.ru(ii)=nan; |
189 d.ru(ii)=nan; |
178 d.rv(ii)=nan; |
190 d.rv(ii)=nan; |
179 |
191 |
180 global skip_figure_3; |
|
181 if isempty(skip_figure_3) |
|
182 |
|
183 figure(3) |
192 figure(3) |
184 clf |
193 clf |
185 orient landscape |
194 orient landscape |
186 |
195 |
187 colormap(polarmap(21)); |
196 |
188 |
197 if ps.fig3_colormap == 2 |
189 subplot(231) |
198 colormap(polarmap(21)); |
|
199 else |
|
200 col=jet(128); |
|
201 col=([[1 1 1]; col]); |
|
202 colormap(col) |
|
203 end |
|
204 |
190 ib=1:size(l.ru_err,1); |
205 ib=1:size(l.ru_err,1); |
191 ib=ib-length(d.izu); |
206 ib=ib-length(d.izu); |
192 tmp = l.ru_err; tmp(isnan(tmp)) = 0; |
207 |
193 pcolorn(l.itv2,-ib,tmp), shading flat |
208 subplot(231) |
|
209 if ps.fig3_err_y_axis == 2 |
|
210 if ps.fig3_colormap == 2 |
|
211 tmp = l.u_err; tmp(isnan(tmp)) = 0; |
|
212 pcolorn(l.itv,-l.z_oce,tmp), shading flat |
|
213 else |
|
214 pcolorn(l.itv,-l.z_oce,l.u_err), shading flat |
|
215 end |
|
216 ylabel('Depth [m]'); |
|
217 else |
|
218 if ps.fig3_colormap == 2 |
|
219 tmp = l.ru_err; tmp(isnan(tmp)) = 0; |
|
220 pcolorn(l.itv2,-ib,tmp), shading flat |
|
221 else |
|
222 pcolorn(l.itv2,-ib,l.ru_err), shading flat |
|
223 end |
|
224 ylabel('Bin #'); |
|
225 end |
194 fac=meannan(l.u_oce_s); |
226 fac=meannan(l.u_oce_s); |
195 fac=max([fac,1e-2]); |
227 fac=max([fac,1e-2]); |
196 caxis([-3 3]*fac) |
228 caxis([-3 3]*fac) |
197 colorbar |
229 colorbar |
198 xlabel('Super Ensemble #'); |
230 xlabel('Super Ensemble #'); |
199 ylabel('Bin #'); |
|
200 title(sprintf('U-err std: %.03f',meannan(stdnan(l.ru_err')))) |
231 title(sprintf('U-err std: %.03f',meannan(stdnan(l.ru_err')))) |
201 |
232 |
202 subplot(232) |
233 subplot(232) |
203 plot(meannan(l.ru_err')',-ib) |
234 if ps.fig3_avgerr == 2 |
|
235 plot(medianan(l.ru_err')',-ib) |
|
236 title('median(U-err)') |
|
237 else |
|
238 plot(meannan(l.ru_err')',-ib) |
|
239 title('mean(U-err)') |
|
240 end |
204 set(gca,'XLim',[-0.05 0.05]); |
241 set(gca,'XLim',[-0.05 0.05]); |
205 set(gca,'Ylim',[-ib(end) -ib(1)]); |
242 set(gca,'Ylim',[-ib(end) -ib(1)]); |
206 set(gca,'Xtick',[-0.04:0.02:0.04]); |
243 set(gca,'Xtick',[-0.04:0.02:0.04]); |
207 grid |
244 grid |
208 xlabel('Residual [m/s]'); |
245 xlabel('Residual [m/s]'); |
209 ylabel('Bin #'); |
246 ylabel('Bin #'); |
210 title('mean(U-err)') |
|
211 |
247 |
212 subplot(233) |
248 subplot(233) |
213 tmp = l.u_oce; tmp(isnan(tmp)) = 0; |
249 if ps.fig3_colormap == 2 |
214 pcolorn(l.itv,-l.z_oce,tmp), shading flat |
250 tmp = l.u_oce; tmp(isnan(tmp)) = 0; |
|
251 pcolorn(l.itv,-l.z_oce,tmp), shading flat |
|
252 else |
|
253 pcolorn(l.itv,-l.z_oce,l.u_oce), shading flat |
|
254 end |
215 ca = caxis; |
255 ca = caxis; |
216 if abs(ca(1)) > abs(ca(2)) |
256 if abs(ca(1)) > abs(ca(2)) |
217 caxis([-abs(ca(1)) abs(ca(1))]); |
257 caxis([-abs(ca(1)) abs(ca(1))]); |
218 else |
258 else |
219 caxis([-abs(ca(2)) abs(ca(2))]); |
259 caxis([-abs(ca(2)) abs(ca(2))]); |
229 xlabel('Ensemble #'); |
269 xlabel('Ensemble #'); |
230 ylabel('Depth [m]'); |
270 ylabel('Depth [m]'); |
231 title('U_{oce}') |
271 title('U_{oce}') |
232 |
272 |
233 subplot(234) |
273 subplot(234) |
234 tmp = l.rv_err; tmp(isnan(tmp)) = 0; |
274 if ps.fig3_err_y_axis == 2 |
235 pcolorn(l.itv2,-ib,tmp), shading flat |
275 if ps.fig3_colormap == 2 |
|
276 tmp = l.v_err; tmp(isnan(tmp)) = 0; |
|
277 pcolorn(l.itv,-l.z_oce,tmp), shading flat |
|
278 else |
|
279 pcolorn(l.itv,-l.z_oce,l.v_err), shading flat |
|
280 end |
|
281 ylabel('Depth [m]'); |
|
282 else |
|
283 if ps.fig3_colormap == 2 |
|
284 tmp = l.rv_err; tmp(isnan(tmp)) = 0; |
|
285 pcolorn(l.itv2,-ib,tmp), shading flat |
|
286 else |
|
287 pcolorn(l.itv2,-ib,l.rv_err), shading flat |
|
288 end |
|
289 ylabel('Bin #'); |
|
290 end |
236 fac=meannan(l.v_oce_s); |
291 fac=meannan(l.v_oce_s); |
237 fac=max([fac,1e-2]); |
292 fac=max([fac,1e-2]); |
238 caxis([-3 3]*fac) |
293 caxis([-3 3]*fac) |
239 colorbar |
294 colorbar |
240 xlabel('Super Ensemble #'); |
295 xlabel('Super Ensemble #'); |
241 ylabel('Bin #'); |
296 ylabel('Bin #'); |
242 title(sprintf('V-err std: %.03f',meannan(stdnan(l.rv_err')))) |
297 title(sprintf('V-err std: %.03f',meannan(stdnan(l.rv_err')))) |
243 |
298 |
244 subplot(235) |
299 subplot(235) |
245 plot(meannan(l.rv_err')',-ib) |
300 if ps.fig3_avgerr == 2 |
|
301 plot(medianan(l.rv_err')',-ib) |
|
302 title('median(V-err)') |
|
303 else |
|
304 plot(meannan(l.rv_err')',-ib) |
|
305 title('mean(V-err)') |
|
306 end |
246 set(gca,'XLim',[-0.05 0.05]); |
307 set(gca,'XLim',[-0.05 0.05]); |
247 set(gca,'Ylim',[-ib(end) -ib(1)]); |
308 set(gca,'Ylim',[-ib(end) -ib(1)]); |
248 set(gca,'Xtick',[-0.04:0.02:0.04]); |
309 set(gca,'Xtick',[-0.04:0.02:0.04]); |
249 grid |
310 grid |
250 xlabel('Residual [m/s]'); |
311 xlabel('Residual [m/s]'); |
251 ylabel('Bin #'); |
312 ylabel('Bin #'); |
252 title('mean(V-err)') |
|
253 |
313 |
254 subplot(236) |
314 subplot(236) |
255 tmp = l.v_oce; tmp(isnan(tmp)) = 0; |
315 if ps.fig3_colormap == 2 |
256 pcolorn(l.itv,-l.z_oce,tmp), shading flat |
316 tmp = l.v_oce; tmp(isnan(tmp)) = 0; |
|
317 pcolorn(l.itv,-l.z_oce,tmp), shading flat |
|
318 else |
|
319 pcolorn(l.itv,-l.z_oce,l.v_oce), shading flat |
|
320 end |
257 ca = caxis; |
321 ca = caxis; |
258 if abs(ca(1)) > abs(ca(2)) |
322 if abs(ca(1)) > abs(ca(2)) |
259 caxis([-abs(ca(1)) abs(ca(1))]); |
323 caxis([-abs(ca(1)) abs(ca(1))]); |
260 else |
324 else |
261 caxis([-abs(ca(2)) abs(ca(2))]); |
325 caxis([-abs(ca(2)) abs(ca(2))]); |