⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 grad.m

📁 signal procesing toolbox
💻 M
字号:
function [fx,fy,fz] = grad(M, options)% grad - gradient, forward differences%%   [gx,gy] = grad(M, options);% or%   g = grad(M, options);%%   options.bound = 'per' or 'sym'%   options.order = 1 (backward differences)%                 = 2 (centered differences)%%   Works also for 3D array.%   Assme that the function is evenly sampled with sampling step 1.%%   See also: div.%%   Copyright (c) Gabriel Peyreoptions.null = 0;bound = getoptions(options, 'bound', 'sym');order = getoptions(options, 'order', 1);% retrieve number of dimensionsnbdims = 2;if size(M,1)==1 || size(M,2)==1    nbdims = 1;endif size(M,1)>1 && size(M,2)>1 && size(M,3)>1    nbdims = 3;endif strcmp(bound, 'sym')        if order==1        fx = M([2:end end],:,:)-M;    else        fx = ( M([2:end end],:,:)-M([1 1:end-1],:,:) )/2;        % boundary        fx(1,:,:) = M(2,:,:)-M(1,:,:);        fx(end,:,:) = M(end,:,:)-M(end-1,:,:);    end    if nbdims>=2        if order==1            fy = M(:,[2:end end],:)-M;        else            fy = ( M(:,[2:end end],:)-M(:,[1 1:end-1],:) )/2;            % boundary            fy(:,1,:) = M(:,2,:)-M(:,1,:);            fy(:,end,:) = M(:,end,:)-M(:,end-1,:);        end    end    if nbdims>=3        if order==1            fz = M(:,:,[2:end end])-M;        else            fz = ( M(:,:,[2:end end])-M(:,:,[1 1:end-1]) )/2;            % boundary            fz(:,:,1) = M(:,:,2)-M(:,:,1);            fz(:,:,end) = M(:,:,end)-M(:,:,end-1);        end    endelse    if order==1        fx = M([2:end 1],:,:)-M;    else        fx = ( M([2:end 1],:,:)-M([end 1:end-1],:,:) )/2;    end    if nbdims>=2        if order==1            fy = M(:,[2:end 1],:)-M;        else            fy = ( M(:,[2:end 1],:)-M(:,[end 1:end-1],:) )/2;        end    end    if nbdims>=3        if order==1            fz = M(:,:,[2:end 1])-M;        else            fz = ( M(:,:,[2:end 1])-M(:,:,[end 1:end-1]) )/2;        end    endendif nargout==1    if nbdims==2        fx = cat(3,fx,fy);    elseif nbdims==3        fx = cat(4,fx,fy,fz);    endend

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -