数学建模社区-数学中国
标题:
FM调制解调系统
[打印本页]
作者:
李秋锐
时间:
2015-2-1 19:22
标题:
FM调制解调系统
%FM调制解调系统.m
, E/ o1 y6 Z% m7 R4 R h
%频率调制与解调的Matlab演示源程序
! U: ^& J: R0 _# @# q0 K
%可以任意改原调制信号函数m(t)
% v: A; w$ A7 w4 Q6 T
%电子信息工程 杜怀超 091308305
# {8 p# s# ?3 m. V
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
& e$ p( w- X& D
%*****************初始化******************
; _" T2 j" B2 `8 z7 q, u
echo off
. r, z" f$ B+ a `% f2 S, E& X4 p, S
close all
/ m) }5 e) `* I+ u: V
clear all
b& T4 O) Y& @; @/ w! \* p
clc
7 s% }& E! x8 q, w
%*****************************************
1 l/ G+ t+ E& m* i. M2 C
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
, A( J5 q9 A( J c# w7 |
%****************FM调制*******************
6 t3 R I! O) y6 t
dt=0.001; %设定时间步长
1 A3 }$ T+ x# n+ W, V1 W2 p* d
t=0:dt:1.5; %产生时间向量
. h- n9 B4 O$ {2 H6 J7 v4 h+ ?
am=5; %设定调制信号幅度
# |: E8 b6 {1 A1 l1 H/ s, C
fm=5; %设定调制信号频率
3 p( v/ `2 b& i& p
mt=am*cos(2*pi*fm*t); %生成调制信号
3 U! [) v9 ^+ K$ Q
fc=50; %设定载波频率
* ^) M9 Z& a1 r+ w
ct=cos(2*pi*fc*t); %生成载波
, I. s% X( _' Z2 C6 z% l0 _& u
kf=10; %设定调频指数
, e7 o3 `( E% @' @& ]$ R
int_mt(1)=0;
3 f3 A- k$ s# t6 O8 R3 J% b
for i=1:length(t)-1
4 R1 D6 Q; A" y M. T; t( i
int_mt(i+1)=int_mt(i)+mt(i)*dt; %求信号m(t)的积分
1 D8 l$ ?8 P2 J8 U
end %调制,产生已调信号
* @9 `2 X0 ]7 H' E. {0 }
sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt); %调制信号
' U( x) t5 W2 d7 F. k0 t, B& P
%*****************************************
8 o1 W' e2 X$ Z/ @# E* c! Z& b
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
; Q( c# g2 O- F4 g4 x# b/ K# D5 X: S
%*************添加高斯白噪声**************
% ]% M$ ]& B7 U$ j, u6 H! T
sn1=10; %设定信躁比(小信噪比)
3 s& D8 p7 n. w6 A: k
sn2=30; %设定信躁比(大信噪比)
' N' U( V0 m* K& ]! S3 I. g5 U6 A
sn=0; %设定信躁比(无信噪比)
+ M/ |! J% T' c
db=am^2/(2*(10^(sn/10))); %计算对应的高斯白躁声的方差
5 q+ X1 L2 ?3 ?
n=sqrt(db)*randn(size(t)); %生成高斯白躁声
+ z) ], r3 g$ e" f0 o m- d
nsfm=n+sfm; %生成含高斯白躁声的已调信号(信号通
- O+ c' p% c7 P4 k
%过信道传输)
& v6 p( A2 M* ]5 Q( u q
%*****************************************
* b) Y$ e8 X' q" S! ?
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
7 t* I' F! u- G$ r5 c0 x
%****************FM解调*******************
' K& V; }" M1 u; V6 K+ o; K# q
for i=1:length(t)-1 %接受信号通过微分器处理
! l2 s; e$ J7 I* i" f. I& S
diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
$ \- H. ]8 }! ~( S; z U5 Q
end
# H% Q# ~& Z6 @5 E
diff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)
0 ~/ _+ l0 u8 e, T- i1 h8 e& `
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
& {7 m2 s" \: Y0 l4 w% m' `
diff_nsfmn1=diff_nsfmn-zero;
9 V: s2 O' h9 f7 V9 e s
%*****************************************
# c7 Z1 M5 R0 W; l# T
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
0 m5 N5 b5 T4 A1 _) R! q8 f
%**************时域到频域转换**************
1 u6 k9 o: Y! U6 P& [6 ]2 K* t& l
ts=0.001; %抽样间隔
1 h" e4 |0 b8 q/ |: L) R7 q) R4 h: h' `
fs=1/ts; %抽样频率
4 k5 F. z+ z& n, p6 j
df=0.25; %所需的频率分辨率,用在求傅里叶变换
: w0 x7 ?7 ^$ j
% 时,它表示FFT的最小频率间隔
, O: _( \- ^6 R1 Y! M# b
%*****对调制信号m(t)求傅里叶变换*****
! P# m$ c* p8 I) [
m=am*cos(2*pi*fm*t); %原调信号
/ N- { m( l9 r" ]
fs=1/ts;
) j3 n! x' d2 g5 I
if nargin==2
# R7 S, H, F. W. M' |3 G
n1=0;
8 S9 g" l8 [" P
else
2 b$ W( }" v8 M* W& M$ f
n1=fs/df;
$ r- m* G2 X% e0 J' Y+ S
end
9 u1 k* {- ]5 \% d7 C8 |! q
n2=length(m);
3 @8 S! C5 |! H. z- }
n=2^(max(nextpow2(n1),nextpow2(n2)));
* B3 o5 O% H* A; r: J1 D
M=fft(m,n);
8 O& d7 B: P. A7 s" ?& w- j' _
m=[m,zeros(1,n-n2)];
8 e# P( r8 e! u0 y1 w. N
df1=fs/n; %以上程序是对调制后的信号u求傅里变换
m( c6 @' q6 g7 ?
M=M/fs; %缩放,便于在频铺图上整体观察
7 E2 ~( p, {+ H. l7 J/ B; Z( d
f=[0:df1:df1*(length(m)-1)]-fs/2; %时间向量对应的频率向量
. o% K8 K+ J# {) F% g# e
5 }$ K5 h) W9 M$ ~- i5 Z2 e8 r6 v
%************对已调信号u求傅里变换**********
5 Y7 G! l( M; ?
fs=1/ts;
; b: m1 b) c0 a2 b
if nargin==2
6 D* V. O, @0 l$ S
n1=0;
( z( o+ Q6 O7 p3 X/ v; x2 L$ U
else
: y$ o+ ^7 B5 t* g0 l4 o
n1=fs/df;
9 l! n w6 r; {5 H P# ?
end
" }6 m. n/ {* E
n2=length(sfm);
& I+ @- H: e# N1 H4 b
n=2^(max(nextpow2(n1),nextpow2(n2)));
( K) [/ [* W9 F1 T& l8 w
U=fft(sfm,n);
) ~/ o" I. q1 U8 N i4 {$ i
u=[sfm,zeros(1,n-n2)];
: @& e+ n- E7 e0 c, A( U% f5 w- E
df1=fs/n; %以上是对已调信号u求傅里变换
_3 q% V( |+ O$ G" ` ^) T' z! S8 u
U=U/fs; %缩放
, J, l% q3 e% m" c ^$ q
%******************************************
& O$ D4 V7 Z+ O! @. `
%*****************************************
; y9 w: F' k- |) X
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
) V# F X" i8 O/ {" ~7 O
%***************显示程序******************
! v) f2 _& F- H U$ h/ f. H
disp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')
z: e: d$ @$ _2 x& p6 \
pause
: }: o8 R/ o% D/ F9 B1 o
%**************figure(1)******************
3 e& w7 L6 N. x' y3 _. W$ ] T
figure(1)
+ M* m$ T. v2 P8 m
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
/ U# K8 S' w( }5 V8 y4 i! M
xlabel('时间t');
9 C7 K! c3 ]1 u/ y# y
title('调制信号的时域图');
- O- @' d: C+ n8 d. L" {% x
subplot(3,1,2);plot(t,ct); %绘制载波的时域图
" t- z2 R( ?: a) S
xlabel('时间t');
9 G) q, l5 I6 F) b
title('载波的时域图');
) z4 i" L0 ?. E
subplot(3,1,3);
) [% i2 m* _1 ?7 K7 I* [
plot(t,sfm); %绘制已调信号的时域图
, p2 s5 u( C. R. ~" j# z
xlabel('时间t');
- y; c* c8 y5 ^3 p8 c! `
title('已调信号的时域图');
) ]2 E: V6 z" G- X( l q9 t$ b
%******************************************
! G! f8 _$ n$ q
disp('按任意键可以看到原调制信号和已调信号在频域内的图形')
. [$ x! E6 ?/ m6 X) h! L ]6 ]
pause
8 c. d1 G0 ?4 Z0 L: M# A. e
%************figure(2)*********************
- T) t7 T6 [0 g
figure(2)
~, {- u8 d& a, @" C
subplot(2,1,1)
3 t, |2 c: I' Y( f
plot(f,abs(fftshift(M))) %fftshift:将FFT中的DC分量移到频谱中心
* J0 k4 ?6 p: D8 k5 t" F) I1 c
xlabel('频率f')
4 X9 ?# R5 P3 ^ n" i2 o4 x0 w
title('原调制信号的频谱图')
) G0 ^- Q7 O( w0 ~
subplot(2,1,2)
5 C! D, r, r* z/ g
plot(f,abs(fftshift(U)))
; s6 S/ A) B- _) E
xlabel('频率f')
, `. m4 i' c9 p2 i1 x# |
title('已调信号的频谱图')
+ w) I6 S6 V; L3 Q1 r; _0 n# L
%******************************************
$ b) m5 T1 d" I* T8 O2 h2 K" Y
disp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')
5 F( n \; Y* n0 k$ A
pause
2 x6 k& ^2 T2 e, [, m
%**************figure(3)******************
9 h- z R" }; J* E# b) k. ]) R
figure(3)
; p& n& {1 y/ z
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
3 l, D) K: a( p' B; |3 ?
xlabel('时间t');
+ S" l4 r K5 n. t+ d
title('调制信号的时域图');
$ F6 W c' B, m# i" Y" A
subplot(3,1,2);plot(t,sfm); %绘制已调信号的时域图
8 ], t' _; [5 r" E A# Z' ?
xlabel('时间t');
/ U" f* p* T' ]/ U
title('无噪声条件下已调信号的时域图');
) u$ s, V) m! e; y& m) {; P# M
nsfm=sfm;
' X# T$ J( h, \
for i=1:length(t)-1 %接受信号通过微分器处理
% T# }0 x0 W+ W4 {5 U
diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
/ B6 L- x8 H7 I; i- u$ v. R
end
/ \3 J& w5 m2 ?3 @- T# @, e
diff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)
[+ i( ]$ j) C" w( J, B3 d; V
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
3 M8 o9 Z& h; O8 C
diff_nsfmn1=diff_nsfmn-zero;
- Z4 }8 C9 `! d4 i: O
subplot(3,1,3); %绘制无噪声条件下解调信号的时域图
% y7 d+ X% C& D5 }$ O* |
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
7 y f$ ~" @& k. x& F
xlabel('时间t');
# W9 i0 X- }) p) r; w3 f
title('无噪声条件下解调信号的时域图');
$ J2 o6 @7 y% m3 V# k3 {* R1 o5 t- L
%*****************************************
3 h d% S% Y+ J# X
disp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
/ k; K- @0 K6 P4 v Z# @
pause
0 P4 J2 L4 w/ f A( w t' k
%**************figure(4)******************
9 c" |/ M9 R* `
figure(4)
6 C* j, x: ^" @: @' F
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
; t m6 |& s' P# r* D
xlabel('时间t');
+ P9 R+ @. D8 u- F
title('调制信号的时域图');
}0 |4 A+ s& H v; F3 i
db1=am^2/(2*(10^(sn1/10))); %计算对应的小信噪比高斯白躁声的方差
- O$ b. C6 \1 y( N5 t$ Y# O
n1=sqrt(db1)*randn(size(t)); %生成高斯白躁声
( I! T% P1 \% H8 s
nsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通
/ l, \ S" E5 q6 K) V( j3 ?; ^
% %过信道传输)
/ q: s6 G% k0 g
for i=1:length(t)-1 %接受信号通过微分器处理
0 ~! z1 i* i: E! k1 C
diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
4 c' P# }! N+ e
end
& {& {$ e$ d9 r* c! ^
diff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)
3 m# g- p' ~% T3 ?% z1 e5 d: C
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
$ {' K- @4 i" r: ^% P2 x( F9 b
diff_nsfmn1=diff_nsfmn1-zero;
. x: g/ O& J4 i
subplot(3,1,2);
' F! j* v5 s* i# Y7 U% a! ?
plot(1:length(diff_nsfm),diff_nsfm); %绘制含小信噪比高斯白噪声已调信号的时域图
% R; L$ `7 t4 v- S9 T0 i
xlabel('时间t');
/ l( D+ i$ G8 p, w; w4 A8 `
title('含小信噪比高斯白噪声已调信号的时域图');
. b5 x# G: f& G( j: E% j& V3 c6 T) {8 u
subplot(3,1,3); %绘制含小信噪比高斯白噪声解调信号的时域图
7 F$ V! X8 N* L
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
% z5 C }% i7 O0 c
xlabel('时间t');
- ~7 G7 [9 d* `; z1 C
title('含小信噪比高斯白噪声解调信号的时域图');
+ k; b- L* ]5 E$ t8 K
%*****************************************
2 h- b/ B" ]1 s" E" i" Z; V, }
disp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
) ]; f3 e% t# B
pause
5 u7 T* B6 o; j% n8 a: |. G, d
%**************figure(5)******************
7 O! X( y! {+ x
figure(5)
3 K, V; d4 z" @7 P& f2 [5 M$ Y. c
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
: r( Z% ^( w' \( V6 t7 |' c. X9 \- E
xlabel('时间t');
' V8 h! \0 I2 E! `$ L E; R
title('调制信号的时域图');
! y+ V0 l- u, V0 i
db1=am^2/(2*(10^(sn2/10))); %计算对应的大信噪比高斯白躁声的方差
& S& b5 M7 i6 d, R u2 e
n1=sqrt(db1)*randn(size(t)); %生成高斯白躁声
3 Q$ \6 e- m* ~) O5 L2 ^" y
nsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通过信道传输)
* b6 `' N/ ?. d2 W& L% f
for i=1:length(t)-1 %接受信号通过微分器处理
% G8 C1 i" v( p* P5 c) Q* ~
diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
7 g$ i$ ?) }3 c
end
* v8 V+ U. F9 Y4 ^1 N/ h
diff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包
: f; C6 a5 J- H! k, t8 p
% %络检波)
, t% C9 U/ @/ c' U( ^: A. O& I
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
6 M7 N* R- Y# k/ [6 W' P
diff_nsfmn1=diff_nsfmn1-zero;
7 J: A& S0 M1 \! c; M) r ~) u* R
subplot(3,1,2);
$ Q1 O, s8 e9 P- o
plot(1:length(diff_nsfm1),diff_nsfm1); %绘制含大信噪比高斯白噪声已调信号
0 [, ^/ M! ]: O$ G) b) q
% %的时域图
; ]1 O- z/ B+ x0 J ^
xlabel('时间t');
: \9 E0 R, ~: l$ v# ?0 P
title('含大信噪比高斯白噪声已调信号的时域图');
1 D: ~3 b a( b6 e3 T2 }+ V
subplot(3,1,3); %绘制含大信噪比高斯白噪声解调信号
9 y( ~7 D/ N. y" |6 ^8 u
% %的时域图
$ Z ]9 J8 R% k; y* u2 \
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
. P9 C6 _$ ?3 v& r2 I. Q
xlabel('时间t');
+ X9 J3 F1 s# i+ Y' P- }
title('含大信噪比高斯白噪声解调信号的时域图');
2 K2 A6 C0 _$ p- G, O
%*****************************************
0 r' ~; j( W/ C1 l
%******************结 束*******************
- ]9 B/ R. H/ }1 o- C% w
! p, ?, I- @/ a7 @
+ e0 f2 f" B( r: U6 s% T: g
作者:
李秋锐
时间:
2015-2-1 19:23
0 ` w8 s5 n: t u( t7 M
4 r5 y, d6 R3 u. B9 w* A# D
: `/ ]8 z" ]) V6 y
。。。。。。。。。。。。。。。
: g4 l5 ^; [3 C1 p+ P2 t7 o/ M
# F; F1 ^, Q8 o4 }
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5