📄 mfbox_pre_denoise_run.m
字号:
function [X,mask,grid,timeline,params,private]=mfbox_pre_denoise_run(X,mask,grid,timeline,params,runflag,private)% denoise data%% Usage:% [X,mask,grid,timeline,params,private]=mfbox_pre_denoise_run(X,mask,grid,timeline,params,runflag,private)%% X - (NxT) data% or struct for mfbox_databackend('getdata',X,i),[],1);% mask - data mask (XxYxZ) with sum(mask(:))==N% grid - 3d positions (3xN) of the data values% timeline - timeline (1xT)% params - struct with% priority - evaluation priority% delaydim - delaydim% clusters - clusters% steps - steps% runflag - -1 get default parameter% 0 interactive ask parameters% 1 interactive ask parameters and run% 2 run% private - private data to enable plot updates while selecting (see also mfbox_databackend)%% Copyright by Peter Gruber and Fabian J. Theis% Signal Processing & Information Theory group% Institute of Biophysics, University of Regensburg, Germany% Homepage: http://research.fabian.theis.name% http://www-aglang.uni-regensburg.de%% This file is free software, subject to the % GNU GENERAL PUBLIC LICENSE, see gpl.txterror(nargchk(1,7,nargin));error(nargchk(1,6,nargout));if (isstruct(X)), s = [X.dim,X.timesteps];else, s = size(X);enddim = s(1:(end-1));if (length(dim)<2), dim = [1,dim]; endn = s(end);if (nargin<2), mask = true(dim); enddim = size(mask);if (length(dim)==length(s)), n = 1; endif (nargin<3), grid = mfbox_mkgrid(dim)'; endif (nargin<4), timeline = 0:(n-1); endif (nargin<5), params = []; endif (nargin<6), runflag = 1; endif (nargin<7), private = []; endparams = mfbox_checkparam(params,'pre','denoise', ... struct('priority',50,'delaydim',3,'clusters',10,'steps',2));if (abs(runflag-0.5)<1) if (exist('OCTAVE_HOME')~=5)% matlab [params,private] = mfbox_pre_denoiseg(X,mask,grid,timeline,params,runflag,private); elseif (exist('OCTAVE_HOME')==5) %octave [params,runflag] = mfbox_getparam(params,runflag,'mfbox_pre_denoiseg.py'); endendif (runflag>0 && isstruct(params)) if (runflag<3) prgs = mfbox_progress([],'title','Denoise','string','Denoising Data...', ... 'progress',[1,n+1]); drawnow; end if (isstruct(X)) rmask = false(size(mask)); ndim = zeros(1,ndims(mask)); for i=1:length(ndim) t = mask; for j=1:length(ndim), if (j~=i), t = max(t,[],j); end; end ref{i} = t(:)>0; ndim(i) = sum(ref{i}); end subsasgn(rmask,struct('type','()','subs',{ref}),true); oX = X; X = zeros(sum(mask(:)),n,'single'); grid=grid(:,mask); for i=1:n v = reshape(mfbox_databackend('getdata',oX,i),[],1); v = reshape(single(mfbox_denoise(reshape(v(rmask),ndim), ... params.delaydim,params.clusters, ... params.steps,'kmeans','pca','avg','var','mdl',32,1)),[],1); X(:,i) = v(mask(rmask)); if (runflag<3) mfbox_progress(prgs,'string','Denoising Data...','progress', ... [i+1,n+1]); end end else X = reshape(X,[],n); for i=1:n X(:,i) = reshape(single(mfbox_denoise({double(X(:,i)),grid}, ... params.delaydim,params.clusters,params.steps, ... 'kmeans','pca','avg','var','mdl',32,1)),[],1); if (runflag<3) mfbox_progress(prgs,'string','Denoising Data...','progress',[i+1,n+1]); end end end if (runflag<3), mfbox_progress(prgs,'close',[]); endend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -