【happyz】MATLAB-FM仿真03

程序函数介绍

在本次仿真中运用到的Matlab函数如下:
(1)cos函数
语法:cos(2pifmt)。
功能:生成正弦波调制信号。
说明:生成正弦波,频率为fm。
(2)sawtooth函数
语法:awtooth(2
pifmt,Am)。
功能:生成三角波调制信号。
说明:生成频率为fm的三角波。
(3)fft函数
语法:y=fft(x,N)。
功能:对信号进行快速Fourier变换。
(4)abs函数
语法:y=abs(x)。
功能:数值的绝对值和复数的幅值。
(5)Length函数
语法:length(x)。
功能:计算向量或者矩阵长度。
(6)demod函数
语法:y=demod(x,fc,fs,fm)。
功能:将调制信号x解调,fc为载波频率,fs为采样频率,fm为调制信号频率。
(7)sum函数
语法:y=sum(x)。
功能:求和。
(8)Awgn函数
语法:y=awgn(x,SNR)。
功能:在某一信号中加入高斯白噪声。
说明:在信号x中加入高斯白噪声。信噪比SNR以dB为单位。X的强度假定为0dW。如果x是复数,就加入复噪声。
(9)zeros函数
功能:生成零矩阵。
(10)max函数
功能:求最大值。
(11)fftshift函数
功能:将FFT中的DC分量移到频谱中心。

程序分析

FM信号调制

(1)运用间接调频法编写FM调制程序,如下所示:

dt=0.00001;                          %设定步长
N=1000;                             %FFT长度
Fs=1/dt;                             %设定采样频率
n=0:N-1;t=n/Fs;                       %截止时间
fc=30000;                           %设定载波频率为要求的30KHZ
ct=cos(2*pi*fc*t);                     %生成载波
am=0.5;                             %设定调制信号幅度为0.5
fm=300;                             %设定调制信号频率为要求的300HZ
mt_sin=am*cos(2*pi*fm*t);             %生成正弦波调制信号
mt_tri=sawtooth(2*pi*fm*t,0.5);          %生成三角波调制信号
ma=0.5; 						            %设定调频指数(可更改为1或3)
int_mt_sin(1)=0;               %定义int_mt_sin为mt_sin信号在时域上的积分
for i=1:length(t)-1
int_mt_sin(i+1)=int_mt_sin(i)+mt_sin(i)*dt; %对mt_sin进行积分
End
sfm_sin=am*cos(2*pi*fc*t+ma*2*pi*fm*int_mt_sin);%对正弦波调制,产生已调信号

三角波调制程序同正弦波类似,不再赘述。
(2)求频谱(以正弦调制信号为例)。下列程序是对调制信号m(t)求傅里叶变换,对已调信号求傅里叶变换时只需将调制信号替换为已调信号即可。

m=mt_sin;                             %原调信号
ts=0.001;                              %抽样间隔
df=0.25;                              %所需的频率分辨率,用在求傅里叶变换时,它表示FFT的最小频率间隔
fs=1/ts;                                %抽样频率
if n==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;                          
M=M/fs;                          %缩放,便于在频铺图上整体观察
f=[0:df1:df1*(length(m)-1)]-fs/2;       %时间向量对应的频率向量
plot(f,abs(fftshift(M))) ;             %输出
FM信号解调

MATLAB中demod函数为软件自带的解调函数,用该函数直接对加噪声前后已调信号进行解调,程序如下(以正弦波已调信号为例):

yy_sin=demod(sfm_sin,fc,Fs,'fm');
输入输出信噪比关系

MATLA由于正弦波与三角波程序类似,以正弦波为例分析程序如下:
(1)给信号添加5db、10db、15db、20db、25db五种不同信噪比的高斯白噪声,下面以添加5db噪声为例。

yn_sin0=awgn(sfm_sin,5);            %正弦波调频信号加入5db高斯白噪声
yyn_sin0=demod(yn_sin0,fc,Fs,'fm');    %加高斯白噪声的正弦波解调信号

(2)将加噪信号减去纯信号求得噪声信号。添加链接描述

dy10=yn_sin0-sfm_sin;               %高斯白噪声
dy20=yyn_sin0-yy_sin;               %解调后噪声

(3)求输入输出的信号及噪声功率。

ps1=sum((sfm_sin).^2)/length(sfm_sin);  %输入信号功率
pn10=sum((dy10).^2)/length(dy10);      %输入噪声功率
ps2=sum((yy_sin).^2)/length(yy_sin);     %输出信号功率
pn20=sum((dy20).^2)/length(dy20);      %输出噪声功率

(4)求输入输出的信噪比。

snr10=ps1/pn10;                      %输入信噪比
snr20=ps2/pn20;                      %输出信噪比

链接-FM仿真04

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值