调频FM仿真程序.docx

上传人:b****7 文档编号:9516976 上传时间:2023-02-05 格式:DOCX 页数:17 大小:15.74KB
下载 相关 举报
调频FM仿真程序.docx_第1页
第1页 / 共17页
调频FM仿真程序.docx_第2页
第2页 / 共17页
调频FM仿真程序.docx_第3页
第3页 / 共17页
调频FM仿真程序.docx_第4页
第4页 / 共17页
调频FM仿真程序.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

调频FM仿真程序.docx

《调频FM仿真程序.docx》由会员分享,可在线阅读,更多相关《调频FM仿真程序.docx(17页珍藏版)》请在冰豆网上搜索。

调频FM仿真程序.docx

调频FM仿真程序

一:

%初始化

echooff

closeall

clearall

clc

%FM调制

dt=0.001;%设定时间步长

t=0:

dt:

1.5;%产生时间向量

am=5;%设定调制信号幅度

fm=5;%设定调制信号频率

mt=am*cos(2*pi*fm*t);%生成调制信号

fc=50;%设定载波频率

ct=cos(2*pi*fc*t);%生成载波

kf=10;%设定调频指数

int_mt

(1)=0;

fori=1:

length(t)-1

int_mt(i+1)=int_mt(i)+mt(i)*dt;%求信号m(t)的积分

end%调制,产生已调信号

sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt);%已调信号

disp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')

pause

%****************figure

(1)********************

figure

(1)

subplot(3,1,1);plot(t,mt);%绘制调制信号的时域图

xlabel('时间t');

title('调制信号的时域图');

subplot(3,1,2);plot(t,ct);%绘制载波的时域图

xlabel('时间t');

title('载波的时域图');

subplot(3,1,3);

plot(t,sfm);%绘制已调信号的时域图

xlabel('时间t');

title('已调信号的时域图');

%******************************************

二:

%初始化

echooff

closeall

clearall

clc

%FM调制

dt=0.001;%设定时间步长

t=0:

dt:

1.5;%产生时间向量

am=5;%设定调制信号幅度

fm=5;%设定调制信号频率

mt=am*cos(2*pi*fm*t);%生成调制信号

fc=50;%设定载波频率

ct=cos(2*pi*fc*t);%生成载波

kf=10;%设定调频指数

int_mt

(1)=0;

fori=1:

length(t)-1

int_mt(i+1)=int_mt(i)+mt(i)*dt;%求信号m(t)的积分

end%调制,产生已调信号

sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt);%已调信号

%添加高斯白噪声

sn1=10;%设定信躁比(小信噪比)

sn2=30;%设定信躁比(大信噪比)

sn=0;%设定信躁比(无信噪比)

db=am^2/(2*(10^(sn/10)));%计算对应的高斯白躁声的方差

n=sqrt(db)*randn(size(t));%生成高斯白躁声

nsfm=n+sfm;%生成含高斯白躁声的已调信号(信号通

%过信道传输)

%FM解调

fori=1:

length(t)-1%接受信号通过微分器处理

diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;

end

diff_nsfmn=abs(hilbert(diff_nsfm));%hilbert变换,求绝对值得到瞬时%幅度(包络检波)

zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;

diff_nsfmn1=diff_nsfmn-zero;

%时域到频域转换

ts=0.001;%抽样间隔

fs=1/ts;%抽样频率

df=0.25;%所需的频率分辨率,用在求傅里叶变换

%时,它表示FFT的最小频率间隔

%对调制信号m(t)求傅里叶变换

m=am*cos(2*pi*fm*t);%原调信号

fs=1/ts;

ifnargin==2

n1=0;

else

n1=fs/df;

end

n2=length(m);

n=2^(max(nextpow2(n1),nextpow2(n2)));

M=fft(m,n);

m=[m,zeros(1,n-n2)];

df1=fs/n;%以上程序是对调制后的信号u求傅里变换

M=M/fs;%缩放,便于在频谱图上整体观察

f=[0:

df1:

df1*(length(m)-1)]-fs/2;%时间向量对应的频率向量

%对已调信号u求傅里变换

fs=1/ts;

ifnargin==2

n1=0;

else

n1=fs/df;

end

n2=length(sfm);

n=2^(max(nextpow2(n1),nextpow2(n2)));

U=fft(sfm,n);

u=[sfm,zeros(1,n-n2)];

df1=fs/n;%以上是对已调信号u求傅里变换

U=U/fs;%缩放

disp('按任意键可以看到原调制信号和已调信号在频域内的图形')

pause

%*******************figure

(2)**********************

figure

(2)

subplot(2,1,1)

plot(f,abs(fftshift(M)))%fftshift:

将FFT中的DC分量移到频谱中心

xlabel('频率f')

title('原调制信号的频谱图')

subplot(2,1,2)

plot(f,abs(fftshift(U)))

xlabel('频率f')

title('已调信号的频谱图')

三:

%初始化

echooff

closeall

clearall

clc

%FM调制

dt=0.001;%设定时间步长

t=0:

dt:

1.5;%产生时间向量

am=5;%设定调制信号幅度

fm=5;%设定调制信号频率

mt=am*cos(2*pi*fm*t);%生成调制信号

fc=50;%设定载波频率

ct=cos(2*pi*fc*t);%生成载波

kf=10;%设定调频指数

int_mt

(1)=0;

fori=1:

length(t)-1

int_mt(i+1)=int_mt(i)+mt(i)*dt;%求信号m(t)的积分

end%调制,产生已调信号

sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt);%已调信号

%添加高斯白噪声

sn1=10;%设定信躁比(小信噪比)

sn2=30;%设定信躁比(大信噪比)

sn=0;%设定信躁比(无信噪比)

db=am^2/(2*(10^(sn/10)));%计算对应的高斯白躁声的方差

n=sqrt(db)*randn(size(t));%生成高斯白躁声

nsfm=n+sfm;%生成含高斯白躁声的已调信号(信号通

%过信道传输)

%FM解调

fori=1:

length(t)-1%接受信号通过微分器处理

diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;

end

diff_nsfmn=abs(hilbert(diff_nsfm));%hilbert变换,求绝对值得到瞬时%幅度(包络检波)

zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;

diff_nsfmn1=diff_nsfmn-zero;

%时域到频域转换

ts=0.001;%抽样间隔

fs=1/ts;%抽样频率

df=0.25;%所需的频率分辨率,用在求傅里叶变换

%时,它表示FFT的最小频率间隔

%对调制信号m(t)求傅里叶变换

m=am*cos(2*pi*fm*t);%原调信号

fs=1/ts;

ifnargin==2

n1=0;

else

n1=fs/df;

end

n2=length(m);

n=2^(max(nextpow2(n1),nextpow2(n2)));

M=fft(m,n);

m=[m,zeros(1,n-n2)];

df1=fs/n;%以上程序是对调制后的信号u求傅里变换

M=M/fs;%缩放,便于在频谱图上整体观察

f=[0:

df1:

df1*(length(m)-1)]-fs/2;%时间向量对应的频率向量

%对已调信号u求傅里变换

fs=1/ts;

ifnargin==2

n1=0;

else

n1=fs/df;

end

n2=length(sfm);

n=2^(max(nextpow2(n1),nextpow2(n2)));

U=fft(sfm,n);

u=[sfm,zeros(1,n-n2)];

df1=fs/n;%以上是对已调信号u求傅里变换

U=U/fs;%缩放

disp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')

pause

%*****************figure(3)*********************

figure(3)

subplot(3,1,1);plot(t,mt);%绘制调制信号的时域图

xlabel('时间t');

title('调制信号的时域图');

subplot(3,1,2);plot(t,sfm);%绘制已调信号的时域图

xlabel('时间t');

title('无噪声条件下已调信号的时域图');

nsfm=sfm;

fori=1:

length(t)-1%接受信号通过微分器处理

diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;

end

