微信:HuangL1121
QQ号:1224848052
团队:MATLAB代做|MATLAB专业代做|python代做|matlab代写|FPGA代做|FPGA专业代做|MATLAB项目合作|FPGA项目合作|matlab代码|matlab算法源码|python代做|C代做|C++代做
地址:北京市-朝阳区-双柳北街18号院
当前位置:首页 > 图像语音 > MATLAB代做|FPGA代做| FM调制解调系统设计与仿真
项目案例
MATLAB代做|FPGA代做| FM调制解调系统设计与仿真
MATLAB代做|FPGA代做| FM调制解调系统设计与仿真
产品说明:

%FM调制解调系统.m

%频率调制与解调的Matlab演示源程序

%可以任意改原调制信号函数m(t)

%信息工程  陈丽丹 07323202 

%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·

%*****************初始化******************

echo   off      

close  all

clear  all

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;

for i=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解调*******************

for i=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;

if nargin==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;

if nargin==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(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('已调信号的时域图');

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

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('已调信号的频谱图')

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

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;                             

for i=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('无噪声条件下解调信号的时域图');

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

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;                              %生成含高斯白躁声的已调信号(信号通

%过信道传输)

for i=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('含小信噪比高斯白噪声解调信号的时域图');

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

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;                              %生成含高斯白躁声的已调信号(信号通过信道传输)

for i=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('含大信噪比高斯白噪声解调信号的时域图');

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

%******************结 束*******************


联系:highspeedlogic

QQ :1224848052

微信:HuangL1121

邮箱:1224848052@qq.com

网站:http://www.mat7lab.com/

网站:http://www.hslogic.com/

微信扫一扫:


--------------------------------------------------------------------------------------

人工智能代做,深度学习代做,深度强化学习代做,zynq智能系统FPGA开发,

AI代做,卷积神经网络,Alexnet,GoogleNet,CNN,TensorFlow,

caffepointnet,PPO,Qlearning,FasterRCNN,MTCNN,

SPPNet,word2vec,SARASA算法,梯度策略等等 



上一篇:MATLAB代做|FPGA代做|通过USB接口将FPGA中保存的图像传输到PC端

版权所有: MATLAB代做|MATLAB专业代做|python代做|matlab代写|FPGA代做|FPGA专业代做|MATLAB项目合作|FPGA项目合作|matlab代码|matlab算法源码|python代做|C代做|C++代做 Copyright © 2020 All rights reserved.
微信:HuangL1121 QQ:1224848052
地址:北京市-朝阳区-双柳北街18号院

扫一扫,关注我们