- 在线时间
- 15 小时
- 最后登录
- 2016-6-24
- 注册时间
- 2014-5-13
- 听众数
- 14
- 收听数
- 2
- 能力
- 0 分
- 体力
- 158 点
- 威望
- 0 点
- 阅读权限
- 20
- 积分
- 76
- 相册
- 0
- 日志
- 0
- 记录
- 2
- 帖子
- 58
- 主题
- 14
- 精华
- 0
- 分享
- 0
- 好友
- 5
升级   74.74% TA的每日心情 | 奋斗 2015-3-29 18:44 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III
 |
%FM调制解调系统.m) s! e! e0 C! C- }8 v0 H
%频率调制与解调的Matlab演示源程序5 \2 K% s4 `; N8 k& k8 k5 l; d
%可以任意改原调制信号函数m(t)$ }, J; | L, b6 K3 [( d6 u9 f% i
%电子信息工程 杜怀超 091308305
% @3 M/ |* s1 N+ u& f% N. {- A; K%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
! b( t' q7 `$ g; u# T9 V%*****************初始化******************& u7 H# P/ s6 Y, Q# [8 U
echo off
: y; |) a0 O, L4 L* _close all
2 P# B1 j- v0 i; f$ \2 rclear all
3 c) @3 O# Q1 |5 {clc
8 a- P5 w1 Z# a8 m+ a%*****************************************
3 N4 n3 [( A2 _$ c; S: U3 F%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·0 K" C6 m w* `6 Y M7 |- F
%****************FM调制*******************
# `1 J- C. h6 Adt=0.001; %设定时间步长
, d% s8 Q! Q& J9 \% n2 a) @- O+ e+ @t=0:dt:1.5; %产生时间向量2 B! o, b$ m1 |- W
am=5; %设定调制信号幅度
; ^+ `( M: A+ j9 m9 a. ]9 S/ Mfm=5; %设定调制信号频率* J7 v* g2 C$ E8 K/ l. e
mt=am*cos(2*pi*fm*t); %生成调制信号
6 Y( N6 c1 `# p+ m( P- P# H/ A7 kfc=50; %设定载波频率+ k7 E' E6 O$ H* i9 V4 V
ct=cos(2*pi*fc*t); %生成载波- n. e5 l) U* E# N( @
kf=10; %设定调频指数
8 r2 l, b5 b' Q7 U+ S0 r+ e& P7 J# Qint_mt(1)=0;* o3 T3 f: A3 w+ k" o s( O
for i=1:length(t)-1 , X7 [" y2 y. B- G
int_mt(i+1)=int_mt(i)+mt(i)*dt; %求信号m(t)的积分9 U: ~' }* D, @8 X9 R) G
end %调制,产生已调信号
8 f3 \+ D9 `! e( A; U& {+ v5 P+ Isfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt); %调制信号
1 m1 t+ k* H( V# d%*****************************************' Y( y) u" H3 l2 K; e. Z6 [2 F: H Q! g
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
$ U! r. X w* p( w% I%*************添加高斯白噪声*************** g# y$ q4 L5 ?$ L$ z* f1 ]. X- ?- D
sn1=10; %设定信躁比(小信噪比): @. G/ n; X; h& U: f
sn2=30; %设定信躁比(大信噪比)
0 m" |+ J; |& ?8 h3 T2 Vsn=0; %设定信躁比(无信噪比)
* b2 L0 p4 n6 odb=am^2/(2*(10^(sn/10))); %计算对应的高斯白躁声的方差0 y5 ^ M* Z' _' F
n=sqrt(db)*randn(size(t)); %生成高斯白躁声
, P! x6 B$ v; S+ e0 a( }" }5 |nsfm=n+sfm; %生成含高斯白躁声的已调信号(信号通2 o$ q: x: V2 J" p! k
%过信道传输): h+ H+ x4 b+ v$ e3 e \
%*****************************************
" Q% C6 l/ ]* X3 T%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
# q* X3 ^" e+ u%****************FM解调*******************
W+ f. R9 d6 _. G+ sfor i=1:length(t)-1 %接受信号通过微分器处理
0 [0 d5 t, F. M4 Q C diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
7 H( H3 J, |+ {- b* a2 Q& Nend5 \. F: D1 U. q) s
diff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)7 _ Q2 e R2 D% o" T! }
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;+ m5 ]- M- q% N
diff_nsfmn1=diff_nsfmn-zero;
0 o+ o6 L( `+ D- N%*****************************************
' e8 D4 B' T; ~" u) X7 `3 H%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
( Q1 Y7 h3 d+ ?- q* @9 r%**************时域到频域转换*************** m% G. X4 N, k) A- V! }2 Q9 H
ts=0.001; %抽样间隔% Y$ W* E- d8 ]6 t* {4 ~7 C# U
fs=1/ts; %抽样频率1 k: N1 t3 i) K2 {) R: b) O# u9 W/ H1 O
df=0.25; %所需的频率分辨率,用在求傅里叶变换: k( \: e; f }7 o# H, M$ }3 c
% 时,它表示FFT的最小频率间隔$ t/ H1 N& [8 @% Y' d
%*****对调制信号m(t)求傅里叶变换*****
5 h$ y$ k; I* ^2 E7 s& Vm=am*cos(2*pi*fm*t); %原调信号
( M/ e5 S8 v! T( s/ lfs=1/ts;0 Y B4 n9 p6 s1 a- k; U+ W
if nargin==2# ~0 k2 M) P1 q& J1 f9 \9 R
n1=0;
: B3 L4 T7 U: Y; @ ?9 Y+ Melse- s1 E& Z! _; i! a+ o/ @
n1=fs/df;. w1 G$ p5 x8 ?8 g6 s
end& V: k( N* E0 e& e; k3 {) o
n2=length(m);8 C0 t" E% T: U
n=2^(max(nextpow2(n1),nextpow2(n2)));$ J# R9 b$ l9 X$ Q1 f# S
M=fft(m,n);% ` x* K$ R/ z: a8 a2 b, P
m=[m,zeros(1,n-n2)];. O' V; ^2 \( K) H. q
df1=fs/n; %以上程序是对调制后的信号u求傅里变换9 ^7 B. c4 F) Y! p) e6 N9 s# f
M=M/fs; %缩放,便于在频铺图上整体观察
" r/ k0 C! N5 I% b6 ^( J1 Mf=[0:df1:df1*(length(m)-1)]-fs/2; %时间向量对应的频率向量* x8 x3 r9 E7 c: u
. f# {0 ]! q, v2 `& v* E: }%************对已调信号u求傅里变换**********% @3 L! _7 Q7 i- }, Z, F. @4 I
fs=1/ts;# S! e& n' P: S; a* F' W7 b
if nargin==2+ M. X/ O! a7 ^. |. ` i- p
n1=0;! s% A. R7 T$ q3 i1 ]; y" ?
else
* y7 i$ D% N! V n1=fs/df;
j |9 X' ?9 j! z# Yend
6 e2 W, F8 l, f5 k; ~5 B# v" t Yn2=length(sfm); } F1 B0 U0 w a* n. E7 K% y, h
n=2^(max(nextpow2(n1),nextpow2(n2)));( K E* G* [, j2 r" p
U=fft(sfm,n);
+ ^4 _6 x+ V, a) r# q8 Tu=[sfm,zeros(1,n-n2)];
1 K7 r/ U/ w/ Q8 C2 Z+ D S( {& ]df1=fs/n; %以上是对已调信号u求傅里变换7 a* E/ H3 q# C2 ~+ t
U=U/fs; %缩放
) ]' s6 Z6 n& |0 b%******************************************( \: ^0 i1 [1 c
%*****************************************
0 X% s% m% V/ Q- U" m0 {9 g%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·8 N( h: U9 Y1 R. d# t" V v) s
%***************显示程序******************
- a1 O& s6 A) m+ R# {5 udisp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')6 ^3 [! z7 c) l, d! T" m/ i' M
pause! C% K% {' @6 P5 h% a. W' ~
%**************figure(1)******************+ F( E7 ^3 a( _+ A- m+ e8 v
figure(1)( j9 O& M' c( {0 X' ?
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图$ d) w3 Z$ t0 `) a5 |- g
xlabel('时间t');" n! d$ E V1 o5 v
title('调制信号的时域图');
/ ~4 {- I1 y8 R% S2 Z5 S. g: F5 k( u% osubplot(3,1,2);plot(t,ct); %绘制载波的时域图
9 N E, b+ f+ x+ t, F: Q6 k+ Txlabel('时间t');
2 C# V8 Z' I5 S0 N2 B/ Mtitle('载波的时域图');
# T# L0 l( O' e* l! R* f. d% X- Hsubplot(3,1,3);5 g4 d* }4 }; ~8 r) {3 p: E
plot(t,sfm); %绘制已调信号的时域图6 C' b+ q$ u. y \ v' Z8 C
xlabel('时间t');
* x3 T- e) k9 D+ h% l$ ytitle('已调信号的时域图');
O" r4 q9 G [%******************************************
( E, t& c) w' s, ~* i qdisp('按任意键可以看到原调制信号和已调信号在频域内的图形')8 k% i7 P# K2 ]# j' H& [, R0 i
pause
; D3 C M- A f; Q) y%************figure(2)*********************
4 s$ X s! o$ a: a( d6 Gfigure(2)
1 D0 U- B" P4 p7 _subplot(2,1,1)% \( V# t: Q, j4 A1 A! w/ S
plot(f,abs(fftshift(M))) %fftshift:将FFT中的DC分量移到频谱中心
. |; F3 q. `% m J* rxlabel('频率f')
/ J& T, E1 G9 v. U M. ktitle('原调制信号的频谱图')7 Y+ Z" Q" i: {/ j" {
subplot(2,1,2)$ B( u. _0 S. o; L$ B
plot(f,abs(fftshift(U)))7 r0 m0 r0 Q. D, {7 p9 m
xlabel('频率f') e; x/ @2 k6 X" E+ l( T
title('已调信号的频谱图')) P) H& g8 H" W; R: o, h
%******************************************5 A4 A& o0 x- [' b
disp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')5 r L4 \6 P0 L- R
pause
& D$ w2 ]" K" j. x6 e%**************figure(3)******************. B8 J9 v9 _( p2 R2 N" a3 G- j
figure(3)) U$ h S' U" ]) J, D- n2 C$ W
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
( `0 z+ [& K8 Z: h' U# V# hxlabel('时间t');
" j8 v4 u6 k/ ?& Ptitle('调制信号的时域图');4 Q/ E1 `5 X) R
subplot(3,1,2);plot(t,sfm); %绘制已调信号的时域图
/ h+ d. b! l1 n5 P/ [6 I. y" yxlabel('时间t');$ }4 h7 R4 C0 o- a# n4 I
title('无噪声条件下已调信号的时域图');
4 x @# g4 y& y( ~& i9 f$ @2 Nnsfm=sfm;
3 }) @7 V/ G2 H X" H, U3 [8 R% ~for i=1:length(t)-1 %接受信号通过微分器处理5 N& j2 A8 T" D0 J
diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
9 B, j1 l4 k5 K5 @8 Mend
0 ~3 S1 b7 O: g. N0 n& ^1 hdiff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)
. a5 Q$ r% m6 x9 f" c7 I) ?6 lzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;, a$ D+ ~, m! e) x
diff_nsfmn1=diff_nsfmn-zero;/ L7 p9 H( X& ~
subplot(3,1,3); %绘制无噪声条件下解调信号的时域图
' }; g9 N9 n+ b+ \1 G2 W- v+ R7 q$ L jplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');* y" E" i- g" j1 ~8 E; @
xlabel('时间t'); 5 H) q" `. W7 q0 w8 @$ I
title('无噪声条件下解调信号的时域图');9 m9 }; F5 t3 r6 Z# {8 v; q$ S
%*****************************************% p6 s0 H9 ` T. r
disp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')0 e6 H. t e# ]0 O8 a9 L" P& V8 k( J
pause
( u8 m4 w! C, X0 M* h%**************figure(4)******************9 d8 x3 @9 Z. r& z j; X, o4 k+ [2 q
figure(4)
% f6 i# @1 J& F/ p4 Esubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图, [ B+ S3 B8 g; e. P7 T
xlabel('时间t');
* x6 H$ r+ O" A" {0 _. etitle('调制信号的时域图');4 {( s( ]* @# c
db1=am^2/(2*(10^(sn1/10))); %计算对应的小信噪比高斯白躁声的方差4 L$ y3 m2 V2 k3 m* D$ ^
n1=sqrt(db1)*randn(size(t)); %生成高斯白躁声
- Y, Z9 h6 J, t8 [( y- T/ k1 fnsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通
1 s" z) V. n* Q1 Y2 ] F5 q% %过信道传输)8 A2 b2 O$ F2 a/ ~3 M
for i=1:length(t)-1 %接受信号通过微分器处理
: U4 y# I6 S% _/ m; L4 Y' t diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
* k2 I: Y5 ^/ u' K1 w" d/ Eend
" Y5 g2 K k( j9 \' Q3 c. ^diff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)5 s+ @( L2 k0 e3 F% D
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
. Z8 Y$ k1 D8 P! O4 zdiff_nsfmn1=diff_nsfmn1-zero;
* O/ X. M) X, M2 c( q9 _( c- Hsubplot(3,1,2);1 n" O7 {' \/ d+ M( c0 c) ^( P
plot(1:length(diff_nsfm),diff_nsfm); %绘制含小信噪比高斯白噪声已调信号的时域图. C& H. L: E* o" |! I# T5 L4 C& f
xlabel('时间t');
8 d8 Y+ c" \# y; \$ Etitle('含小信噪比高斯白噪声已调信号的时域图');+ R! ~9 X1 t" z/ W5 F
subplot(3,1,3); %绘制含小信噪比高斯白噪声解调信号的时域图
' ~' \4 N4 w) F% h3 Rplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
% D9 E- a1 S& A; s' R7 b5 fxlabel('时间t');
. q# O1 N O5 gtitle('含小信噪比高斯白噪声解调信号的时域图');2 R d7 H' }/ X7 |' s9 N
%*****************************************3 d5 s9 F$ e* U( U
disp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线') Y1 V. P1 I9 X" r7 s" b! i) p
pause0 v2 ?5 k) ]' z' [- V; m7 [
%**************figure(5)******************
' ~8 h% A- \4 Jfigure(5)
* } s( J/ \8 d% `: O& dsubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图8 O4 \# G, G% L) }) i: A5 O( c
xlabel('时间t');
~7 ]: ^$ {7 p) s, d6 @3 D3 z7 o( xtitle('调制信号的时域图');
6 u& W `* l: n/ ~ o5 F2 U) odb1=am^2/(2*(10^(sn2/10))); %计算对应的大信噪比高斯白躁声的方差
0 A4 a2 t- l; a! P* @: Qn1=sqrt(db1)*randn(size(t)); %生成高斯白躁声5 b5 m( P# o* S: q& D8 e/ Y5 n
nsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通过信道传输)
4 e7 H$ Y% x) t/ tfor i=1:length(t)-1 %接受信号通过微分器处理
0 ~) y1 w, z6 z diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;: a4 V; ]8 n% V: O/ G
end
8 Z4 A; M4 y3 b( U9 q1 H4 v4 Xdiff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包
2 ^. r, B) F) G7 Q+ {2 a% %络检波)1 U m' M% _; k9 r3 K; ~6 N
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
: o2 ?, g! X& }- Zdiff_nsfmn1=diff_nsfmn1-zero;+ g3 w! H3 b( q9 e @/ f* O
subplot(3,1,2);
0 ~& g/ g5 X- I, u' e+ y1 Splot(1:length(diff_nsfm1),diff_nsfm1); %绘制含大信噪比高斯白噪声已调信号0 s" v" ]! k# u9 s# |% h: L
% %的时域图4 e1 |! q- @* X7 \$ o
xlabel('时间t');
5 S- C1 y/ m5 o9 l" a& _" {title('含大信噪比高斯白噪声已调信号的时域图');
% R% N$ O( H" i" S2 ?1 L( w* ysubplot(3,1,3); %绘制含大信噪比高斯白噪声解调信号
% N: \% i9 J# k% %的时域图
( Z# G) O& n3 Q: h2 wplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
, c; B* ?8 [6 O8 ixlabel('时间t');
5 R" m+ q) j; m" ptitle('含大信噪比高斯白噪声解调信号的时域图');; q" X/ z: ^7 d# @( _6 A& f
%*****************************************
5 I* a7 i' Q, B0 h$ k- A%******************结 束*******************0 z4 j6 a8 w$ x$ P
) k1 l" [5 S. ~/ z
# [$ u, J, [& `; h) Y7 Z% L
|
zan
|