diff toolboxes/MIRtoolbox1.3.2/MIRToolbox/@mirdesign/mirdesign.m @ 0:e9a9cd732c1e tip

first hg version after svn
author wolffd
date Tue, 10 Feb 2015 15:05:51 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/toolboxes/MIRtoolbox1.3.2/MIRToolbox/@mirdesign/mirdesign.m	Tue Feb 10 15:05:51 2015 +0000
@@ -0,0 +1,129 @@
+function d = mirdesign(orig,argin,option,postoption,specif,type); %,nout)
+
+if isa(orig,'mirdesign')
+    d.method = orig.method;
+    d.argin = orig.argin;
+    d.option = orig.option;
+    d.postoption = orig.postoption;
+    d.specif = orig.specif;
+    d.type = orig.type;
+    d.frame = orig.frame;
+    d.segment = orig.segment;
+    d.chunkdecomposed = orig.chunkdecomposed;
+    d.size = orig.size;
+    d.file = orig.file;
+    d.channel = orig.channel;
+    d.sampling = orig.sampling;
+    d.resampling = orig.resampling;
+    d.nochunk = orig.nochunk;
+    d.ascending = orig.ascending;
+    d.overlap = orig.overlap;
+    d.separate = orig.separate;
+    d.chunk = orig.chunk;
+    d.eval = orig.eval;
+    d.interchunk = orig.interchunk;
+    d.acrosschunks = orig.acrosschunks;
+    d.ready = orig.ready;
+    d.struct = orig.struct;
+    d.stored = orig.stored;
+    d.index = orig.index;
+    d.tmpfile = orig.tmpfile;
+    d.tmpof = orig.tmpof;
+else
+    d.method = orig;
+    d.argin = argin;
+    d.option = option;
+    d.postoption = postoption;
+    d.specif = specif;
+    d.type = type;
+    if ischar(argin)
+        d.frame = {};
+        d.segment = {};
+        d.chunkdecomposed = 0;
+        d.size = {};
+        d.file = '';
+        d.channel = [];
+        d.sampling = 0;
+        d.resampling = 0;
+        d.nochunk = 0;
+        if not(isempty(orig)) && ...
+                strcmp(func2str(orig),'mirenvelope') && d.option.zp == 2
+                d.ascending = 0;
+        else
+            d.ascending = 1;
+        end
+        d.overlap = 0;
+        d.separate = 0;
+    else
+        if iscell(argin)
+            argin = argin{1};
+        end
+        if (strcmp(func2str(orig),'mirspectrum') && d.option.alongbands) ...
+            || (isfield(specif,'nochunk') && specif.nochunk)
+            d.frame = [];
+            if isfield(d.specif,'eachchunk')
+                d.specif = rmfield(d.specif,'eachchunk');
+                d.specif = rmfield(d.specif,'combinechunk');
+            end
+        else
+            d.frame = argin.frame;
+            if not(isempty(d.frame))
+                if isfield(d.specif,'extensive') 
+                    d.frame.dontchunk = 1;
+                    % Some frame-decomposed extractor should not be evaluated
+                    % chunk after chunk because the whole result is needed for
+                    % subsequent computations.
+                elseif isfield(d.specif,'chunkframebefore')
+                    d.frame.chunkbefore = 1;
+                end
+            end
+        end
+        d.segment = argin.segment;
+        d.chunkdecomposed = argin.chunkdecomposed;
+        d.size = argin.size;
+        d.file = argin.file;
+        d.channel = argin.channel;
+        d.sampling = argin.sampling;
+        d.resampling = argin.resampling;
+        if (isfield(specif,'nochunk') && specif.nochunk) 
+            d.nochunk = 1; % was previously 2
+        elseif not(isempty(argin.stored))
+            % a temporary variable will be already computed.
+            d.nochunk = 2; % Flag to indicate that no chunk should be 
+                           % performed. Temporary variables cannot for the 
+                           % moment be dispatched to dependent variables 
+                           % chunk by chunk, but only once the whole 
+                           % variable has been computed.
+        else
+            d.nochunk = argin.nochunk;
+        end
+        if strcmp(func2str(orig),'mirenvelope')
+            if d.option.zp == 2
+                d.ascending = not(isempty(d.segment));
+            else
+                d.ascending = 1;
+            end
+        else
+            d.ascending = argin.ascending;
+        end
+        d.overlap = argin.overlap;
+        d.separate = argin.separate;
+    end
+    d.chunk = [];
+    d.eval = 0;
+    d.interchunk = [];   % Data that can be passed between successive chunks during the main process.
+    d.acrosschunks = []; % Data that can be accumulated among chunks during the beforechunk process.
+    d.ready = 0;
+    d.struct = [];
+    d.stored = [];
+    d.index = NaN;
+    if not(isempty(orig)) && strcmp(func2str(orig),'mirenvelope') && ...
+                d.option.zp == 2 && isempty(d.segment)
+        % Triggers the use of temporary file for the mirenvelope computation
+        d.tmpfile.fid = 0;
+    else
+        d.tmpfile = [];
+    end
+    d.tmpof = [];
+end
+d = class(d,'mirdesign');
\ No newline at end of file