samer@1: function s=resamplex(fs,sigs,varargin) samer@37: opts=options(varargin{:}); samer@1: [s1,sx]=feval(rsx1(sigs{1},sigs(2:end))); samer@1: s=siglzcat(s1,sx); samer@1: samer@1: function f=rsx1(h,t), f=@()rsx3({h},rate(h),t); end samer@1: function [s1,sx]=rsx3(heads,fh,tails) samer@1: if ~isempty(tails) && rate(tails{1})==fh samer@1: [s1,sx]=rsx3([heads,tails(1)],fh,tails(2:end)); samer@1: else samer@1: s1=resample(fs,sigcat(heads{:}),opts); samer@1: if isempty(tails), sx=[]; samer@1: else sx=rsx1(tails{1},tails(2:end)); samer@1: end samer@1: end samer@1: end samer@1: end samer@1: samer@1: function s=resamplex1(fs,signals) samer@1: s=rsx1(signals); samer@1: samer@1: function s=rsx1(signals) samer@1: s=rsx3(signals(1),rate(signals{1}),signals(2:end)); samer@1: end samer@1: samer@1: function s=rsx3(heads,fh,tails) samer@1: if ~isempty(tails) && rate(tails{1})==fh samer@1: s=rsx3([heads,tails(1)],fh,tails(2:end)); samer@1: else samer@1: headsig=resample(fs,sigcat(heads{:}),opts); samer@1: if isempty(tails), s=headsig; samer@1: else s=siglzcat(headsig, @()deal(rsx1(tails),[])); samer@1: end samer@1: end samer@1: end samer@1: end samer@1: