배열(Array)

 

- 배열(Array)은 같은 자료형(type)의 변수들을 순서가 있는 데이터로 저장할 수 있는 자료구조이다.

 

- 배열은 객체이기 때문에 초기화한 배열의 크기만큼 메모리 공간을 할당받는다.

 

- 인덱스(index)라고 하는 원소번호를 통해 저장된 데이터를 관리하며, 인덱스를 이용하여 배열에 있는 원소들에 접근한다.

 

- 배열의 크기를 초기화하면 수정할 수 없기 때문에 사용하지 않는 배열 공간 때문에 메모리 공간이 낭비되기도 한다.

 

- 배열의 첫 번째 인덱스 번호는 0번부터 시작한다.

 

- 배열의 원소는 변수이며, 기초형 및 참조형 모두 저장할 수 있다.

 

 

 

배열의 생성

 

- 자바에서 배열은 객체이므로 다른 객체들을 선언하는 것과 유사하다.

 

- 자바에서는 초기화된 변수로 배열의 크기를 지정할 수 있다. (C에서는 안됨)

 

- 배열의 크기는 임의로 정할 수 있으나, 선언 시 배열의 크기를 정해선 안 된다.

< 잘못된 예시 >

int matrix[5];  (X)

int matrix[5] = { 1, 2, 3, 4, 5 };  (X)

 

- 선언 후 생성 (두 가지 방법 중 편한 대로 하면 됨.)


int[] numbers; 또는 int numbers[]; //정수형 배열 선언

numbers = new int[5]; //배열 객체 생성 



- 선언과 동시에 생성 후 초기화


int[] numbers = new int[5]; //정수 타입의 데이터가 들어가며, 5개의 원소를 가지는 배열


numbers = { 10, 20, 30, 40, 50 }; 


float[] fs = new float[20]; //실수 타입의 데이터가 들어가며, 20개의 원소를 가지는 배열

char[] cs = new char[30]; //문자 타입의 데이터가 들어가며, 30개의 원소를 가지는 배열  



- 선언과 동시에 초기화 : 배열을 따로 생성하지 않아도 초기화한 데이터의 개수만큼 배열의 크기가 자동으로 정해진다. 


int[] numbers = { 10, 20, 30 };  



- 배열의 크기는 (자료형 바이트 * 원소의 개수) 이다. 5개의 원소를 가진 정수형 배열은 4byte * 5 = 20byte의 메모리 공간이 할당된 것이다.

 

 

 

for-each 루프 (향상된 for)

 

- 형식

for (자료형 변수명 : 배열이름)

{

    //반복 문장들

}

 

- 해당 배열의 인덱스 0번부터 마지막 배열 원소까지 차례대로 왼쪽 변수에 복사해서 for문을 실행한다.

 

- 예시 


int[] numbers = new int[5];

 

for(int value : numbers)

{

    System.out.println("value : " + value);

} 


 

- 결과1 (정수 타입의 데이터는 초기화하지 않으면 디폴트값으로 0이 저장된다.); 


value : 0

value : 0

value : 0

value : 0

value : 0  



- 결과2 ( numbers = { 10, 20, 30, 40, 50 };을 추가했을 때) 


value : 10

value : 20

value : 30

value : 40

value : 50 



 

 

배열의 활용


[ 위 1차원 배열, 아래 2차원 배열 ]

 

- 매개변수로 배열 원소가 전달되면 복사된 값이 호출한 메소드에서 사용된다.

 

- 매개변수로 배열 전체가 전달되면 배열도 객체이기 때문에 해당 배열의 주소를 가리키는 참조값이 전달된다.

 

- 배열의 원소가 참조형 변수일 경우, 배열의 원소에는 주소를 카리키는 참조값이 저장되어 있다. 예를 들어, 객체들의 배열일 경우 배열의 원소에는 객체가 있는 것이 아니라 객체를 가리키는 객체의 주소가 들어있는 것이다.

 

- 2차원 배열 : 같은 행의 원소들을 중괄호로 묶는다. 


int[][] numbers = new int[3][5];

numbers = { {1, 2, 3, 4, 5}, {10, 20, 30, 40, 50}, {100, 200, 300, 400, 500} }; 



또는

  


int[][] numbers = { {1, 2, 3, 4, 5}, {10, 20, 30, 40, 50}, {100, 200, 300, 400, 500} }; 


 

< int[][] numbers = new int[n][m]; 일 때

 n개의 1차원 배열이 m개의 1차원 배열을 가리키는 형태 >



- 다차원 배열 : 2차원 배열과 유사하며, 주로 회사의 매출액을 지역별 부서별 월별로 분류하는 것과 같은 상황에서 사용한다.


int[][][] numbers = new int[2][3][4]; 


 







 

 

다중화 (Multiplexing)

 

- 다수의 신호들을 단일 데이터 링크로 동시에 전송하게 하는 기술

 

- 다중화기 (Mulitplexer, MUX) : 다수의 스트림들을 하나의 스트림으로 결합하는 기기

 

- 다중복구기 (Demultiplexer, DEMUX) : 하나의 스트림을 다수의 스트림으로 분리하는 기기

 

- 채널 (Channel) : 주어진 라인(stream)들을 전송하는 단일 링크의 일부로, 하나의 링크에 여러 채널이 존재한다.

 

 

- 유형

  • 주파수 분할 다중화 방식 (Frequency Division Multiplexing, FDM)
  • 파장 분할 다중화 방식 (Wavelength Division Multiplexing, WDM)
  • 시 분할 다중화 방식 (Time Division Multiplexing, TDM)

 

 

 

주파수 분할 다중화 방식 (Frequency Division Multiplexing, FDM)

 


- 각 송신측에서 생성된 신호들(Input lines)이 입력 신호에 맞게 다른 반송 주파수를 변조한 후, 변조된 신호들이 링크에 전송될 수 있는 하나의 복합 신호로 결합되어진다.

 

- 쉽게 말해, 하나의 복합 신호라는 것은 링크에서 이용 가능한 총 대역폭을 겹치지 않게 주파수 하부 대역으로 분리시켜서 각각의 개별 신호를 담아 동시에 전송하는 것을 뜻한다. 따라서 아날로그 다중화 방식이다.

 

- 가드 밴드 (Guard Band) : 채널간 혼선, 간섭을 막기 위한 대역으로, 지정된 채널들 사이에 이용되지 않는 좁은 주파수 대역


 

[ 다중화기 ]

[ 다중복구기 ]

저렇게 각기 다른 채널의 대역폭(신호)을 겹치지 않게 하나로 합쳐서 단일링크에 전송 ]

 

- 예제1)  각각 100kHz의 대역폭을 가진 5개의 채널이 함께 전송되어진다. 이 때, 링크에서 대역폭이 겹치지 않게 10kHz의 가드밴드가 요구되어진다면, 링크의 최소 대역폭은 얼마인가?


- 예제2) 채널당 자료 전송율이 1Mbps 4개의 채널이 1MHz인 하나의 위성채널을 이용하여 전송된다. 적절한 구성을 표현하라.


- FDM의 아날로그 계층

 

[ 5개의 채널을 묶어서 Group,

10개의 Group을 묶어서 Super group

6개의 Super group을 묶어서 Master group

또 다시 이 그룹을 묶어서 Jumbo group 이라고 표현한다. ]


 

 

 

파장 분할 다중화 방식 (Wavelength Division Multiplexing, WDM)

 

- 다른 파장(다른 색)을 사용하여 여러 반송파 신호를 단일 광섬유에 적용하는 방식으로 아날로그 다중화 방식이다.

 

- 동축 케이블의 높은 데이터 수용력을 이용하므로 주파수가 높고 속도가 빠르다.

 

- 주파수 분할 다중화(FDM)이 일반적으로 주파수에 적용되는 반면, 파장 분할 다중화(WDM)은 일반적으로 빛 반송파에 적용된다. 파장과 주파수는 직접적인 반비례 관계를 통해 연관되어 있기 때문에, 파장 분할 다중화와 주파수 분할 다중화는 같은 개념을 설명한다.

 



 

 

시 분할 다중화 방식 (Time Division Multiplexing, TDM)

 

- 하나의 링크를 시간 단위(Time Slot)로 나누어 여러 채널이 링크의 대역폭을 공유하게 하는 방식으로, 디지털 다중화 방식이다.

 


- 유형

  • 동기식 시분할 다중화 방식 (Synchronous TDM)
  • 통계적 시분할 다중화 방식 (Statistical TDM)

 

 

 

동기식 시분할 다중화 방식 (Synchronous TDM)

 

- 각각의 입력 채널(신호)들에게 정확하게 동일한 타임 슬롯을 할당하는 방식이다.

 

- Frame : 각 채널들로부터 할당한 타임 슬롯이 모인 것, 완전한 사이클(Cycle) 또는 주기

 

[링크에 있는 신호들은 입력 신호보다 시간이 3분의 1로 줄었기 때문에 속도가 3배 빠르다.]


