2013년 1월 30일 수요일

다이폴 안테나의 복사 저항(Radiation Resistance of a Dipole Antenna)

[경고] 아래 글을 읽지 않고 "다이폴 안테나의 복사 저항"을 보면 바보로 느껴질 수 있습니다.
1. 가장 쉬운 안테나 이론
2. 안테나의 복사저항
3. 헤르츠 다이폴
4. 다이폴 안테나
5. 코사인 적분

[확인] 본 페이지는 exp(jωt) 시간 약속을 사용하고 있습니다.


[그림 1]에 있는 다이폴 안테나(dipole antenna)입력 임피던스(input impedance)을 규정하는 중요한 양이 복사 저항(radiation resistance)이다. 안테나의 복사 저항을 구하려면 먼저 원역장(far-field) 복사 패턴을 구해야 한다.

[그림 1] 다이폴 안테나

다이폴 안테나(dipole antenna)의 복사 패턴(radiation pattern)은 헤르츠 다이폴(Hertz dipole)전자기장(electromagnetic field) 복사식을 이용해서 다음처럼 구한다.

                       (1)

                       (2)

여기서 $l$은 다이폴의 길이이다. 식 (1)의 복사 패턴을 이용해 다이폴 안테나의 복사 전력(radiated power)을 구하자.

                       (3)

식 (3)은 수치 적분(numerical integration)을 통해 구할 수도 있지만 반파장 다이폴 안테나(half-wave dipole antenna)인 경우는 간단하게 적분할 수 있다. 반파장 다이폴 안테나의 복사 패턴인 식 (4)를 식 (3)에 대입해서 복사 전력에 대한 적분을 얻는다.

                       (4)

                   (5)

식 (5)에는 특수 함수인 식 (6)의 코사인 적분(cosine integral)이 등장한다.

                       (6)

따라서 반파장 다이폴 안테나의 복사 전력은 다음처럼 표현된다.

                        (7)

식 (7)의 관계식을 통해 복사 저항을 구해보면 다음과 같다.

                       (8)

반파장 다이폴 안테나의 복사 저항은 실무 차원에서 매우 중요한 의미를 가진다.

   
[그림 2] 동축선(출처: wikipedia.org)

실험에 많이 쓰이는 [그림 2]의 동축선을 보자. 실무에 사용하는 동축선의 특성 임피던스(characteristic impedance)는 주로 50 혹은 75 Ω을 가진다. 만약 동축선의 특성 임피던스를 75 Ω으로 택하면, 임피던스 정합 회로(impedance matching circuit)가 없더라도 반파장 다이폴 안테나를 거의 반사(reflection)없이 동축선과 연결할 수 있어 전체 회로 구조가 매우 단순해진다.

2013년 1월 26일 토요일

Postcript 파일 읽는프로그램

수학자들이 좋아하는 문서 편집 프로그램인 LaTex은 기본적으로 포스트스크립트(PS: postscript) 파일을 생성한다. LaTex이 공짜인 것처럼 PS 파일 보기 프로그램(GSview)도 공짜이다. 자신의 OS에 맞게 Ghostscript를 깐 후 GSview를 깔면 PS 파일을 볼 수 있다.

2013년 1월 21일 월요일

32비트 코드를 64비트로 변환(Code Conversion from 32-bit to 64-bit)

윈도우7이 인기를 끌면서 64비트 프로그래밍(64-bit programming)은 거스를 수 없는 대세가 되었다. 아래 정보를 확인해 이전에 짜둔 Visual Studio의 32비트 코드를 64비트로 바꾸어 보자.

[64비트용 솔루션 플랫폼(solution platform) 생성]
1. “구성 관리자 -> 활성 솔루션 플랫폼 -> 새로 만들기”에서 ‘x64’를 추가함

2. “활성 솔루션 구성”에 “Debug x64”, “Release x64”를 추가하고 플랫폼을 모두 ‘x64’로 바꿈: "활성 솔루션 플랫폼"을 'x64'로 바꾸면 모든 솔루션이 x64로 바꾸므로 플랫폼 항목만을 바꾸자.

현재 컴파일러가 64비트 모드에서 동작 중인지 확인하려면 '_WIN64' 정의 여부를 확인하면 된다. 이걸로 확인이 안된다면 "구성 속성 -> C/C++ -> 전처리기 -> 전처리기 정의"에 'WIN64'를 추가하면 해결된다. 한가지 조심할 것은 '_WIN32'이다. 이 정의는 32비트와 64비트 모두에서 사용되기 때문에 '_WIN32'를 이용해 32비트 유무를 판별해서는 안된다. 반드시 '_WIN64'를 써야 한다.

[데이터 변환]
  • int -> INT64, __int64, long long
  • long -> LONG64, __int64, long long
  • unsigned int -> UINT64, usigned __int64, unsigned long long
  • unsigned long -> ULONG64, usigned __int64, unsigned long long
  • INT_PTR, UINT_PTR, LONG_PTR, ULONG_PTR처럼 ..._PTR로 끝나는 변수는 컴파일러가 32비트 모드인지 64비트 모드인지에 따라 선언되는 변수 종류가 자동으로 달라짐
  • int 상수 1 -> 1i64
  • long 상수 1L -> 1LL
  • unsigned int 상수 1 -> 1ui64
  • unsigned long 상수 1UL -> 1ULL 
double에 대해서는 변경할 것이 없다. long double이든지 double이든지 컴파일러는 동일한 코드를 만든다.

[참고문헌]