数学建模社区-数学中国
标题:
FM调制解调系统
[打印本页]
作者:
李秋锐
时间:
2015-2-1 19:22
标题:
FM调制解调系统
%FM调制解调系统.m
) \+ z& y6 R: Q3 J
%频率调制与解调的Matlab演示源程序
, }" a5 }% S2 v+ Y8 R' @1 o- m
%可以任意改原调制信号函数m(t)
6 m/ \: k: B5 @
%电子信息工程 杜怀超 091308305
6 \. I# S6 O9 \& O) T; a" [
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
9 V: J a5 r: J/ G# t3 V
%*****************初始化******************
" v# O+ M" z. i; i
echo off
' |6 h5 N. L& d; T* J `
close all
. b; b% M5 b1 W% C7 Q, K+ i) N
clear all
0 F3 l O! I$ H
clc
7 r- g) d( a! }, B; y7 |
%*****************************************
2 S7 F" F& j& y
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
* v3 M' X7 i6 G4 i$ U) P1 b9 P
%****************FM调制*******************
$ s7 c7 e5 t6 e5 V4 z
dt=0.001; %设定时间步长
( S' n' O% k: d* x( A j) f% G
t=0:dt:1.5; %产生时间向量
! l& P! I2 X3 a
am=5; %设定调制信号幅度
+ T, W* s( w: u1 F8 B0 N# B" b& q
fm=5; %设定调制信号频率
6 k% U% T6 p: k/ {( H' y
mt=am*cos(2*pi*fm*t); %生成调制信号
! W4 F5 S4 N' F# ?0 Z, `& h
fc=50; %设定载波频率
7 P3 _. v/ \" V/ V a4 G/ B
ct=cos(2*pi*fc*t); %生成载波
6 P3 {! K! M. W/ a; C8 |
kf=10; %设定调频指数
4 C1 X+ ~" }8 \' z4 Y
int_mt(1)=0;
" f# \! C6 K: _% P; E6 U m2 r1 x
for i=1:length(t)-1
( U, [0 [" h: d# H7 h
int_mt(i+1)=int_mt(i)+mt(i)*dt; %求信号m(t)的积分
8 \* ^6 E( ~6 w9 d# z7 W2 U
end %调制,产生已调信号
/ W9 _& [, v8 P G" o
sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt); %调制信号
1 O- l$ L3 O3 B; A. G5 S, G
%*****************************************
+ I& B2 i' N; q5 x# [& H
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
8 u# l5 N2 }) K
%*************添加高斯白噪声**************
. W \9 r7 [* D/ g) U- B! t; Z) c
sn1=10; %设定信躁比(小信噪比)
- ]+ o: N( j: f; N V! [
sn2=30; %设定信躁比(大信噪比)
0 i. S0 Q- l+ _; @$ j6 {; H
sn=0; %设定信躁比(无信噪比)
: [8 l8 `3 W' M2 P* V
db=am^2/(2*(10^(sn/10))); %计算对应的高斯白躁声的方差
5 V. h, c* V5 j. S# x- q2 {; s
n=sqrt(db)*randn(size(t)); %生成高斯白躁声
2 o4 W- x3 R' a5 A( ^
nsfm=n+sfm; %生成含高斯白躁声的已调信号(信号通
) ^+ O% p9 V J( E
%过信道传输)
+ |( \& F, j# h
%*****************************************
5 N! \1 Z8 ~; n! c# n3 }! f! c
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
7 e% s% V/ V2 B$ h, ~
%****************FM解调*******************
3 a3 ~, ?2 I' x7 D1 L
for i=1:length(t)-1 %接受信号通过微分器处理
' T x& g1 ^4 d
diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
; Q3 V' g7 ^) |/ _+ K) d
end
# r& L3 Q# q0 t3 g, M
diff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)
4 R3 a& D! G& p. y$ n9 z" Y% J
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
3 O8 l- F" j2 J/ t1 H7 _
diff_nsfmn1=diff_nsfmn-zero;
# [! o1 Z% T1 @) N
%*****************************************
% X* q2 g) y3 v" A0 C$ @ [
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
4 E8 t5 s5 q- M
%**************时域到频域转换**************
& s- S' y0 |3 ?& O
ts=0.001; %抽样间隔
" x) j* S) o( M4 I
fs=1/ts; %抽样频率
) F. K' E; b' b/ A, s! a
df=0.25; %所需的频率分辨率,用在求傅里叶变换
' Y6 G" j; ?! _: c- y
% 时,它表示FFT的最小频率间隔
7 v* {# C1 j+ [5 t# ?
%*****对调制信号m(t)求傅里叶变换*****
) Z* I9 Z2 @+ s, q
m=am*cos(2*pi*fm*t); %原调信号
2 v: W K3 z) L6 L8 Y# Y- W
fs=1/ts;
1 D5 ^0 ]7 n% }+ G5 D- L
if nargin==2
4 K# Q+ [6 f* ?
n1=0;
' g7 ` A) n# t
else
, Y# l! x6 X* P3 J4 V4 c9 H, _
n1=fs/df;
" \4 Q9 T5 a9 ?1 W" ^) e0 e9 q; T
end
0 b. b# G) g- v4 {: I' ]5 T
n2=length(m);
1 n0 A/ P: M& p+ E, D
n=2^(max(nextpow2(n1),nextpow2(n2)));
. X' y1 v- i5 Q% x6 q
M=fft(m,n);
2 I& s, X6 L9 u" e0 Z% Q
m=[m,zeros(1,n-n2)];
3 e$ b8 T* w( s- `" b; e
df1=fs/n; %以上程序是对调制后的信号u求傅里变换
* g5 E/ O! ?8 `6 h2 X- C, o8 Q
M=M/fs; %缩放,便于在频铺图上整体观察
) k7 z* e% n, j U
f=[0:df1:df1*(length(m)-1)]-fs/2; %时间向量对应的频率向量
. v) ~( t) w+ Y' J
& O" c. t+ E- ]. o) ~: y! z
%************对已调信号u求傅里变换**********
) a, J2 M6 Y& k
fs=1/ts;
. m0 |9 P( @' f- y
if nargin==2
+ [+ z$ d, h( ?& s: ~0 @7 Q
n1=0;
% s! t; I0 J' D! A
else
# I- ?3 h9 m0 r
n1=fs/df;
6 n/ ^2 g3 v8 [
end
% s! t6 o y3 S$ O$ ~/ W3 ^
n2=length(sfm);
7 x2 w; E v: z+ ?
n=2^(max(nextpow2(n1),nextpow2(n2)));
" ^! r$ ]# Y' s# N0 Q
U=fft(sfm,n);
+ Z0 A( x& A/ W, [- n
u=[sfm,zeros(1,n-n2)];
+ M) v: |4 x5 X
df1=fs/n; %以上是对已调信号u求傅里变换
# }6 C4 I/ ~. ]# _4 f$ m
U=U/fs; %缩放
" o' s& {) X* M6 X1 z, v
%******************************************
$ _; \) m& l9 L0 h% Z3 W' j
%*****************************************
; h$ g& u7 A0 V) \' X
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
* x) t( ]2 g6 J) R6 C" e
%***************显示程序******************
" P6 X# O) a& Y( F! G0 L) h
disp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')
8 q) [, {3 z( d, N) n. P4 S, u
pause
6 I1 \( c- ?) b3 O: O8 E2 M
%**************figure(1)******************
4 ]4 [5 n8 Q- q
figure(1)
. T/ t! J) u3 D; U( H8 ^, u. E
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
- [% s9 t4 X5 A# v
xlabel('时间t');
`3 T" d% X' u( }7 L1 Y. e. E
title('调制信号的时域图');
" S" h3 e+ B2 d+ m( u* Z
subplot(3,1,2);plot(t,ct); %绘制载波的时域图
0 ?6 o+ B7 [2 Y- N. L) K
xlabel('时间t');
3 U/ Z9 e$ I6 p, X2 O3 R6 a
title('载波的时域图');
! |( Y% U( ?! v" K2 m. g
subplot(3,1,3);
4 Q1 d; t: m- k; h. _$ z6 s3 k
plot(t,sfm); %绘制已调信号的时域图
% c, P: z; j8 \" g1 c3 Y
xlabel('时间t');
& S* }! U) C4 V7 ? m$ E" I
title('已调信号的时域图');
% \% _! n0 K( ]/ m
%******************************************
4 j# I) u. G2 p; l- z1 U( [
disp('按任意键可以看到原调制信号和已调信号在频域内的图形')
4 k) {) J3 n. h; D7 `# _
pause
, f [6 h L$ T1 n# w( w/ \. @$ g
%************figure(2)*********************
: X5 v8 ^& h0 r9 f8 o
figure(2)
6 z6 ^" {4 [1 Q" _. t- l: C
subplot(2,1,1)
G6 H% `% W1 b6 O! _3 o7 J
plot(f,abs(fftshift(M))) %fftshift:将FFT中的DC分量移到频谱中心
: a8 U. A" d7 E7 w; j0 E
xlabel('频率f')
$ d5 L0 W8 x l! g1 @
title('原调制信号的频谱图')
' Q4 H. x) F' R- r
subplot(2,1,2)
* x+ e% q1 Y) Z: U3 Z
plot(f,abs(fftshift(U)))
/ A& e# @ p8 ]& N" X* C
xlabel('频率f')
, I: ~+ w! C+ q1 Z2 K9 E* U+ q- O$ P
title('已调信号的频谱图')
! b9 k* _! Q* D) v5 @# F7 M5 }: K
%******************************************
$ c" P$ u' s* j; M7 u6 \ A
disp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')
7 B. ?8 h4 u( K2 W, X
pause
" W. G8 E+ d- M, F
%**************figure(3)******************
* L8 J! N, D, H1 t: A3 y u: a
figure(3)
' g" C+ f3 {+ o O8 N8 B5 t* g
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
/ N: \$ N4 N9 E, N z* \
xlabel('时间t');
9 z/ x8 N" j" Q: A
title('调制信号的时域图');
# M! p3 y" o! o+ G; ?, P) W/ H
subplot(3,1,2);plot(t,sfm); %绘制已调信号的时域图
S- D6 W2 E0 Y/ W& h
xlabel('时间t');
, N/ Q( t4 S$ e0 i q5 F v7 E/ d
title('无噪声条件下已调信号的时域图');
" |5 V, v: s3 J v' a4 E1 m" F& @
nsfm=sfm;
1 @! k) U1 X1 q0 s5 I d F$ U
for i=1:length(t)-1 %接受信号通过微分器处理
# V) b8 p- \7 C9 N
diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
2 D4 ^$ M3 m1 m# E$ I8 n
end
9 J- b- A$ G$ r/ Y" G
diff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)
6 q# B p' Q) v# _! M. W
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
( T* b* ?3 p+ v3 l6 G
diff_nsfmn1=diff_nsfmn-zero;
& r F* ^7 R- a u! E- O8 d
subplot(3,1,3); %绘制无噪声条件下解调信号的时域图
" \5 Q: w# B: {; \% d& ?. ^" U
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
# H) c# k! t2 d( N# t
xlabel('时间t');
# s t$ x7 W5 p" a* c2 }: w% ], e
title('无噪声条件下解调信号的时域图');
8 V; z6 b, C8 ] W
%*****************************************
' j1 W! L' V/ R& n$ b! \
disp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
9 e/ q5 Z7 d5 w
pause
% s2 i+ _0 v, j
%**************figure(4)******************
; X* M5 L6 E( Y5 D% k0 s1 n
figure(4)
$ d8 N4 D6 D0 z( b( G/ y* o
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
Q7 t5 a9 g7 Y3 V
xlabel('时间t');
3 X; X% e) i; n! k
title('调制信号的时域图');
( v4 @: ^4 ]* e% J2 M
db1=am^2/(2*(10^(sn1/10))); %计算对应的小信噪比高斯白躁声的方差
% p- G+ m7 y& i: E$ f/ v3 \) Q
n1=sqrt(db1)*randn(size(t)); %生成高斯白躁声
& R+ ]/ c8 L! O# H% P7 z) H8 q2 F
nsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通
( y) z# C, s; Q% @! a
% %过信道传输)
) }" }/ q, b8 V- r
for i=1:length(t)-1 %接受信号通过微分器处理
" K! i1 `9 K! j; o7 o' U4 Y
diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
7 ~2 _. Z& Z% P) {4 a5 a0 _& l7 A
end
* K, `9 |! I; m5 R$ K1 {
diff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)
$ K+ @& V `' U1 n# q
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
% ~& M' I; W' X: j' H1 i% |8 [) e
diff_nsfmn1=diff_nsfmn1-zero;
% _1 c# E- `) k3 |
subplot(3,1,2);
: ^1 L( g/ m4 V9 n- H" j) |) ]
plot(1:length(diff_nsfm),diff_nsfm); %绘制含小信噪比高斯白噪声已调信号的时域图
4 p- K; d; q) c3 W
xlabel('时间t');
- U0 ?4 j2 X8 x! F7 L: i# A6 {
title('含小信噪比高斯白噪声已调信号的时域图');
% G r. N/ U: K% Y
subplot(3,1,3); %绘制含小信噪比高斯白噪声解调信号的时域图
- ?$ a* B$ B2 c7 D1 x; I0 O+ m
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
) w. Z7 J, ~* [
xlabel('时间t');
. ^0 L! k# z4 N# \; v
title('含小信噪比高斯白噪声解调信号的时域图');
/ q) w/ X. A; ?1 |' k4 W
%*****************************************
3 v( J0 t) a% w) F
disp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
+ x. ^% G* [8 j% M( j, e- F
pause
8 x" |' F! _# O2 b) p! f
%**************figure(5)******************
. H0 U; y$ L P5 Q( M p
figure(5)
' d( R! Q- t9 p
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
1 i9 S3 o4 Z9 d& a* b# B( W
xlabel('时间t');
+ x& V T) R, B; {
title('调制信号的时域图');
& h# w8 v a J* D5 d6 K4 e
db1=am^2/(2*(10^(sn2/10))); %计算对应的大信噪比高斯白躁声的方差
3 n. \9 b# c u% g- ]. u( E
n1=sqrt(db1)*randn(size(t)); %生成高斯白躁声
8 u; z$ b" B; D8 ]
nsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通过信道传输)
$ w" q0 w: m1 m) O* n! N& B9 P. X9 }
for i=1:length(t)-1 %接受信号通过微分器处理
% T; `; Z8 f# H+ t5 q
diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
b; Q) `+ f" j6 \% l& ^
end
5 K0 e9 M: a* l; ~# o0 @/ v
diff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包
, G3 `' [9 S2 ?. a& u# Y# h! V, h
% %络检波)
- P- u4 F" f3 x; F, U% G0 t
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
' }. V1 s7 h" N% y5 L: [
diff_nsfmn1=diff_nsfmn1-zero;
) x! u. e1 D* X @3 T. j, Q
subplot(3,1,2);
$ g$ Q- n) g1 X5 N% ]- u. m) m
plot(1:length(diff_nsfm1),diff_nsfm1); %绘制含大信噪比高斯白噪声已调信号
" w% X/ f7 |- g
% %的时域图
" D2 k" V0 u @/ j. J
xlabel('时间t');
8 p ` f: X2 G5 j% C
title('含大信噪比高斯白噪声已调信号的时域图');
3 V+ J8 M1 s: r" x7 d; x
subplot(3,1,3); %绘制含大信噪比高斯白噪声解调信号
, u: |8 ]* _+ t( U( F( Q
% %的时域图
, m# N7 ^# ]- Y
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
- q/ N* w0 a5 w, Q
xlabel('时间t');
$ z. F3 ~( u5 P- s3 M, J) }- s* A$ ^
title('含大信噪比高斯白噪声解调信号的时域图');
. t. P( r% `+ [0 a$ M, }
%*****************************************
$ t6 ]. o8 J7 u
%******************结 束*******************
) T8 H, l/ \: @0 i0 a5 g k' q1 U& v: R
6 s6 i* a5 s+ O9 K- g# G7 B" _4 \
7 v" `; r9 }; K+ E( F& w$ D- t6 i
作者:
李秋锐
时间:
2015-2-1 19:23
2 e* i1 H/ h- _; J5 @7 V
" C! K, g. |) z
8 [+ b1 [7 p s5 t) {. V
。。。。。。。。。。。。。。。
* l6 Y% k0 s+ H" t; B
/ |8 C. m, J2 O B$ K
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5