- 예제1) 위의 그림 속 각 입력 신호가 1kbps의 속도를 가진다. 만약 시간(time slot)1bit가 다중화된다면,


Q1) 하나의 입력신호에서 시간 슬롯은 얼마인가?


Q2) 링크의 하나의 시간 슬롯(output time slot)은 얼마인가?

 

Q3) 하나의 프레임 주기는 얼마인가?

 

- Data Rate Management ( 자료 전송율 관리) : 정확하게 동일한 시간 슬롯을 부여하기 위함.

  • 다치 다중화 (Multilevel Multiplexing) : 입력 라인(채널)에서 소수의 라인 속도가 다수의 라인보다 작을 경우 같은 속도로 맞추기 위해 소수의 자료 전송율을 합치는 방식이다.

  • 다중 슬롯 다중화 (Multiple-Slot Allocation) : 소수의 라인 속도가 다수의 라인 속도보다 클 경우, 다수의 라인 속도에 맞추기 위해 해당 자료전송율을 분할하는 방식이다.


  • 비트 채우기 (Pulse Stuffing) : 여러 입력 라인의 속도가 배수로 나누어 떨어지지 않아서 위의 두가지 방식을 사용할 수 없을 경우에 사용하는 방식이다. 다수의 입력 라인의 속도에 비해 조금 낮은 하나의 입력라인이 있다면 dummy bits를 추가하여 가장 높은 자료전송율에 맞춘다.

 


- 프레임 동기화 (Frame Synchronizing) : 프레임의 시작점에 싱크 비트를 추가하여 다중화기 및 다중복구기를 동기화시킨다.

 

 

- 디지털 신호 서비스 (Digital Signal Service) : 잡음이 진폭에 영향을 주기 때문에 음성을 디지털 정보로 변환하는 것이다. 이를 위해 전화망 사업자들이 디지털 계층이나 디지털 신호의 계층을 통해 TDM을 구현한다.

 

- 초당 샘플링 수 = 초당 프레임 수

 

- 샘플링당 샘플 수 = 프레임당 타임슬롯 수

 

[ 1개의 오디오 채널 - 펄스 부호 변조(PCM) 방식 ]


- 설명 : 1개의 오디오 채널을 예시로 들면, 사람의 음성은 0~4kHz의 범위의 대역폭을 가지며이므로 최소 1초에 8000번의 Sampling을 한다는 의미이다. 위의 경우 샘플링당 1바이트(8비트)이므로

따라서 위의 맨 왼쪽 그림에서 64kbps값이 나온 것이다. 각 채널이 64kbp24개의 채널이 TDM 방식으로 그룹화되어 모이면 두 번째 1,544 Mbps가 된다. 이 때, 초당 샘플링이 8000개 되므로, 프레임 수는 8000개이다. 각 프레임당 1비트씩 프레이밍 비트가 추가되면 전체적으로 1bit * 8000 = 8000비트가 오버헤드 된다. 따라서 64kbps * 24(channel) + 8kbps = 1,544 Mbps가 나오는 것이다. 참고로 1바이트씩 샘플링 했으므로 타임슬롯당 1바이트이다.

 

- T Lines : DS를 구현하기 위해 이용된다.

 


 

 

통계적 시분할 다중화 방식 (Statistical TDM)

 

- 기존의 시분할 다중화 방식에서는 해당 시간에 데이터가 전송되지 않더라도 채널이 할당되기 때문에 링크의 비효율적인 사용이 있었다. , 링크의 수용력(Capacity)를 낭비할 수 있기 때문에 해결 하고자 통계적 시분할 다중화 방식을 사용한다.

 

- 타임 슬롯들이 동적으로 할당되어 진다.

 

- 프레임당 타임 슬롯 수 < 입력 라인의 수 (기존에는 같았다.)

 

- 링크의 수용력 < 입력 채널의 수용력의 합 (위의 것보다 더 정화한 표현이다.)

 

- 다중화기가 라운드 로빈 방식으로 각각의 입력 라인을 확인한다.

 

- 각각의 타임슬롯은 데이터를 목적지 주소로 잘 옮겨야 한다.

 

- 싱크 비트가 없다.

 

- 동시에 많이 보낼 것을 대비하여 다중화기에 큐가 있다.

 

첫 번째 그림은 동기식 시분할 다중화방식인데프레임당 슬롯수가 최대 5개이다.

    두 번째 그림은 통계적 시분할 다중화방식인데프레임당 슬롯수가 최대 3개이다. ]


