분류 전체보기 219

[배경지식]BPSK, QPSK

Chapter 3를 공부하기 위해 필요한 사전 개념정리. BPSK와 QPSK는 전자파를 사용한 정보 전송을 위해 passband signal의 phase를 변화시켜 이진 데이터를 전송하는 디지털 변조 방식이다. carrier frequency에서 정현파로 진행하는 전자파의 위상을 각각 다르게 하여, 신호의 phase shift에 이진수 하나를 매핑한다고 생각하면 된다. 1. BPSK Binary Phase Shift Keying의 약자로서 0, pi 두 가지 phase에 각각 이진수 0과 1을 대응시키는 변조 방법이다. 예를 들어 두 가지 정현파 는 동일 주파수(carrier frequency)와 진폭을 가지며 서로 다른 phase를 가지게 된다. 여기서 첫 번째 파형을 0에 대응시키고 두 번째 파형을 ..

[Appendix]Detection/Estimation in Gaussian Noise(2)

4. Complex Vector Detection 실수 벡터의 detection처럼 복소수 벡터의 detection 또한 아래의 식에서 출발한다: 나머지 과정 또한 실수 벡터와 마찬가지로 scalar detection으로 바꾼 후 진행한다. transmit symbol u와 수신받은 신호 y를 다음과 같이 두고: 각 symbol의 종점을 잇는 방향의 단위벡터 v를 정의한다: 실수 벡터와 마찬가지로 벡터 y를 벡터 v위로 사영시킨다. 이때 복소수 symbol을 결정하는 정보는 여전히 스칼라 x에 의존하므로, 사영된 벡터 y(tilde)v 의 실수부만 가지고 detection이 가능하다. 따라서 사영된 벡터 y(tilde)v 의 실수부만 본다면: 이며, Gaussian Noise w의 실수부는 실수 벡터의 ..

[Appendix]Detection/Estimation in Gaussian Noise(1)

0.Gaussian Noise 이전 포스트 Time and Frequency coherence (tistory.com)에서 flat fading channel의 경우 시스템의 I/O 관계를 다음 식으로 표현 가능하다고 배웠다: 여기에 전파 전송 과정에서 발생하는 noise 항을 추가하면 다음과 같다: noise w[m]은 평균이 0이고 표준편차가 N_0인 복소 정규분포를 따른다. 1. Scalar Detection 이번 포스트에서 공부할 것은 수신받은 신호를 가지고 (송신단에서)원래 전송한 신호가 무엇인지 결정하는 방법이다. 간단하게 하기 위해 실수 영역에서 gaussian noise가 포함된 I/O 시스템을 다음과 같이 표현한다: y는 수신받은 신호를, u는 전송한 신호(symbol)를, w는 노이즈를..

[명품 C++ programming]10,11장 실습문제

단원: 10. 템플릿과 표준 라이브러리(STL) 11. C++ 입출력 시스템 [실습 10.8]문제 7을 푸는 다른 방법을 소개한다. bigger()함수의 다음 라인에서 >연산자 때문에, T에 클래스 타입이 대입될 때 구체화가 실패하여 컴파일 오류가 발생한다. 이 문제를 해결하기 위해 추상 클래스 Comparable이 주어진다. Circle 클래스가 Comparable을 상속받아 순수 가상 함수를 모두 구현하면, 앞의 bigger() 템플릿 함수를 사용하는데 아무 문제가 없다. Circle뿐 아니라, Comparable을 상속받은 모든 클래스를 bigger()에 사용할수 있다. Comparable을 상속받은 Circle 클래스를 완성하고 문제 7의 main()을 실행하여 테스트하라. 코드: #include..

[명품 C++ programming]9장 Open challenge

과제는 아니고 그냥 뭔가 될 거 같아서 풀어본 챌린지 문제 [open challenge]Human의 Food 먹기 게임 게임에는 Human, Monster, Food의 객체가 등장하며, 이들은 10x20 격저판에서 각각 정해진 규칙에 의해 움직인다. Human 객체는 사용자의 키에 의해 왼쪽(a 키), 아래(s 키), 위(d 키), 오른쪽(f 키)으로 한칸씩 움직이고, Monster는 한 번에 2칸씩, 왼쪽, 아래, 위, 오른쪽 방향으로 랜덤하게 움직인다. Food는 5번 중에 3번은 제자리에 있고, 나머지 2번은 4가지 방향 중 랜덤하게 한 칸씩 움직인다. 게임은 Hyman이 Monster를 피해 Food를 먹으면(Food의 위치로 이동) 성공으로 끝나고, Monster가 Food를 먹거나 Human이..

[명품 C++ programming]7,8,9장 실습문제

단원: 7. 프렌드와 연산자 중복 8. 상속 9. 가상함수와 추상클래스 [실습 7.3]다음 연산을 통해 공짜 책인지를 판별하도록 !연산자를 작성하라. 코드: #include using namespace std; class Book { string title; int price, pages; public: Book(string title = "", int price = 0, int pages = 0) { this->title = title; this->price = price; this->pages = pages; } void show() { cout capacity = capacity; mem = new int[capacity]; } ~BaseArray() { delete[] mem; } void put..

[명품 C++ programming]4,5,6장 실습문제

단원: 4. 객체 포인터와 객제 배열, 객체의 동적 생성 5. 함수와 참조, 복사 생성자 6. 함수 중복과 static 멤버 [실습 4.9]다음과 같은 Person 클래스가 있다. Person 클래스와 main()함수를 작성하여, 3개의 Person 객체를 가지는 배열을 선언하고, 다음과 같이 키보드에서 이름과 전화번호를 입력받아 출력하고 검색하는 프로그램을 완성하라. 코드: #include #include using namespace std; class person { string name; string tel; public: person(); string getname() { return name; } string gettel() { return tel; } void set(string name, s..

[ANSI C 프로그래밍]13장 프로그래밍 연습

단원: 12. 포인터 13. 파일 다루기 [프로그래밍 연습 13.8]5개의 물품 정보를 순차적으로 저장하는 프로그램을 작성하라. 정보는 물품 코드, 가격, 재고 개수이며 키보드로 사용자에게 입력을 받는다. 코드: #include struct info { int code; float price; int number; }; void writedata(FILE* x, struct info y) { printf("\nitem code:"); scanf("%d", &y.code); fprintf(x, "%d ", y.code); /*scanf 함수로 일차적으로 데이터를 입력받은 다음 그 데이터들을 fprintf함수를 사용하여 파일에 저장한다. 나머지 부분도 동일한 기능*/ printf("\nitem price:"..

[ANSI C 프로그래밍]10장 프로그래밍 연습

단원: 10. 사용자정의함수 [프로그래밍 연습 10.5]피보나치 수열은 다음과 같이 재귀적으로 표현이 된다. F(1) =1 F(2) = 1 F(n) = F(n-1) + F(n-2) , n > 2 배열을 이용하여 첫 n 개의 피노나치 수를 생성하는 함수를 작성하고, n = 5, 10, 15 일 때의 사용예를 보여라. 코드: #include int fibonacci(int m) { int i; static int fibo[100]; //기존 배열의 초기화를 막기위해 static 사용 if (m = 2) { for (i = 2; i