[통신이론] C++을 이용한 FM변조
- 최초 등록일
- 2008.06.04
- 최종 저작일
- 2008.05
- 11페이지/ 한컴오피스
- 가격 2,500원
소개글
C++을 이용한 FM변조입니다.
음원 파일은 따로없고
C++로 cosine신호를 만들고
그 신호를 FM변조하는 소스입니다.
베타값은 0.1과 10으로 되어있습니다.
입출력 값은 골드웨이브로 관찰한 스펙트럼과, 쿨에딧으로 관찰한 스펙트럼을 같이 삽입
그리고 이론값과 실제값 차이에 대한 설명입니다.
이론값은 carson`s rule사용.
목차
없음
본문내용
Spectrum은 Goldwave의 Spectrum 창에서 확인하며, 창의 전체 구간은 24,000Hz 이고, 한 간격은 2,400Hz이다.
12,000Hz Carrier = 1000cos(2π 12,000 n/48,000 )
변조 과정 : 1000cos(2π 12,000 n/48,000 + θ[n] )
(1) 주파수 600Hz를 가지는 Message 신호
m[n] = 1000 cos(2π 600 n/48,000)
을 만들어 Goldwave로 Spectrum을 확인한다.
#include
#include
int main(void)
{
// variable
FILE *fout; // File Pointer
short data; // 16 bit Integer Variable
float x, n; // for문을 돌리기 위해 변수 n을 지정함
fout = fopen("600hz_message.raw", "wb");
for(n=0 ;n<=48000 ;n++ )
{
x = 1000*cos(2*3.14*600*n/48000); // fm=600hz
data = (short)x; // 신호 y를 short 형태로 바꿈
fwrite(&data, 2, 1, fout);
}
fclose(fout);
return 0;
}
fm을 600hz로 하는 신호를 만들어 내었다. (Sampling frequency 는 48000hz). 위의 C code를 실행시키면 600hz_message.raw의 이름을 가진 파일이 생성된다. 이 파일을 Goldwave로 실행.
< 600hz의 주파수를 가진 메시지의 스펙트럼 >
Goldwave를 이용하여 600hz_message.raw의 스펙트럼을 확인해 보면 약 600hz에서 스펙트럼의 최대치가 나타나는 것을 알 수 있다. cosine신호이므로 약 1200hz까지 분포한다.(Goldwave의 control box에서 스펙트럼 그래프의 한칸은 2400hz임)
(2) 주파수 600Hz를 가지는 Message 신호를 β = 0.1 로 FM 하여 Spectrum을 확인하고, Spectrum의 각 Pulse 간격과 대략적인 대역폭을 이론과 비교하여 설명한다(Carson` Rule 사용).
#include
#include
int main(void)
{
// variable
FILE *fin, *fout; // File Pointer
short data; // 16 bit Integer Variable
float x, y, n; // for문을 돌리기 위해 변수 n을 지정함.
fin = fopen("600hz_message.raw", "rb");
fout = fopen("600_fm0.1.raw", "wb");
// file read
for(n=0 ; ;n++ )
{
// input read
if(fread(&data, 2, 1, fin) == NULL) break;
// conversion to Floating
x = (float)data; // data 는 short 변수이므로 이를 Float로 바꾸어 계산한다.
// y=s(t)가 출력인 FM 변조 (beta=0.1, fm=600hz)
참고 자료
없음