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

📄 zigzagmtx2vector.asv

📁 zigZag scan implementation on matlab
💻 ASV
字号:
%--------------------------------------------------------------------------
%This function performs zigzag scan on a given 2D block.
% Input Arguments: inputMtx = 2D matrix, should e square matrix
% Outpuit Argunent: 1 D vector
%--------------------------------------------------------------------------

function outputVector = ZigzagMtx2Vector(inputMtx)

[M, N] = size(inputMtx);

if (M ~= N)
     outputVector = -1
    return
end

outputVector = zeros(N*N, 1);
r = 1; c = 1; inc_r = 0; inc_c = 0;

for n = 1:N*N
  display(n)
  display(r)
  display(c)
  outputVector(n) = inputMtx(r, c);
  %for firs element
  if (c == 1 && r ==1)
    inc_r = 0; inc_c = 1;

  %
  elseif (r == N && mod(c, 2) == 0)
    if(mod(N, 2) == 0)
        inc_r = -1; inc_c = 1;
    else
        inc_r = 0; inc_c = 1;
    end
  elseif (r == N && mod(c, 2) == 1)
    if(mod(N, 2) == 0)
        inc_r = 0; inc_c = 1;
    else
        inc_r = -1; inc_c = 1;
    end
  elseif (c == N && mod(r, 2) == 0)
    if(mod(N, 2) == 0)
        inc_r = 1; inc_c = 0;
    else
        inc_r = 1; inc_c = -1;
    end
  elseif (c == N && mod(r, 2) == 1)
    if(mod(N, 2) == 0)
        inc_r = 1; inc_c = -1;
    else
        inc_r = 1; inc_c = 0;
    end    

  
  elseif (r == 1 && mod(c, 2) == 1)
    inc_r = 0; inc_c = 1;
  elseif (r == 1 && mod(c, 2) == 0)
    inc_r = 1; inc_c = -1;
  elseif (c == 1 && mod(r, 2) == 0)
    inc_r = 1; inc_c = 0;
  elseif (c == 1 && mod(r, 2) == 1)
    inc_r = -1; inc_c = 1;
  end
  c = c + inc_c; r = r + inc_r;
end

display(outputVector);
end

⌨️ 快捷键说明

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