Develop
2016.10.15 12:24

[matlab] ZigZag-Scanning (2-D Array)

Views 1980 Votes 0 Comment 0
Atachment
Attachment '12'
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print

[MatLab] ZigZag-Scanning (2-D Array)


# ZigZag-Scanning 과제 내용

주어진 2차원 배열을 다음 그림과 같이 지그재그 형태로 탐색하여 1차원 배열의 결과물을 만드는 MatLab 코드를 만들어야 함.


zigzag.png

[이미지] https://en.wikipedia.org/wiki/JPEG

[참고] https://en.wikipedia.org/wiki/File:JPEG_ZigZag.svg



# MatLab 실행 영상



# 구현 방법

다음과 같은 2차원(3x3) 배열 Q가 있다고 할 때,


no_01.png



1. 원본 Q 배열의 좌/우를 뒤집는다. (fliplr() 함수 사용)

결과는 다음 afterFliplr1 과 같다.


no_02.png



2. 위의 1번의 결과 배열에서 대각 배열을 만든다. (spdiags() 함수 사용)

결과는 다음 afterSpdiags 와 같다.


no_03.png



3. 위의 2번의 결과 배열의 좌/우를 뒤집는다. (fliplr() 함수 사용)

결과는 다음 afterFliplr2 와 같다.


no_04.png



4. 위의 3번의 결과 배열의 홀수번째 컬럼의 위/아래를 뒤집는다. (flipud()함수 사용)

결과는 다음 afterFlipud 과 같다.


no_05.png



5. 위의 5번의 결과 배열에서 0을 제거하고 1차원 배열로 출력한다.

결과는 다음 orderNonZero 와 같다.


no_06.png


6. 위의 5번의 결과는 Q 배열을 탐색하는 인덱스의 순서이다.

MatLab에서 배열 인덱스는 1부터 시작하므로, 

원본 Q 배열을 orderNonZero 인덱스의 순서대로 탐색하여 Zig-Zag 1차원 배열을 만들 수 있다.

결과는 다음 ZigZag 와 같다.


no_07.png



# MatLab 소스코드 (Ver.1)

clear all; clc;

%% Test elements #1
Q = [1 2 3;
     4 5 6;
     7 8 9];
%% Test elements #2
Q = [01 02 06 07;
     03 05 08 13;
     04 09 12 14;
     10 11 15 16];
 
%% Init
tmp = reshape(1:numel(Q), size(Q));

%% Flip left/right -> Diagonal matrix -> Flip left/right again
afterFliplr1 = fliplr( tmp );
afterSpdiags = spdiags( afterFliplr1 );
afterFliplr2 = fliplr( afterSpdiags );

%% Flip up/down(odd columns)
afterFlipudOdd = afterFliplr2;
afterFlipudOdd(:,1:2:end) = flipud( afterFliplr2(:,1:2:end) );

%% Remove zero
orderNonZero = afterFlipudOdd;
orderNonZero( orderNonZero==0 ) = [];

%% Get elements (by zigzag-order)
ZigZag = Q(orderNonZero)

%keyboard



# MatLab 소스코드 (Ver.2)

clear all;
clc;

%% ZigZag %%

%% Test array1
Q = [1 2 3;
     4 5 6;
     7 8 9];
%% Test array2
Q = [01 02 06 07;
     03 05 08 13;
     04 09 12 14;
     10 11 15 16];

%% Init
tmp = reshape(1:numel(Q), size(Q));

%% Flip left/right -> Diagonal matrix -> Flip left/right again
order = fliplr( spdiags( fliplr(tmp) ) );

%% Flip up/down(odd columns)
order(:,1:2:end) = flipud( order(:,1:2:end) );

%% Remove zero
order(order==0) = [];

%% Get elements (by zigzag-order)
ZigZag = Q(order)

keyboard


# 관련 함수 설명

reshape.png


fliplr.png


spdiags.png


flipud.png



TAG •
?

  1. DDay Memo 1.9.4 소스코드

    Date2015.10.03 CategoryDevelop Byhooni Views0
    Read More
  2. [ios] How to set up clang formatter

    Date2015.09.17 CategoryDevelop Byhooni Views1355
    Read More
  3. [ios] SBCampanion App 초안

    Date2015.09.16 CategoryDevelop Byhooni Views651
    Read More
  4. [mysql] CPU 점유율이 높을 때 확인할 내용

    Date2015.08.26 CategoryDatabase Byhooni Views6643
    Read More
  5. [git] 쉬운 버전관리 Git 설명

    Date2015.08.18 CategoryDevelop Byhooni Views870
    Read More
  6. [ios] 오브젝티브C→스위프트, 코드 변환 손쉽게

    Date2015.08.07 CategoryDevelop Byhooni Views955
    Read More
  7. [ios] Objective-C Types & Storage Capacity

    Date2015.07.22 CategoryDevelop Byhooni Views1151
    Read More
  8. [ppt] Macro for board game 발표자료 (@Team Study 2013.01.18)

    Date2015.07.22 CategoryPPT Byhooni Views1266
    Read More
  9. [ppt] Information Security 발표 자료 (@Team Study 2012.11.15)

    Date2015.07.22 CategoryPPT Byhooni Views876
    Read More
  10. [ppt] Equation Solving 발표 자료 (@AjaxUI랩 밋업데이 2012.02.28)

    Date2015.07.22 CategoryPPT Byhooni Views904
    Read More
  11. [ios] AES256 알고리즘을 이용해 데이터 암호화/복호화 방법

    Date2015.07.21 CategoryDevelop Byhooni Views4099
    Read More
  12. 맥 OS X 에서 스크린 화면 캡쳐 단축키 (Mac Print Screen)

    Date2015.07.21 CategorySystem/OS Byhooni Views1898
    Read More
  13. [ios] NSData to NSString (NSString to NSData)

    Date2015.07.21 CategoryDevelop Byhooni Views632
    Read More
  14. [ios] WWDC 2015 샘플 소스 코드 통합파일

    Date2015.07.20 CategoryDevelop Byhooni Views657
    Read More
  15. [android] N-Puzzle 게임

    Date2015.07.09 CategoryDevelop Byhooni Views863
    Read More
  16. [windows] 윈도우 사용자 계정 로그인 암호 분실, 암호 변경하는 방법

    Date2015.07.09 CategorySystem/OS Byhooni Views21356
    Read More
Board Pagination Prev 1 ... 10 11 12 13 14 ... 74 Next
/ 74