diamond.m

来自「MATLAB Code for Optimal Quincunx Filter 」· M 代码 · 共 54 行

M
54
字号
function H = diamond(N0,N1)
% calculate the impulse response of an ideal diamond (lowpass) filter of size N0xN1 
% i.e., 1 inside the diamond region, the 0 elsewhere
% Copyright (c) 2006 Yi Chen

if mod(N0,2) == 1 && mod(N1,2) == 1
    H = zeros(N0, N1);
    if N0 <= N1
        for i = 1:(N0+1)/2;
            j = (N1+1)/2-(i-1):(N1+1)/2+(i-1);
            H(i,j)=1;
            H(N0-i+1,j)=1;
        end
    else
        for j = 1:(N1+1)/2;
            i = (N0+1)/2-(j-1):(N0+1)/2+(j-1);
            H(i,j)=1;
            H(i,N1-j+1)=1;
        end
    end
    
elseif mod(N0,2) == 1 && mod(N1,2) == 0
    H = zeros(N0, N1);
    if N0 < N1
        for i = 1:(N0+1)/2;
            j = N1/2-(i-1):N1/2+i;
            H(i,j)=1;
            H(N0-i+1,j)=1;
        end
    else
        for j = 1:N1/2;
            i = (N0+1)/2-(j-1):(N0+1)/2+(j-1);
            H(i,j)=1;
            H(i,N1-j+1)=1;
        end
    end
elseif mod(N0,2) == 0 && mod(N1,2) == 1
    Nt = N0; N0 = N1; N1 = Nt;
    H = zeros(N0, N1);
    if N0 < N1
        for i = 1:(N0+1)/2;
            j = N1/2-(i-1):N1/2+i;
            H(i,j)=1;
            H(N0-i+1,j)=1;
        end
    else
        for j = 1:N1/2;
            i = (N0+1)/2-(j-1):(N0+1)/2+(j-1);
            H(i,j)=1;
            H(i,N1-j+1)=1;
        end
    end
    H = H';
end

⌨️ 快捷键说明

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