数学建模社区-数学中国
标题:
FM调制解调系统
[打印本页]
作者:
李秋锐
时间:
2015-2-1 19:22
标题:
FM调制解调系统
%FM调制解调系统.m
% r+ n* x7 L& s/ I
%频率调制与解调的Matlab演示源程序
+ K, M4 p3 Y! t9 l% W( t
%可以任意改原调制信号函数m(t)
/ D$ H4 r! H0 C% n5 q! e4 }
%电子信息工程 杜怀超 091308305
' C- d- P# D# j8 {! f; U
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
/ S+ c0 ~0 u" U% h i) G s$ S
%*****************初始化******************
2 s& v. N- n ]7 v* `6 H* _
echo off
/ A2 y. N" B) r2 p' K! D
close all
1 ?" c. o F* X2 E7 e
clear all
( r5 B& k t$ M9 z, l/ x9 a5 H
clc
. H0 K6 y5 y0 W2 X* W" t
%*****************************************
% ^' U2 p$ [! P
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
3 x/ u2 G9 F) x R0 q7 ^! D
%****************FM调制*******************
& X6 k7 e* W* p1 O2 w/ S4 z
dt=0.001; %设定时间步长
/ [; L* B z$ v
t=0:dt:1.5; %产生时间向量
6 a$ t8 t2 m$ ]1 U" Q, D9 Z# p; U
am=5; %设定调制信号幅度
* s3 [0 z. C) u5 a/ \, N2 l" ~
fm=5; %设定调制信号频率
) ~/ d# F. ]* s0 i8 X, V$ j
mt=am*cos(2*pi*fm*t); %生成调制信号
8 v! @+ x; s4 E
fc=50; %设定载波频率
4 ^' X) Y9 B6 l; w3 B
ct=cos(2*pi*fc*t); %生成载波
1 h. j9 I% i: u5 p
kf=10; %设定调频指数
5 N3 g) D0 I7 \ Z, a
int_mt(1)=0;
* T5 n8 \1 ^9 x* g/ G
for i=1:length(t)-1
- l" {& G1 b" ?1 s
int_mt(i+1)=int_mt(i)+mt(i)*dt; %求信号m(t)的积分
. S' T& [; r8 @+ @* z
end %调制,产生已调信号
$ v3 N; Y/ C5 z- L3 O
sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt); %调制信号
& d$ I2 Q* T- b5 `, y: [
%*****************************************
& P* n! ?' w4 S2 r4 J& c
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
2 c% w5 q" K# H9 \) n& h6 W8 K; d
%*************添加高斯白噪声**************
4 b* _7 q; d$ @3 ~# ]
sn1=10; %设定信躁比(小信噪比)
: x1 F5 d+ S& C/ u3 _ }
sn2=30; %设定信躁比(大信噪比)
5 j1 f4 r4 x( o! P ~% I. P7 x8 L0 C
sn=0; %设定信躁比(无信噪比)
+ }" g$ c, t4 o; x+ }2 w- I# u
db=am^2/(2*(10^(sn/10))); %计算对应的高斯白躁声的方差
9 k% t* q$ p. l7 y- H5 c
n=sqrt(db)*randn(size(t)); %生成高斯白躁声
4 e% A; d! p5 ? X* n
nsfm=n+sfm; %生成含高斯白躁声的已调信号(信号通
% N; s9 a: m! w; e# d$ T# _- G
%过信道传输)
4 U0 d, z+ W0 S* k: R0 _' E3 M
%*****************************************
) y t1 ]9 i* Y. d
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
) U, z$ q7 Q3 r- ^ [3 c; F6 t
%****************FM解调*******************
, o0 _* P; g* h, F: j, P
for i=1:length(t)-1 %接受信号通过微分器处理
# d: ]! h, ~ d6 O, F. |* y7 G, l( h
diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
$ j/ }+ r }& T
end
9 r& h: `. O6 \+ Q
diff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)
4 |: @! Y7 q6 t" ~0 t) v: V- D. {
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
% \7 m0 E! x q1 q( Z7 F8 N4 j
diff_nsfmn1=diff_nsfmn-zero;
1 @1 |: [8 O4 G5 j
%*****************************************
) y& B- s! I# g
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
9 g: n) j6 r+ Z# S
%**************时域到频域转换**************
1 w5 J0 \3 F9 B% @" ^$ [& ^
ts=0.001; %抽样间隔
9 j0 r2 {- h& i) q8 C8 X/ y6 v A
fs=1/ts; %抽样频率
6 |: p$ F6 x7 {6 g$ C) A7 T; k
df=0.25; %所需的频率分辨率,用在求傅里叶变换
9 V0 W, W, d. }6 Y
% 时,它表示FFT的最小频率间隔
& |% b3 G" C( m( p* C
%*****对调制信号m(t)求傅里叶变换*****
$ ~; s7 g1 J. F [" _; V
m=am*cos(2*pi*fm*t); %原调信号
$ c n4 [0 m/ \( }8 X
fs=1/ts;
: s; ~# c' Y7 |2 u# n" Z
if nargin==2
- p$ n( m( h m9 O# M! m$ R* o2 b
n1=0;
# |* i( L; C' f. |* b4 I
else
4 |, J2 P8 a( P |+ X7 _
n1=fs/df;
. f) w5 T9 y' f# Z, W
end
/ F7 z6 U) C( W# D4 d4 ~1 \; j
n2=length(m);
+ f( d+ d* O H% \
n=2^(max(nextpow2(n1),nextpow2(n2)));
8 Y# R# o4 N9 F: u
M=fft(m,n);
- I) e1 _/ v; i5 L
m=[m,zeros(1,n-n2)];
! _/ X5 T8 H- {4 L2 t# s0 m& K' L
df1=fs/n; %以上程序是对调制后的信号u求傅里变换
' l: z8 \! p: `$ i
M=M/fs; %缩放,便于在频铺图上整体观察
$ z8 X V& Y# t) { Q
f=[0:df1:df1*(length(m)-1)]-fs/2; %时间向量对应的频率向量
( I' p$ D0 v8 E, y& H
@" n( @% L: s7 `. E
%************对已调信号u求傅里变换**********
$ c# U8 x. t% c; }! [5 `" O
fs=1/ts;
9 Q- S3 p+ f. W: B' V
if nargin==2
9 F2 H0 A$ ~) k& ^) _
n1=0;
& `" |8 w2 w, T" M2 Q/ A- R
else
) `$ F! d/ g: J8 s
n1=fs/df;
; g4 E- J$ J4 Q7 T
end
' O. r: N5 ^. Q, E0 N" O
n2=length(sfm);
5 X+ y) B* a- K8 [; `
n=2^(max(nextpow2(n1),nextpow2(n2)));
5 n: A. n, X3 L$ h
U=fft(sfm,n);
4 k) e! g: U1 J- d/ }
u=[sfm,zeros(1,n-n2)];
2 B' g1 j' |# D; e% \: v
df1=fs/n; %以上是对已调信号u求傅里变换
7 V' x6 E7 f( i% S' B/ ~, F, {
U=U/fs; %缩放
4 K) |! _2 v3 x( b2 N
%******************************************
( C9 M% `8 @/ f4 n
%*****************************************
. d' _& _0 @# ?: I
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
; u9 j& ` a9 O. G% i
%***************显示程序******************
7 q& b( p% M6 i8 e9 j. P8 X$ `4 j
disp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')
9 H3 v% ]. Q9 v; P
pause
2 h( Y g1 b, u0 h8 Y, i, o# c# H- u
%**************figure(1)******************
/ o1 A; D, X2 }$ f
figure(1)
, }6 }6 I: {4 H# B1 t! o3 H3 _
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
/ o3 l6 S6 Z+ K# E0 b# j
xlabel('时间t');
1 L2 \+ R8 G+ R2 h
title('调制信号的时域图');
5 _5 o5 M2 D. a! j. l
subplot(3,1,2);plot(t,ct); %绘制载波的时域图
* d! |* I& i9 M' y$ f
xlabel('时间t');
3 |" [" T# w" E) Z$ B
title('载波的时域图');
6 g$ Q2 {* A( N; s- ?
subplot(3,1,3);
) n% d1 [) t8 u8 E* H' I
plot(t,sfm); %绘制已调信号的时域图
9 K- {, r7 d1 Y0 V
xlabel('时间t');
1 |* H$ g! A" O i2 j- f" m
title('已调信号的时域图');
7 y1 K0 e( K3 B( }1 T( \7 ]
%******************************************
0 x+ ]: S& J/ G6 p1 s( O5 C3 i
disp('按任意键可以看到原调制信号和已调信号在频域内的图形')
2 `- i5 U# ^4 f
pause
' o2 y; n8 q! E2 U; _- ~
%************figure(2)*********************
$ X$ `5 m- {% z+ ?0 \6 {
figure(2)
8 n: ]6 ~) i7 p
subplot(2,1,1)
( h0 e( z; v' ?3 t1 x# T) F
plot(f,abs(fftshift(M))) %fftshift:将FFT中的DC分量移到频谱中心
6 f8 G+ ^* U! K, Z- k& S2 e& q
xlabel('频率f')
( l& Q" h/ g- k
title('原调制信号的频谱图')
" v% ^' V B. L- Z8 Z4 p
subplot(2,1,2)
: M9 T/ T" `( C( v6 E$ m
plot(f,abs(fftshift(U)))
/ G/ j/ l* j9 C9 [) C- G
xlabel('频率f')
+ \1 v$ K! S! E4 L# d
title('已调信号的频谱图')
4 K9 G2 v+ q! G3 m7 K
%******************************************
8 j/ v* D6 Y, {+ y9 Q1 s/ o
disp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')
3 ]: s- f* g: t& k% h
pause
$ ^7 ]* A: K$ ?3 p! @
%**************figure(3)******************
0 Z+ s) {2 E1 @" W
figure(3)
9 R0 i; H% N" o
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
; _% n: s: x4 O' H
xlabel('时间t');
6 |$ S8 l* u' T+ q. G$ u; x
title('调制信号的时域图');
( u5 `! v0 f- u o
subplot(3,1,2);plot(t,sfm); %绘制已调信号的时域图
3 }. L' t% L# e( H. X! W) z( u
xlabel('时间t');
1 |1 a [* |1 g' ^( a7 \# _
title('无噪声条件下已调信号的时域图');
. |; b% Y2 W: a' [( n
nsfm=sfm;
7 N) @8 W; w# G! n. _
for i=1:length(t)-1 %接受信号通过微分器处理
7 \( R1 \9 u: P! z; m9 V! D3 n% E
diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
, y1 M. ^& v$ P; R8 u9 \- @
end
# v+ l/ }: ^# `& U+ K j$ w% |
diff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)
( U- E; `' g5 @$ o% v/ }+ D& A
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
1 O2 t( _' a4 W9 a; A
diff_nsfmn1=diff_nsfmn-zero;
+ C; y; L5 R- S% c
subplot(3,1,3); %绘制无噪声条件下解调信号的时域图
' x. g0 g# S1 E) F; y3 `+ @9 c. r
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
; `" x0 ^/ ^8 j. @8 L& p
xlabel('时间t');
& Z3 r! s7 z* e, }- \$ g. N
title('无噪声条件下解调信号的时域图');
+ c" i8 X# D9 F2 c1 f
%*****************************************
4 w7 q$ u3 z0 Y" ?' C7 w
disp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
3 S. x- o6 ^/ i9 L9 d
pause
t, _; _, E, W( x; g! k. j
%**************figure(4)******************
0 X1 Y3 \4 k( }8 i
figure(4)
. r- c5 `( e, ~. h
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
+ s8 m4 w& n/ ^0 L$ t1 G: Q
xlabel('时间t');
# n4 r4 O8 N# M$ ]/ X- Q
title('调制信号的时域图');
8 t, B' i, x) K9 i( h- C
db1=am^2/(2*(10^(sn1/10))); %计算对应的小信噪比高斯白躁声的方差
6 Y) A' L; G/ w0 w
n1=sqrt(db1)*randn(size(t)); %生成高斯白躁声
0 P& |$ H+ g" T
nsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通
0 o) W+ f. [" C0 S
% %过信道传输)
/ A$ {- l7 X8 K
for i=1:length(t)-1 %接受信号通过微分器处理
" M7 R& ?- Y+ U; ]
diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
n0 A r( s7 U! t
end
h1 }6 b/ E+ y7 Q" h1 }4 [2 C! j& P
diff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)
. u9 p1 Q# D8 p% v4 e+ \ ~
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
$ A) M0 ]3 J$ N9 V# }
diff_nsfmn1=diff_nsfmn1-zero;
( K. z! J6 Q/ m3 a4 G
subplot(3,1,2);
6 ]2 X( A! \! h/ B- K S4 A9 J+ T
plot(1:length(diff_nsfm),diff_nsfm); %绘制含小信噪比高斯白噪声已调信号的时域图
( }2 E8 G# @- N6 {' [) D. t
xlabel('时间t');
" y& B. D3 t/ E9 U
title('含小信噪比高斯白噪声已调信号的时域图');
' f) T4 N, @, }8 X
subplot(3,1,3); %绘制含小信噪比高斯白噪声解调信号的时域图
' k& B3 }( O u u/ g$ a8 [+ X
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
# i3 Z( X* C2 J/ M1 P
xlabel('时间t');
2 i2 I8 ?# l. \+ n. M
title('含小信噪比高斯白噪声解调信号的时域图');
3 W: y& W) L7 ^" s- h8 C# J) z
%*****************************************
) Y/ h% m& `, [! L
disp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
# y8 J/ w0 p' ~/ ]7 t
pause
! L* u) b6 X- H. z
%**************figure(5)******************
% v6 `! P [) Z& _( x
figure(5)
0 F( ]9 z& k4 T
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
- ]; {1 x: K) P, j. b
xlabel('时间t');
: x( M8 X& v* y6 H, Y
title('调制信号的时域图');
; ^( {5 K0 J- b1 |& ]7 X5 R
db1=am^2/(2*(10^(sn2/10))); %计算对应的大信噪比高斯白躁声的方差
' W' {( B* T8 ? c, u
n1=sqrt(db1)*randn(size(t)); %生成高斯白躁声
$ S, q! y0 J/ R' n) P5 q& Q/ U5 }
nsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通过信道传输)
) r1 P* ?0 {+ G: w4 [6 y
for i=1:length(t)-1 %接受信号通过微分器处理
% l, [7 A! p' z. [3 D
diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
4 N- s0 X3 y0 ^! v0 R0 L; ^, u
end
7 G8 r2 f& ?+ D/ R( d
diff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包
- J! S6 B; N" {. c' |( o
% %络检波)
3 P+ O; b2 b! e0 B( ~
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
2 x N! `! A& G3 S: u! B: d/ i
diff_nsfmn1=diff_nsfmn1-zero;
1 u' N+ Q1 l q) C+ o$ [2 ?
subplot(3,1,2);
. w3 `1 _6 f+ _7 H7 \
plot(1:length(diff_nsfm1),diff_nsfm1); %绘制含大信噪比高斯白噪声已调信号
: w. ^& j6 u) s; ~8 w
% %的时域图
' d, E6 D0 _7 D. T& U
xlabel('时间t');
4 e' F3 O+ |) Y& K3 o( Z
title('含大信噪比高斯白噪声已调信号的时域图');
& e9 y5 k; I% p' Q
subplot(3,1,3); %绘制含大信噪比高斯白噪声解调信号
- Y: j9 `0 F D' X$ l0 b
% %的时域图
! R: f0 t7 R5 K1 J! V# {* N, c. @. Z
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
$ D9 i }% O( v, D, N( \# e
xlabel('时间t');
' h& Z! K' E5 `0 H: O* ~
title('含大信噪比高斯白噪声解调信号的时域图');
! C5 H$ ?- {/ G7 A
%*****************************************
, l' m1 n3 i4 O* o2 c
%******************结 束*******************
& t( e! ~5 I+ z% c6 E5 s
% }% o& V$ `8 c% }/ A, z; u
! f1 `- q4 }; v3 ]
作者:
李秋锐
时间:
2015-2-1 19:23
N P1 ` p$ K
- ~/ d2 j3 e# D$ n( y2 ~
$ f. S$ s9 l% z/ Q2 y
。。。。。。。。。。。。。。。
! [6 b$ S: j% J1 R
" c+ E! h9 N, U* H" u9 h8 y) v
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5