Mercurial > hg > smallbox
annotate util/ksvd utils/remove_dc.m @ 104:e2ce05e21a55
Merge
author | vemiya <valentin.emiya@inria.fr> |
---|---|
date | Tue, 12 Apr 2011 16:11:41 +0200 |
parents | c3eca463202d |
children |
rev | line source |
---|---|
idamnjanovic@70 | 1 function [y,dc] = remove_dc(x,columns) |
idamnjanovic@70 | 2 %REMOVE_DC Remove DC channel from signals. |
idamnjanovic@70 | 3 % [Y,DC] = REMOVE_DC(X) removes the DC channel (i.e. the mean) from the |
idamnjanovic@70 | 4 % specified (possibly multi-dimensional) signal X. Y is the DC-free |
idamnjanovic@70 | 5 % signal and is the same size as X. DC is a scalar containing the mean of |
idamnjanovic@70 | 6 % the signal X. |
idamnjanovic@70 | 7 % |
idamnjanovic@70 | 8 % [Y,DC] = REMOVE_DC(X,'columns') where X is a 2D matrix, treats the |
idamnjanovic@70 | 9 % columns of X as a set of 1D signals, removing the DC channel from each |
idamnjanovic@70 | 10 % one individually. Y is the same size as X and contains the DC-free |
idamnjanovic@70 | 11 % signals. DC is a row vector of length size(X,2) containing the means of |
idamnjanovic@70 | 12 % the signals in X. |
idamnjanovic@70 | 13 % |
idamnjanovic@70 | 14 % See also ADD_DC. |
idamnjanovic@70 | 15 |
idamnjanovic@70 | 16 |
idamnjanovic@70 | 17 if (nargin==2 && strcmpi(columns,'columns')), columns = 1; |
idamnjanovic@70 | 18 else columns = 0; |
idamnjanovic@70 | 19 end |
idamnjanovic@70 | 20 |
idamnjanovic@70 | 21 if (columns) |
idamnjanovic@70 | 22 dc = mean(x); |
idamnjanovic@70 | 23 y = addtocols(x,-dc); |
idamnjanovic@70 | 24 else |
idamnjanovic@70 | 25 if (ndims(x)==2) % temporary, will remove in future |
idamnjanovic@70 | 26 warning('Treating 2D matrix X as a single signal and not each column individually'); |
idamnjanovic@70 | 27 end |
idamnjanovic@70 | 28 dc = mean(x(:)); |
idamnjanovic@70 | 29 y = x-dc; |
idamnjanovic@70 | 30 end |
idamnjanovic@70 | 31 |