diff_nsfmn=abs(hilbert(diff_nsfm));%hilbert变换,求绝对值得到%瞬时幅度(包络检波)

zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;

diff_nsfmn1=diff_nsfmn-zero;

subplot(3,1,3);%绘制无噪声条件下解调信号的时域图

plot((1:

length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');

xlabel('时间t');

title('无噪声条件下解调信号的时域图');

四:

%初始化

echooff

closeall

clearall

clc

%FM调制

dt=0.001;%设定时间步长

t=0:

dt:

1.5;%产生时间向量

am=5;%设定调制信号幅度

fm=5;%设定调制信号频率

mt=am*cos(2*pi*fm*t);%生成调制信号

fc=50;%设定载波频率

ct=cos(2*pi*fc*t);%生成载波

kf=10;%设定调频指数

int_mt

(1)=0;

fori=1:

length(t)-1

int_mt(i+1)=int_mt(i)+mt(i)*dt;%求信号m(t)的积分

end%调制,产生已调信号

sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt);%已调信号

%添加高斯白噪声

sn1=10;%设定信躁比(小信噪比)

sn2=30;%设定信躁比(大信噪比)

sn=0;%设定信躁比(无信噪比)

db=am^2/(2*(10^(sn/10)));%计算对应的高斯白躁声的方差

n=sqrt(db)*randn(size(t));%生成高斯白躁声

nsfm=n+sfm;%生成含高斯白躁声的已调信号(信号通

%过信道传输)

%FM解调

fori=1:

length(t)-1%接受信号通过微分器处理

diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;

end

diff_nsfmn=abs(hilbert(diff_nsfm));%hilbert变换,求绝对值得到瞬时%幅度(包络检波)

zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;

diff_nsfmn1=diff_nsfmn-zero;

%时域到频域转换

ts=0.001;%抽样间隔

fs=1/ts;%抽样频率

df=0.25;%所需的频率分辨率,用在求傅里叶变换

%时,它表示FFT的最小频率间隔

%对调制信号m(t)求傅里叶变换

m=am*cos(2*pi*fm*t);%原调信号

fs=1/ts;

ifnargin==2

n1=0;

else

n1=fs/df;

end

n2=length(m);

n=2^(max(nextpow2(n1),nextpow2(n2)));

M=fft(m,n);

m=[m,zeros(1,n-n2)];

df1=fs/n;%以上程序是对调制后的信号u求傅里变换

M=M/fs;%缩放,便于在频谱图上整体观察

f=[0:

df1:

df1*(length(m)-1)]-fs/2;%时间向量对应的频率向量

%对已调信号u求傅里变换

fs=1/ts;

ifnargin==2

n1=0;

else

n1=fs/df;

end

n2=length(sfm);

n=2^(max(nextpow2(n1),nextpow2(n2)));

U=fft(sfm,n);

u=[sfm,zeros(1,n-n2)];

df1=fs/n;%以上是对已调信号u求傅里变换

U=U/fs;%缩放

disp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')

pause

%***************figure(4)******************

figure(4)

subplot(3,1,1);plot(t,mt);%绘制调制信号的时域图

xlabel('时间t');

title('调制信号的时域图');

db1=am^2/(2*(10^(sn1/10)));%计算对应的小信噪比高斯白躁声的方差

n1=sqrt(db1)*randn(size(t));%生成高斯白躁声

nsfm1=n1+sfm;%生成含高斯白躁声的已调信号(信号通

%过信道传输)

fori=1:

length(t)-1%接受信号通过微分器处理

diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;

end

diff_nsfmn1=abs(hilbert(diff_nsfm1));%hilbert变换,求绝对值得到%瞬时幅度(包络检波)

zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;

diff_nsfmn1=diff_nsfmn1-zero;

subplot(3,1,2);

plot(1:

length(diff_nsfm),diff_nsfm);%绘制含小信噪比高斯白噪声已%调信号的时域图

xlabel('时间t');

title('含小信噪比高斯白噪声已调信号的时域图');

subplot(3,1,3);%绘制含小信噪比高斯白噪声解调信号的时域图

plot((1:

length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');

xlabel('时间t');

title('含小信噪比高斯白噪声解调信号的时域图');

%*****************************************

五:

%初始化

echooff

closeall

clearall

clc

%FM调制

dt=0.001;%设定时间步长

t=0:

dt:

1.5;%产生时间向量

am=5;%设定调制信号幅度

fm=5;%设定调制信号频率

mt=am*cos(2*pi*fm*t);%生成调制信号

fc=50;%设定载波频率

ct=cos(2*pi*fc*t);%生成载波

kf=10;%设定调频指数

int_mt

(1)=0;

fori=1:

length(t)-1

int_mt(i+1)=int_mt(i)+mt(i)*dt;%求信号m(t)的积分

end%调制,产生已调信号

sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt);%已调信号

%添加高斯白噪声

sn1=10;%设定信躁比(小信噪比)

sn2=30;%设定信躁比(大信噪比)

sn=0;%设定信躁比(无信噪比)

db=am^2/(2*(10^(sn/10)));%计算对应的高斯白躁声的方差

n=sqrt(db)*randn(size(t));%生成高斯白躁声

nsfm=n+sfm;%生成含高斯白躁声的已调信号(信号通

%过信道传输)

%FM解调

fori=1:

length(t)-1%接受信号通过微分器处理

diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;

end

diff_nsfmn=abs(hilbert(diff_nsfm));%hilbert变换,求绝对值得到瞬时%幅度(包络检波)

zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;

diff_nsfmn1=diff_nsfmn-zero;

%时域到频域转换

ts=0.001;%抽样间隔

fs=1/ts;%抽样频率

df=0.25;%所需的频率分辨率,用在求傅里叶变换

%时,它表示FFT的最小频率间隔

%对调制信号m(t)求傅里叶变换

m=am*cos(2*pi*fm*t);%原调信号

fs=1/ts;

ifnargin==2

n1=0;

else

n1=fs/df;

end

n2=length(m);

n=2^(max(nextpow2(n1),nextpow2(n2)));

M=fft(m,n);

m=[m,zeros(1,n-n2)];

df1=fs/n;%以上程序是对调制后的信号u求傅里变换

M=M/fs;%缩放,便于在频谱图上整体观察

f=[0:

df1:

df1*(length(m)-1)]-fs/2;%时间向量对应的频率向量

%对已调信号u求傅里变换

fs=1/ts;

ifnargin==2

n1=0;

else

n1=fs/df;

end

n2=length(sfm);

n=2^(max(nextpow2(n1),nextpow2(n2)));

U=fft(sfm,n);

u=[sfm,zeros(1,n-n2)];

df1=fs/n;%以上是对已调信号u求傅里变换

U=U/fs;%缩放

disp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')

pause

%**************figure(5)******************

figure(5)

subplot(3,1,1);plot(t,mt);%绘制调制信号的时域图

xlabel('时间t');

title('调制信号的时域图');

db1=am^2/(2*(10^(sn2/10)));%计算对应的大信噪比高斯白躁声的方差

n1=sqrt(db1)*randn(size(t));%生成高斯白躁声

nsfm1=n1+sfm;%生成含高斯白躁声的已调信号(信号通过信道传输)

fori=1:

length(t)-1%接受信号通过微分器处理

diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;

end

diff_nsfmn1=abs(hilbert(diff_nsfm1));%hilbert变换,求绝对值

%得到瞬时幅度(包络检波)

zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;

diff_nsfmn1=diff_nsfmn1-zero;

subplot(3,1,2);

plot(1:

length(diff_nsfm1),diff_nsfm1);%绘制含大信噪比高斯

%白噪声已调信号的时域图

xlabel('时间t');

title('含大信噪比高斯白噪声已调信号的时域图');

subplot(3,1,3);%绘制含大信噪比高斯白噪声解调信号

%的时域图

plot((1:

length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');

xlabel('时间t');

title('含大信噪比高斯白噪声解调信号的时域图');

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 天文地理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1