Daniel@0: function c = mirtimes(a,b) Daniel@0: Daniel@0: d = get(a,'Data'); Daniel@0: e = get(b,'Data'); Daniel@0: f = cell(1,length(d)); Daniel@0: p = get(a,'Pos'); Daniel@0: q = get(b,'Pos'); Daniel@0: r = cell(1,length(d)); Daniel@0: l = get(a,'Name'); Daniel@0: m = get(b,'Name'); Daniel@0: n = cell(1,length(l)); Daniel@0: for i = 1:length(d) Daniel@0: f{i} = cell(1,length(d{i})); Daniel@0: for j = 1:length(d{i}) Daniel@0: pij = p{i}{j}(:,1,1); Daniel@0: qij = q{i}{j}(:,1,1); Daniel@0: pq = pij; %union(pij,qij); Daniel@0: % The sampling of the product is the sampling of the first Daniel@0: % operand. Daniel@0: dij = d{i}{j}; %interp1(pij,d{i}{j},pq); Daniel@0: eij = interp1(qij,e{i}{j},pq); Daniel@0: dij = max(dij,0); Daniel@0: eij = max(eij,0); Daniel@0: eij = eij./repmat(max(eij)+1e-16,[size(eij,1),1,1,1]); Daniel@0: % The second operand of mirtimes is scaled from 0 to 1. Daniel@0: % In this way, the range of value of the first operand is kept. Daniel@0: f{i}{j} = dij.*eij; Daniel@0: [x y] = find(isnan(f{i}{j})); Daniel@0: x = unique(x); Daniel@0: pq(x) = []; Daniel@0: f{i}{j}(x,:) = []; Daniel@0: r{i}{j} = repmat(pq,[1 size(p{i}{j},2) size(p{i}{j},3)]); Daniel@0: end Daniel@0: if strcmpi(l{i},m{i}) Daniel@0: n{i} = l{i}; Daniel@0: else Daniel@0: n{i} = [l{i} '*' m{i}]; Daniel@0: end Daniel@0: end Daniel@0: c = set(a,'Pos',r,'Data',f,'Name',n,... Daniel@0: 'Title',[get(a,'Title') ' * ' get(b,'Title')]);