wolffd@0: function display(s,varargin) wolffd@0: % SCALAR/DISPLAY display the values of a scalar object wolffd@0: disp(' '); wolffd@0: p = get(s,'Pos'); wolffd@0: v = get(s,'Data'); wolffd@0: m = get(s,'Mode'); wolffd@0: t = get(s,'Title'); wolffd@0: n = get(s,'Name'); wolffd@0: n2 = get(s,'Name2'); wolffd@0: u = get(s,'Unit'); wolffd@0: fp = get(s,'FramePos'); wolffd@0: pp = get(s,'PeakPos'); wolffd@0: leg = get(s,'Legend'); wolffd@0: legm = get(s,'MultiData'); wolffd@0: cha = get(s,'Channels'); wolffd@0: for i = 1:length(v) % For each audio file wolffd@0: vi = v{i}; wolffd@0: if isempty(m) wolffd@0: mi = []; wolffd@0: else wolffd@0: mi = m{i}; wolffd@0: end wolffd@0: fpi = fp{i}; wolffd@0: if isempty(pp) wolffd@0: ppi = []; wolffd@0: else wolffd@0: ppi = pp{i}; wolffd@0: end wolffd@0: wolffd@0: if isempty(vi) wolffd@0: disp(['The ',t,' related to file ',n{i},... wolffd@0: ' does not contain any data.']); wolffd@0: return wolffd@0: end wolffd@0: wolffd@0: %if iscell(ppi) wolffd@0: % ppi = ppi{i}; wolffd@0: %end wolffd@0: wolffd@0: if size(vi,1) == 1 && size(vi,2) == 1 && size(vi,3) == 1 && ... wolffd@0: (not(iscell(vi)) || (size(vi{1},1) == 1 && ... wolffd@0: size(vi{1},2) == 1 && size(vi{1},3) == 1)) && ... wolffd@0: (not(iscell(vi{1})) || (size(vi{1}{1},1) == 1 && ... wolffd@0: size(vi{1}{1},2) == 1 && size(vi{1},3) == 1)) wolffd@0: % Simple results, returned directly in the Command Window wolffd@0: wolffd@0: if iscell(vi) wolffd@0: vi = vi{1}; % There is only one segment, so let's look at it wolffd@0: if not(isempty(mi)) wolffd@0: mi = mi{1}; wolffd@0: end wolffd@0: end wolffd@0: if iscell(vi) wolffd@0: if size(vi,2) > 1 wolffd@0: error('BUG IN DISPLAY'); %test if this condition exists wolffd@0: end wolffd@0: vi = vi{1}; % There is only one frame, so let's look at it wolffd@0: if not(isempty(mi)) wolffd@0: mi = mi{1}; wolffd@0: end wolffd@0: end wolffd@0: if size(vi,1) == 1 && size(vi,3) == 1 wolffd@0: if isempty(leg) wolffd@0: r = num2str(vi); wolffd@0: else wolffd@0: r = leg{vi}; wolffd@0: end wolffd@0: if not(isempty(mi)) wolffd@0: u = legm{mi}; wolffd@0: end wolffd@0: if strcmp(u,'/1') wolffd@0: u = ''; wolffd@0: end wolffd@0: if strcmp(r,'NaN') wolffd@0: r = 'undefined'; wolffd@0: u = ''; wolffd@0: end wolffd@0: if not(isempty(n2)) wolffd@0: disp(['The ',t,' between files ',n{1},' and ',n2{i},... wolffd@0: ' is ',r,' ',u]); wolffd@0: else wolffd@0: disp(['The ',t,' related to file ',n{i},' is ',r,' ',u]); wolffd@0: end wolffd@0: else wolffd@0: vi = squeeze(vi); wolffd@0: disp(['The ',t,' related to file ',n{i},' are:']); wolffd@0: for j = 1:size(vi,1) wolffd@0: if isempty(leg) wolffd@0: r = num2str(vi(j)); wolffd@0: else wolffd@0: r = leg{vi(j)}; wolffd@0: end wolffd@0: if not(isempty(mi)) wolffd@0: u = legm{mi(j)}; wolffd@0: end wolffd@0: if strcmp(r,'NaN') wolffd@0: r = 'undefined'; wolffd@0: u = ''; wolffd@0: end wolffd@0: disp(['Value #',num2str(j),': ',r,' ',u]); wolffd@0: end wolffd@0: end wolffd@0: wolffd@0: else wolffd@0: %Graphical display wolffd@0: figure wolffd@0: wolffd@0: if not(iscell(vi)) wolffd@0: vi = {vi}; wolffd@0: fpi = {fpi}; wolffd@0: ppi = {ppi}; wolffd@0: end wolffd@0: wolffd@0: nl = size(vi{1},1); % Number of bins wolffd@0: nc = size(vi{1},2); % Number of frames wolffd@0: l = size(vi{1},3); % Number of channels wolffd@0: il = (1-0.15)/l; wolffd@0: wolffd@0: if nc==1 && l>1 % If one frame and several channels wolffd@0: xlab = 'Channels'; % channels will be represented in the x axis wolffd@0: l = 1; wolffd@0: else wolffd@0: xlab = 'Temporal location of events (in s.)'; wolffd@0: end wolffd@0: wolffd@0: varpeaks = 0; % Variable data size over frames? wolffd@0: if iscell(vi{1}) wolffd@0: for j = 1:length(vi) wolffd@0: for k = 1:l wolffd@0: for h = 1:size(vi{j},2) wolffd@0: if length(vi{j}{1,h,k}) > 1 wolffd@0: varpeaks = 1; wolffd@0: end wolffd@0: end wolffd@0: end wolffd@0: end wolffd@0: if not(varpeaks) wolffd@0: for j = 1:length(vi) wolffd@0: vj = zeros(size(vi{j})); wolffd@0: for k = 1:l wolffd@0: for h = 1:size(vi{j},2) wolffd@0: if isempty(vi{j}{1,h,k}) wolffd@0: vj(1,h,k) = NaN; wolffd@0: else wolffd@0: vj(1,h,k) = vi{j}{1,h,k}; wolffd@0: end wolffd@0: end wolffd@0: end wolffd@0: vi{j} = vj; wolffd@0: end wolffd@0: end wolffd@0: end wolffd@0: wolffd@0: if varpeaks % Peaks displayed with diamonds wolffd@0: diamond = 1; wolffd@0: set(gca,'NextPlot','replacechildren') wolffd@0: hold on wolffd@0: else wolffd@0: diamond = 0; wolffd@0: hold all wolffd@0: end wolffd@0: wolffd@0: for k = 1:l % For each channel wolffd@0: if l>1 wolffd@0: subplot('Position',[0.1 (k-1)*il+0.1 0.89 il-0.02]) wolffd@0: end wolffd@0: hold on wolffd@0: wolffd@0: vold = NaN; % Buffers used to link curves between segments wolffd@0: fold = NaN; wolffd@0: wolffd@0: for j = 1:length(vi) % for each segment wolffd@0: vj = vi{j}; wolffd@0: wolffd@0: fpj = fpi{j}; wolffd@0: if isempty(ppi) || length(ppi)1 && size(vj,2)>1 && minvi-Inf wolffd@0: % Display of the segment rectangle wolffd@0: rectangle('Position',[fpj(1),minvi,... wolffd@0: fpj(end)-fpj(1),maxvi-minvi]+1e-16,... wolffd@0: 'EdgeColor',num2col(j),'Curvature',.1,'LineWidth',1) wolffd@0: end wolffd@0: end wolffd@0: if k == l wolffd@0: title([t,', ',n{i}]) wolffd@0: end wolffd@0: if k == 1 wolffd@0: xlabel(xlab) wolffd@0: end wolffd@0: if not(isempty(leg)) wolffd@0: set(gca,'ytick',(1:length(leg))) wolffd@0: set(gca,'yticklabel',leg); wolffd@0: end wolffd@0: if l > 1 wolffd@0: pos = get(gca,'Position'); wolffd@0: hfig = axes('Position',[pos(1)-.05 pos(2)+pos(4)/2 .01 .01],... wolffd@0: 'Visible','off'); wolffd@0: text(0,0,num2str(cha{i}(k)),'FontSize',12,'Color','r') wolffd@0: end wolffd@0: end wolffd@0: if i == 1 wolffd@0: if strcmp(u,'/1') wolffd@0: u = ' (between 0 and 1)'; wolffd@0: elseif isempty(u) wolffd@0: u = ''; wolffd@0: else wolffd@0: u = [' (in ',u,')']; wolffd@0: end wolffd@0: end wolffd@0: ylabel(['coefficient value', u]) wolffd@0: if nl>1 wolffd@0: legnd = cell(nl,1); wolffd@0: for j = 1:nl wolffd@0: if isempty(p) wolffd@0: legnd{j} = num2str(j); wolffd@0: else wolffd@0: legnd{j} = p{i}{1}{j}; wolffd@0: end wolffd@0: end wolffd@0: legend(legnd,'Location','Best') wolffd@0: end wolffd@0: fig = get(0,'CurrentFigure'); wolffd@0: disp(['The ',t,' related to file ',n{i},... wolffd@0: ' is displayed in Figure ',num2str(fig),'.']); wolffd@0: if nargin>1 wolffd@0: saveas(fig,[n{i},varargin{1}]); wolffd@0: disp(['and is saved in file ',n{i},varargin{1}]); wolffd@0: end wolffd@0: end wolffd@0: end wolffd@0: disp(' '); wolffd@0: drawnow