2025年FM調(diào)制代碼文檔_第1頁(yè)
2025年FM調(diào)制代碼文檔_第2頁(yè)
2025年FM調(diào)制代碼文檔_第3頁(yè)
2025年FM調(diào)制代碼文檔_第4頁(yè)
2025年FM調(diào)制代碼文檔_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

FMGen.cpp

#include"stdafx.h"#include"mod_demod.h"#include"FMGen.h"#include"head.h"#include"SourceGenClass.h"

#ifdef_DEBUG#undefTHIS_FILEstatic

char

THIS_FILE[]=__FILE__;#definenewDEBUG_NEW#endif

////////////////////////////////////////////////////////////////////////Construction/Destruction//////////////////////////////////////////////////////////////////////

FMGen::FMGen(CStringpnameModel,

CStringptypeModel,

long

vmodelSampleFreq,

long

vinputSampleFreq,

int

vtimeStep,

CStringpnameGetDataFile,

CStringpnamePutDataFile,

double

vampCarrier,

long

vfreqCarrier,

double

vphaseCarrier,

double

vModPara):ModBaseClass(pnameModel,ptypeModel,

vmodelSampleFreq,

vinputSampleFreq,

vtimeStep,

pnameGetDataFile,

pnamePutDataFile,

vampCarrier,

vfreqCarrier,

vphaseCarrier,

vModPara){

}

FMGen::~FMGen(){

}void

FMGen::run(){

double

dt;

float

*fn;

long

num_of_scan;

long

i;

double

phase_n,phase_n_1,dphase;

double

const_var;

dt=1.0/inputSampleFreq;

num_of_scan=(long)timeStep/1000.0*inputSampleFreq;

//begintomodulate

fn=getData(nameGetDataFile,1,num_of_scan);

if(!fn)

{

cout<<"Erroroccuredwhenread"<<nameGetDataFile<<".\n";

getch();

exit(1);

}

phase_n_1=ModPara*(*fn)*dt+phaseCarrier;

*fn=ampCarrier*cos(phase_n_1);

const_var=2*pi*freqCarrier*dt;

for

(i=1;i<num_of_scan;i++)

{

dphase=const_var+ModPara*(*(fn+i))*dt;

while

(dphase>=10000*2*pi)dphase-=2*pi*10000;

while

(dphase<=-2*pi*10000)dphase+=2*pi*10000;

phase_n=phase_n_1+dphase;

while

(phase_n>=2*pi*10000)phase_n-=2*pi*10000;

while

(phase_n<=-2*pi*10000)phase_n+=2*pi*10000;

*(fn+i)=ampCarrier*cos(phase_n);

phase_n_1=phase_n;

}

if(putData(fn,namePutDataFile,num_of_scan)==FALSE)

{

cout<<"whensavemodulationdata,erroroccured.\n";

free(fn);

getch();

exit(1);

}

free(fn);

cout<<"FMmodulationcomplete.\n";

}二.

//FMGen.h:interfacefortheFMGenclass.////////////////////////////////////////////////////////////////////////

#if!defined(AFX_FMGEN_H__119F55AA_0AA6_4CD7_948F_7010ED803ED4__INCLUDED_)#defineAFX_FMGEN_H__119F55AA_0AA6_4CD7_948F_7010ED803ED4__INCLUDED_

#if_MSC_VER>1000#pragmaonce#endif//_MSC_VER>1000

#include"ModBaseClass.h"

class

FMGen:

public

ModBaseClass

{

public:

FMGen(CString,CString,

long,long,

int,CString,

CString,double,

long,double,double);

virtual

~FMGen();

virtual

void

run();

};

#endif//!defined(AFX_FMGEN_H__119F55AA_0AA6_4CD7_948F_7010ED803ED4__INCLUDED_)附錄1:FM調(diào)制源程序清單

%程序名稱:tiaozhixinhao.m

%程序功能:產(chǎn)生模擬基帶信號(hào)并對(duì)調(diào)制信號(hào)進(jìn)行傅立葉變化得到調(diào)制信號(hào)的頻譜圖

%程序代碼

fc

=

150;

%載波頻率

fs

=

400;

%采樣頻率

t

=

(0

:0.001:0.15);

%時(shí)間區(qū)域

x

=

sin(2*pi*30*t);

%輸入信號(hào)

figure(1)

plot(t,x);

%調(diào)制信號(hào)時(shí)域圖xlabel('t');ylabel('x');

axis([0

0.15

-1

1])

a=fft(x,1024);

%對(duì)x進(jìn)行傅利葉變換

f=(0:length(a)-1)*fs/length(a)

-fs/2;

figure(2)

plot(f,abs(a));

%調(diào)制信號(hào)頻譜圖

xlabel('Frequence(Hz)');

%頻率分量

ylabel('powerSpectrum(x)');

