Mercurial > hg > octave-image
changeset 26:eff1b969ad75
Use varargin
author | pkienzle |
---|---|
date | Sat, 02 Nov 2002 10:36:38 +0000 |
parents | 26035de12d53 |
children | e6818dcad4c6 |
files | colfilt.m impad.m medfilt2.m ordfilt2.m |
diffstat | 4 files changed, 17 insertions(+), 30 deletions(-) [+] |
line wrap: on
line diff
--- a/colfilt.m +++ b/colfilt.m @@ -24,7 +24,7 @@ ## The present version does not handle 'distinct' ## This software is granted to the public domain -function B = colfilt(A,filtsize,blksize,blktype,f,...) +function B = colfilt(A,filtsize,blksize,blktype,f,varargin) [m,n]=size(A); r = filtsize(1); @@ -56,7 +56,7 @@ for i = 0:m/mblock-1 for j = 0:n/nblock-1 idxA(:) = padA(idx + (i*mblock + padm*j*nblock)); - tmp(:) = feval(f,idxA,all_va_args); + tmp(:) = feval(f,idxA,varargin{:}); B(1+i*mblock:(i+1)*mblock, 1+j*nblock:(j+1)*nblock) = tmp; end end @@ -71,7 +71,7 @@ idxA = zeros(r*c,m*n); idxA(:) = padA(:)(idx); B = zeros(size(A)); - B(:) = feval(f,idxA,all_va_args); + B(:) = feval(f,idxA,varargin{:}); case 'old-distinct' # processes the whole matrix at a time if (r*floor(m/r) != m || c*floor(n/c) != n) error("colfilt expected blocks to exactly fill A"); @@ -82,7 +82,7 @@ idxA = zeros(r*c,m*n/r/c); idxA(:) = A(:)(idx); B = zeros(prod(size(A)),1); - B(idx) = feval(f,idxA,all_va_args); + B(idx) = feval(f,idxA,varargin{:}); B = reshape(B,size(A)); endswitch endfunction
--- a/impad.m +++ b/impad.m @@ -56,27 +56,21 @@ ## A nice test matrix for padding: ## A = 10*[1:5]' * ones(1,5) + ones(5,1)*[1:5] -function retval = impad(A, xpad, ypad, ...) +function retval = impad(A, xpad, ypad, padding, const) empty_list_elements_ok_save = empty_list_elements_ok; unwind_protect -padding = "zeros"; -const = 1; -va_start(); -if(nargin > 3) - padding = va_arg(); - if(nargin > 4) - const = va_arg(); - endif -endif +if nargin < 4, padding = "zeros"; endif +if nargin < 5, const = 1; endif +if isscalar(xpad), xpad(2) = xpad(1); endif +if isscalar(ypad), ypad(2) = ypad(1); endif origx = size(A,2); origy = size(A,1); retx = origx + xpad(1) + xpad(2); rety = origy + ypad(1) + ypad(2); -emptywarn = empty_list_elements_ok; empty_list_elements_ok = 1; if(strcmp(padding, "zeros"))
--- a/medfilt2.m +++ b/medfilt2.m @@ -34,15 +34,13 @@ ## Created: 5.5.2000 ## Keywords: image processing median filtering -function retval = medfilt2(A, ...) +function retval = medfilt2(A, varargin) padding = "zeros"; domain = logical(ones(3,3)); -nargin = nargin - 1; -va_start(); -while(nargin--) - a = va_arg(); +for i=1:length(varargin) + a = varargin{i}; if(isstr(a)) padding = a; elseif(is_vector(a) && size(a) == [1, 2]) @@ -50,7 +48,7 @@ elseif(is_matrix(a)) domain = logical(a); endif -endwhile +endfor n = sum(sum(domain)); if((n - 2*floor(n/2)) == 0) % n even - more work @@ -64,6 +62,3 @@ endif endfunction - - -
--- a/ordfilt2.m +++ b/ordfilt2.m @@ -39,20 +39,18 @@ ## Created: 5.5.2000 ## Keywords: image processing filtering -function retval = ordfilt2(A, nth, domain, ...) +function retval = ordfilt2(A, nth, domain, varargin) S = zeros(size(domain)); padding = "zeros"; -nargin = nargin - 3; -va_start(); -while(nargin--) - a = va_arg(); +for i=1:length(varargin) + a = varargin{:}; if(isstr(a)) padding = a; elseif(is_matrix(a) && size(a) == size(domain)) S = a; endif -endwhile +endfor if(!islogical(domain)) % warning("domain should be a boolean matrix, converting");