- 대역 확산 방식 (Spread Spectrum, SS)

  • 초기에는 군사용으로 사용한 전자파를 이용하여 무선통신에서 적에게 도청되지 않고, 적의 방해전파에도 강한 통신방식을 구현하기 위함이었다. 현재는 이동통신환경(무선통신)에서 자주 쓰이고 있으며, 외부의 전자파 잡음에 강하도록 특정 신호의 주파수 대역(spectrum)을 넓히는 기술을 뜻한다.
  • Spreading code를 이용하여 대역폭을 확산시킨다.
  • 대역폭의 효율성이 뛰어나며, 노이즈에 강하고, 보안성을 갖추고 있다.

 

 

- 주파수 도약 방식 (Frequency Hopping Spread Spectrum, FHSS)

  • 출발지 신호(입력 신호)에 의해 변조된 N개의 다른 반송 주파수를 이용하는 방식으로, 유효한 통신 대역폭(링크)N개의 주파수 슬롯으로 분할하여 전송할 때가 되면 일부 유효 슬롯을 통해 정보를 전송한다.
  • 처리 과정
  1. 랜덤 패턴 생성기에서 매 주파수에 머무는 시간마다 k-bit 패턴을 생성한다.
  2. 주파수 테이블이 시간 별로 사용될 주파수를 찾기 위해 그 패턴을 이용한다.
  3. 그리고 해당 주파수를 주파수 신시사이저(Synthesizer)로 넘긴다.
  4. 주파수 신시사이저가 해당 주파수의 반송파를 생성한다. 그리고 입력신호에 맞게 반송파가 변조된다.

[전체적인 과정]


[ 세부적인 모습 ]


[ 주파수 테이블에 따른 k-bit 패턴 ]


사용자들끼리 주파수가 겹치지 않도록 다른 패턴으로 링크가 공유되어진다. ]


[ FDM vs FHSS 가 대역폭을 공유하는 모습 ]


- 직접 확산 방식 (Direct Sequence Spread Spectrum, DSSS)

  • 입력 신호에 주파수가 높은 디지털 신호(확산 코드)를 곱(XOR)하여 대역폭을 확산시키는 방식이다.
  • FHSS보다 전력 효율이나 대역폭 효율면에서 훨씬 좋으며, 이동통신의 CDMA와 같은 의미로 받아들여진다.
  • 처리과정
  1. 전송될 각각의 이진 데이터 신호(비트)칩 코드(Chip)라고 하는 다른 이진 코드로 변조하여 사용주파수 전역으로 확산시켜서 전송한다.
  2. 수신측에서는 칩이 다시 원래의 비트 단위로 변환되어 데이터가 복원된다. 칩이 크면 클수록 원래의 데이터로 복원될 가능성이 커진다.

 


 

 

Analog-to-Analog Conversion

 

- 아날로그 정보를 아날로그 신호로 변환하는 방식

 

- 변조는 매체가 대역 필터(Bandpass)인 경우에만 필요하다.

 

- 유형

  • 진폭 변조 (Amplitude Modulation, AM)
  • 주파수 변조 (Frequency Modulation, FM)
  • 위상 변조 (Phase Modulation, PM)

 

 

 


진폭 변조 (Amplitude Modulation, AM)

 


- 입력 신호의 진폭이 변화함에 따라 반송파를 변조시키는 방식이다.

 

-   (입력신호의 대역폭 )


 

 

주파수 변조 (Frequency Modulation, FM)

 


- 입력 신호의 주파수가 변화함에 따라 반송파를 변조시키는 방식이다.

 

  (보통 4의 값을 가진다.)

 

- AM보다 대역폭이 5, 입력신호보다 10배의 대역폭이 요구된다.

 

- 노이즈의 영향을 덜받으므로 깨끗한 음성을 지원한다. 노이즈는 주로 진폭에 영향을 많이준다.

 

 

 

위상 변조 (Phase Modulation, PM)

 


- 입력 신호의 위상이 변화함에 따라 반송파를 변조시키는 방식이다.

 

( 협대역(narrowband)에서는 1, 광대역(wideband)에서는 3의 값을 가진다. )

 

 

Digital-to-Analog Conversion


 

 

- 유형

  • 진폭 편이 방식 (Amplitude Sheft Keying, ASK)
  • 주파수 편이 방식 (Frequency Sheft Keying, FSK)
  • 위상 편이 방식 (Phase Shift Keying, PSK)
  • 직교 진폭 변조 방식 (Quadrature Amplitude Modulation, QAM) : ASK + PSK 혼합 방식