%頻率譜能量

附錄2:FM調(diào)制源程序清單

%程序名稱:quyang400.m

%程序功能:調(diào)用函數(shù)modulate實(shí)現(xiàn)FM的調(diào)制

%程序代碼fc

=

150;

%載波頻率

fs

=

400;

%采樣頻率

t

=

(0

:0.001:0.15);

%時(shí)間區(qū)域x

=

sin(2*pi*30*t);

%輸入信號(hào)

y

=

modulate(x,fc,fs,'FM');

%調(diào)制信號(hào)

figure(3)

plot(t,y)

%對(duì)y進(jìn)行傅利葉變換

f=(0:length(b)-1)*fs/length(b)

-fs/2;

figure(4)

plot(f,abs(b));

%FM信號(hào)頻譜圖

xlabel('Frequence(Hz)');

%頻率分量

ylabel('Power

Spectrum(y)');

%頻率譜能量

附錄3:FM調(diào)制源程序清單

%程序名稱:quyang1600.m

%程序功能:調(diào)用函數(shù)modulate實(shí)現(xiàn)FM的調(diào)制

%程序代碼

fc

=

150;

%載波頻率

fs

=

1600;

%采樣頻率

t

=

(0

:0.001:0.15);

%時(shí)間區(qū)域

x

=

sin(2*pi*30*t);

%輸入信號(hào)

y

=

modulate(x,fc,fs,'FM');

%調(diào)制信號(hào)

plot(t,y);

%FM信號(hào)時(shí)域圖

xlabel('t(s)');ylabel('y');

axis([0

0.15

-1

1]);

b=fft(y,1024);

%對(duì)y進(jìn)行傅利葉變換

f=(0:length(b)-1)*fs/length(b)

-fs/2;

figure

plot(f,abs(b));

%FM信號(hào)頻譜圖

xlabel('Frequence(Hz)');

%頻率分量

ylabel('Power

Spectrum(y)');

%頻率譜能量

附錄4:FM調(diào)制源程序清單%程序名稱:xinzaobi1.m

%程序功能:對(duì)FM調(diào)制后的信號(hào)加入高斯噪聲,信噪比為1

%程序代碼

fc

=

150;

%載波頻率

fs

=

400;

%采樣頻率

t

=

(0

:0.001:0.15);

%時(shí)間區(qū)域

x

=

sin(2*pi*30*t);

%輸入信號(hào)

y

=

modulate(x,fc,fs,'FM');

%調(diào)制信號(hào)

y1

=

y

+

awgn(y,1,0);

%

FM信號(hào)加入噪聲

plot(t,y1);

%FM信號(hào)時(shí)域圖

xlabel('t(s)');ylabel('y');

axis([0

0.15

-1

1]);

b=fft(y1,1024);

%對(duì)y進(jìn)行傅利葉變換

f=(0:length(b)-1)*fs/length(b)

-fs/2;

figure

plot(f,abs(b));

%FM信號(hào)頻譜圖

xlabel('Frequence(Hz)');

%頻率分量

ylabel('Power

Spectrum(y)');

%頻率譜能量

附錄5:FM調(diào)制源程序清單

%程序名稱:xinzaobi2.m

%程序功能:對(duì)FM調(diào)制后的信號(hào)加入高斯噪聲,信噪比為0.1

%程序代碼

fc

=

150;

%載波頻率

fs

=

400;

%采樣頻率

t

=

(0

:0.001:0.15);

%時(shí)間區(qū)域

x

=

sin(2*pi*30*t);

%輸入信號(hào)

y

=

modulate(x,fc,fs,'FM');

%調(diào)制信號(hào)

y1

=

y

+

awgn(y,0.1,0);

%FM信號(hào)加入噪聲

plot(t,y1);

%FM信號(hào)時(shí)域圖

xlabel('t(s)');ylabel('y');

axis([0

0.15

-1

1]);

b=fft(y1,1024);

%對(duì)y進(jìn)行傅利葉變換

f=(0:length(b)-1)*fs/length(b)

-fs/2;

figure

plot(f,abs(b));

%FM信號(hào)信號(hào)頻譜

xlabel('Frequence(Hz)');

%頻率分量

ylabel('Power

Spectrum(y)');

%頻率譜能量

附錄6:FM調(diào)制源程序清單

%程序名稱:FM.m

%程序功能:對(duì)FM調(diào)制后的信號(hào)加入高斯噪聲,信噪比為5

%程序代碼

fc

=

150;

%載波頻率

fs

=

400;

%采樣頻率

t

=

(0

:0.001:0.15);

%時(shí)間區(qū)域

x

=

sin(2*pi*30*t);

%輸入信號(hào)

y

=

modulate(x,fc,fs,'FM');

%調(diào)制信號(hào)

y1

=

y

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論