- Data Rate (Bit Rate) : 초당 비트수, bps

 

- Signal Rate (Baud Rate) : 초당 단위 신호 수


 

- FSK를 제외하고, 대역폭은 항상 Signal Rate와 비례한다.

 

- 반송파 또는 반송 주파수 (Carrier Signal or Carrier Frequency) : 통신에서 정보 전달을 위해 입력 신호를 변조한 전자기파로, 일반적으로 입력 신호보다 훨씬 높은 주파수를 갖는다.

 

- 변조 (Modulation, Sheft Keying) : 변조 방식은 기존의 반송파 및 반송 주파수를 입력 신호에 맞게 진폭이나 주파수 및 위상 등 기존 반송파의 특성을 수정(변조)함으로써 원하는 아날로그 신호를 얻을 수 있다.

 

 

 

진폭 편이 방식 (Amplitude Sheft Keying, ASK)

 

 

- 기존의 반송파를 이진수 0 또는 1로 나타내기 위해 반송파의 진폭을 변화시켜 아날로그 신호를 얻는 방식이다.

 

- 노이즈에 영향을 많이 받는다.

 

- Binary ASK (BASK) 또는 On-Off Keying (OOK)

  • 두 개의 진폭을 사용하며, 신호당 비트수(r)1이다.
  • Banswidth = (1+d) * S (0<= d <=1 : 라인 상태와 관련된 요소이다.)

- Multilevel ASK (MASK) : 4, 8, 16처럼 둘보다 더 많은 진폭을 사용하며, 노이즈의 영향을 많이 받는 ASK보다 QAM 방식으로 구현된다.

 

 

 

 

주파수 편이 방식 (Frequency Sheft Keying, FSK)

 

 

- 기존의 반송파를 이진수 0 또는 1로 나타내기 위해 반송파의 주파수를 변화시켜 아날로그 신호를 얻는 방식이다.

 

- 노이즈에 영향을 받지 않는다.

 

- 반송 주파수는 대역폭의 중간값이다.

 

- Binary FSK (BFSK) 

  • 두 개의 반송 주파수 f1, f2를 사용한다.



  • : 두 반송주파수간의 차이, 초당 신호전송률 - Signal Rate과 같다.
  • 기존의 편이 방식들보다 대역폭이 증가한다.

 

- Multilevel FSK (MFSK) : 4, 8, 16처럼 둘보다 많은 다른 주파수를 사용한다.

 

 

 

위상 편이 방식 (Phase Shift Keying, PSK)

 

 

- 기존의 반송파를 이진수 0 또는 1로 나타내기 위해 반송파의 위상을 변화시켜 아날로그 신호를 얻는 방식이다.

 

- 진폭 편이 방식(ASK)나 주파수 편이 방식(FSK)보다 더 자주 사용되며, 노이즈에 영향을 받지 않는다.

 

- Binary PSK (BPSK)

  • 두 개의 위상을 사용한다.
  • Bandwidth = (1+d) * S

 

- Quadrature PSK (QPSK) : 네 개의 위상을 사용한다.

 

[45도와 같이 각도위상값에 해당하고점까지의 거리진폭의 크기에 해당한다.]


[ 1번 진폭은 다르지만위상이 0도로 같다.                    

2번 진폭은 동일하지만위상이 0, 180도로 다르다.

3번 진폭은 동일하지만위상이 45, 135, 225, 315도로 다르다. ]



 



  

직교 진폭 변조 방식 (Quadrature Amplitude Modulation, QAM)

 

- 독립된 2개의 반송파인 동상 반송파와 직각 위상 반송파의 진폭과 위상을 변환 및 조정하여 데이터를 전송하는 방식이다.

 

- 2개의 반송파는 90도씩 서로 직각 위상이 된다.

 

- Banswidth = (1+d) * S

 

- 신호 레벨 = 진폭 * 위상 : 표현 가능한 정보의 수

 


  

< 16-QAM >

[ 좌 : 4 amplitudes, 8 phases -> 32가지의 정보를 표현할 수 있다.

우 : 3 amplitudes, 12phases -> 36가지의 정보를 표현할 수 있다.]


 

- 위의 16-QAM의 왼쪽 그림을 예로 들면, 위상의 단위를 π/4로 하여 하나의 주기를 8등분한다. 그리고 이들 중 4개(8/2)의 위상에 대해 변조된 신호의 진폭을 4개의 값으로 달리 가질 수 있게하면, 32가지의 정보를 표현한다. 


[ 8-QAM 신호 ]

 

 

+ Recent posts