- 在线时间
- 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# w! p/ W4 ?9 Y/ {8 @
%频率调制与解调的Matlab演示源程序% F$ l1 s) _6 @: O
%可以任意改原调制信号函数m(t)
: z) H- k5 a, r" \% S5 s%电子信息工程 杜怀超 091308305 # d! ?' C( A* h. c: }
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
6 A$ o# n. }7 _%*****************初始化******************) l1 H6 D! I, N6 j6 \5 M
echo off
{* p( F L: y* O( H) H9 \close all2 m* @7 @7 B/ v3 E. N5 [/ ?
clear all
, E. n6 S$ b" Pclc( r6 V5 L9 I. I1 f& X. u8 A
%*****************************************
2 ^8 |$ u' S% x# d( O/ i: `%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·5 m+ l6 o5 D. Z. X2 f! s+ Z+ @5 P
%****************FM调制*******************
- z: e ]( V3 g- q/ ndt=0.001; %设定时间步长; ~: G l, Y5 b; s
t=0:dt:1.5; %产生时间向量6 Q! |5 ~) o5 D) `
am=5; %设定调制信号幅度7 i& P6 Q# o0 T! e9 I1 `! ^
fm=5; %设定调制信号频率
& g; r8 C; v$ `$ f) _mt=am*cos(2*pi*fm*t); %生成调制信号0 E% R8 a6 o7 a5 Q
fc=50; %设定载波频率6 C5 N( G4 O% ?
ct=cos(2*pi*fc*t); %生成载波
% w A) \$ {2 Pkf=10; %设定调频指数$ t5 s4 Z5 j4 s8 W' v
int_mt(1)=0;
C: j2 O! O9 Sfor i=1:length(t)-1 + x; y& M1 {& ~5 q, N3 ^4 }
int_mt(i+1)=int_mt(i)+mt(i)*dt; %求信号m(t)的积分
, E0 T7 y& Q- \) T. S/ M; g- J% lend %调制,产生已调信号) n5 r- w: S0 |: d
sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt); %调制信号) e5 ]4 p: e: t/ o+ q
%*****************************************! j6 E# @" I% y
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
* y) p& i0 q: C" z- w# B/ n%*************添加高斯白噪声**************
& w8 \ W! S- o6 N2 usn1=10; %设定信躁比(小信噪比)
1 U2 c, f) x2 |$ G& K) V( }sn2=30; %设定信躁比(大信噪比)
! P2 T6 T3 {# t5 O" Xsn=0; %设定信躁比(无信噪比)3 Y* L! T1 {4 Z+ @! ~: W+ S/ F
db=am^2/(2*(10^(sn/10))); %计算对应的高斯白躁声的方差
$ o f' v4 P- s, Cn=sqrt(db)*randn(size(t)); %生成高斯白躁声
0 O( s$ Y) N, d" pnsfm=n+sfm; %生成含高斯白躁声的已调信号(信号通
7 ~4 f4 q" P6 W+ G! n%过信道传输)
- d' T' v `) j& V$ B%*****************************************
& h/ b, z8 _! {8 S%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
, g* B a! C% c%****************FM解调*******************; M0 G* ?* i+ z0 s# ?0 W* @( r
for i=1:length(t)-1 %接受信号通过微分器处理
' g# A- L3 m) U' t9 x9 f diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;* x# k: v8 B3 A( j0 G& ?5 \
end
* y" {5 T8 z( J5 Y# m: V) ~; S/ Udiff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)
/ X: O* o' m5 K3 X/ Q7 S; q" Xzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
4 P* f9 u9 U% O) E/ |; sdiff_nsfmn1=diff_nsfmn-zero;+ J( v) u: u# ? n6 q( @& a6 e: o
%*****************************************
8 f7 v) [3 \; v- M/ y7 E%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
, y: t1 O. x9 u%**************时域到频域转换**************
& h4 V6 g4 G6 j5 |" B7 L4 t7 `ts=0.001; %抽样间隔4 B' Q3 ~4 Q$ S k3 E' l. @
fs=1/ts; %抽样频率: c0 [% e9 _5 {, Z1 R, Y# M
df=0.25; %所需的频率分辨率,用在求傅里叶变换
. G$ d& ~, E* e' n+ @) T7 F- K5 w% 时,它表示FFT的最小频率间隔
) T; X( e) c" d) `( d%*****对调制信号m(t)求傅里叶变换*****
' n; W) r; m9 K9 |1 }3 k7 i# vm=am*cos(2*pi*fm*t); %原调信号
* }; x( N0 x1 v8 U, C: S0 ]5 J* X& mfs=1/ts;7 Q4 J1 P9 M4 o& c+ b. ?- i1 o
if nargin==2- S. h* m9 G6 n; V) r
n1=0;
9 j" V: {( y6 a' U. s8 u: g) nelse# p$ g( J* O1 A: Z
n1=fs/df;
/ u* I+ G& w. T6 [; {2 zend# l" i( q( M/ y: o
n2=length(m);
: n3 k4 ]# z, s7 ]n=2^(max(nextpow2(n1),nextpow2(n2)));
# i" g/ Y- G: w* {: j U- UM=fft(m,n);5 p; ]3 Z z( F/ m: v5 m- [
m=[m,zeros(1,n-n2)];
# f; L' l# z5 ddf1=fs/n; %以上程序是对调制后的信号u求傅里变换
2 N# |- e1 Y2 C/ }: `% \. U$ mM=M/fs; %缩放,便于在频铺图上整体观察. ^* E. k: j5 y7 N
f=[0:df1:df1*(length(m)-1)]-fs/2; %时间向量对应的频率向量
( f5 v; ]& X& a+ l3 M; e8 v; Y+ ~3 i
* w( U* E2 F9 l x% J5 w" K/ ?%************对已调信号u求傅里变换**********
/ [# S' {2 W2 s6 l yfs=1/ts;% x+ e2 E9 q+ o
if nargin==2
% w# p, v' v. q n1=0;1 x! F% N- [" M! a. W8 @8 M/ _
else
+ [" } n( P3 P( [& _ n1=fs/df;3 z; K! k5 c/ U# E$ T/ {2 |
end: @' D4 T- }8 R( h/ i4 p' w
n2=length(sfm);/ c+ K; t6 C: q: Z3 j
n=2^(max(nextpow2(n1),nextpow2(n2)));
6 J2 o9 P4 ]3 G( {U=fft(sfm,n);
) S) N- x# o Z5 v; l! l* r) Fu=[sfm,zeros(1,n-n2)];, w7 O$ a. Q# n7 D2 w
df1=fs/n; %以上是对已调信号u求傅里变换
5 w Y k; d g' \4 k: _U=U/fs; %缩放" O4 ?9 W& u2 p* ~1 r2 g6 C
%******************************************
1 U/ B/ G. p( c) }%***************************************** c9 n8 r$ e& H% Y8 l1 I5 Q
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
s: n0 ^7 b x5 a+ _$ S%***************显示程序******************
3 h: ^" c( r+ c4 k: @disp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')
9 b, X/ q5 d; v: vpause
8 M( a T5 b) O, f; z; i%**************figure(1)******************5 m+ M! Q% ?8 T' J+ j* V
figure(1)0 b2 _9 m7 |) h& L. ~+ g* N
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
& c; j+ R4 N9 B4 U! u) {8 X( M; ^xlabel('时间t');
+ s/ }0 j; I# @! s# gtitle('调制信号的时域图');
" ~- K; q+ t; o3 h: O$ ~8 F+ Asubplot(3,1,2);plot(t,ct); %绘制载波的时域图, U: ~6 e- y$ D! W. Z; n
xlabel('时间t');
6 x( H, f- j' o- A7 F7 l! |title('载波的时域图');
/ @, `! a& C5 X# Rsubplot(3,1,3);& V" T0 w; Z! G& D
plot(t,sfm); %绘制已调信号的时域图
. G5 H* ]6 _. a1 Zxlabel('时间t');
+ i4 v3 h: r( P5 Ztitle('已调信号的时域图');
( \5 P4 N- O- B# x5 p%******************************************
* [+ A' R- m; ?! c6 B9 Ldisp('按任意键可以看到原调制信号和已调信号在频域内的图形')
/ M8 _4 _3 e/ G' vpause
( z, V- r( A; g%************figure(2)*********************
/ y+ L) I# ?7 t9 `figure(2)6 A2 K& V1 p1 y+ ?( t
subplot(2,1,1)
8 f- T- D0 g/ }& j' R* Aplot(f,abs(fftshift(M))) %fftshift:将FFT中的DC分量移到频谱中心3 g( X w6 x' N+ v$ U7 {, y' [
xlabel('频率f')7 O7 B2 X# E: _. o; I+ e, U; Z6 n
title('原调制信号的频谱图')* t" P1 ]! N8 [, z9 ~
subplot(2,1,2)9 h6 { d" z# d" b7 V* F
plot(f,abs(fftshift(U))); ]+ L2 @# @- t+ n
xlabel('频率f')0 j$ T0 _; D( t( s+ W7 a- }( B+ n
title('已调信号的频谱图')0 q1 O2 _6 A9 ]& ?
%******************************************5 S9 X. B& u$ {: w, f
disp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')
0 c% q; R6 Y2 B" ^0 i" M8 Ppause
7 c9 Y7 {. b" V7 m6 q$ O%**************figure(3)******************
& ~4 F& w' Q/ f9 T+ X' Sfigure(3)' Y2 o( Q: Y6 V2 K4 G
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
$ b1 {7 Z) |* Z+ _, p0 W- r( |% E& uxlabel('时间t');
# x+ K1 M7 e. m3 h$ N: mtitle('调制信号的时域图');- l4 K; a) `* o, d0 y9 O! D, K
subplot(3,1,2);plot(t,sfm); %绘制已调信号的时域图( G( e2 ?$ y* K& {
xlabel('时间t');+ g( } T6 x& f6 l
title('无噪声条件下已调信号的时域图');
5 N+ Z S; S5 Q- N' [: f( Onsfm=sfm;
S( r8 q2 X6 hfor i=1:length(t)-1 %接受信号通过微分器处理9 ^4 _3 Y0 O+ {. k/ T e
diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
) c+ F$ C+ r( F5 P v$ E' @end- a" F0 B$ x/ o% g5 _' O6 N
diff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波). l1 q8 s3 W/ w/ Y+ ]
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2; e! t$ @4 q. V" a) ~$ \3 `) @
diff_nsfmn1=diff_nsfmn-zero;
# S7 @8 S3 ?, f! m* ?# ]' Gsubplot(3,1,3); %绘制无噪声条件下解调信号的时域图2 U. V1 M A. ?8 Y! q5 D4 L
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
$ e4 v h4 d- `" W! L% \xlabel('时间t');
0 Q& N6 C+ f8 [: xtitle('无噪声条件下解调信号的时域图');
! u+ V3 e) K) N, l%*****************************************+ T+ Q+ y- I2 m1 e
disp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
. O: E- G$ S9 S6 j* E1 Lpause% [' d2 C2 G6 c
%**************figure(4)******************" U9 h( X# o6 F2 D+ E0 K0 g# Q4 _
figure(4)/ C2 Y9 V+ h' [
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图3 Y: X- G8 b0 V. N: v
xlabel('时间t');
! l4 T3 ~- K z3 U Atitle('调制信号的时域图');
" \' f& ]: V X) Y. O# `( n( c( f5 {- Hdb1=am^2/(2*(10^(sn1/10))); %计算对应的小信噪比高斯白躁声的方差7 ?) p3 J6 S v m) g, U
n1=sqrt(db1)*randn(size(t)); %生成高斯白躁声
2 J/ r( g2 o# _9 g. Q- jnsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通
# v4 W) U$ ^- C e1 W" @% b% %过信道传输) A$ i2 W- Y- b/ m6 [8 {" @
for i=1:length(t)-1 %接受信号通过微分器处理
2 O* g+ D& n1 E: y9 p diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;- P d4 a. r! W. O* m
end& @4 K6 f4 z9 G \* `
diff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)2 \$ G; q5 U6 d/ y0 Z9 s
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
% ?8 }4 O2 `) O6 ddiff_nsfmn1=diff_nsfmn1-zero;: G' Z' U o' T! h1 n& ?
subplot(3,1,2);
8 z! r& S& X$ R/ O) W: R5 ^7 \- iplot(1:length(diff_nsfm),diff_nsfm); %绘制含小信噪比高斯白噪声已调信号的时域图+ N6 B& ^0 o# y* V) a' Q
xlabel('时间t');
2 e6 w6 N& v* O5 L. Ltitle('含小信噪比高斯白噪声已调信号的时域图');
9 P8 G: ]; Q6 @8 V' |* Q) ssubplot(3,1,3); %绘制含小信噪比高斯白噪声解调信号的时域图6 C5 u/ T9 i0 {& {' I
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');2 Y; I0 @5 H1 D/ v! J
xlabel('时间t');
$ L2 ?2 O3 d$ r2 `7 q& ftitle('含小信噪比高斯白噪声解调信号的时域图');9 D/ F. h, d+ O4 l B; l
%*****************************************' b. d4 A- o6 B+ B, a
disp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
! I/ N# v3 ]: g* a) B' upause, I$ [( B- a7 G7 I
%**************figure(5)******************9 V; }- |3 X+ |! t9 H& p
figure(5)
4 |) L8 V6 q! E! \, [7 Csubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图6 C* T) }5 a6 D, {" \& l: ?
xlabel('时间t');6 {: Q/ [& S* N1 x2 E
title('调制信号的时域图');9 u) p& N( `2 s# I/ X1 h
db1=am^2/(2*(10^(sn2/10))); %计算对应的大信噪比高斯白躁声的方差. O+ O8 D: E9 t) ^* h. w b3 L
n1=sqrt(db1)*randn(size(t)); %生成高斯白躁声
; a% m$ d" B6 e# K: n3 k1 Q4 Vnsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通过信道传输), V" P( z, ?6 G/ P+ q$ d ]- T
for i=1:length(t)-1 %接受信号通过微分器处理
9 x' J [* ?4 O diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;; x2 P" ^# a0 _
end$ g, E% Z1 y5 y% d. |
diff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包
# F0 Q) U l3 x: u4 P7 a% %络检波)( M" `4 @# _4 x/ o2 u& P
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;' f4 t6 F$ q7 ~' A/ A$ ^
diff_nsfmn1=diff_nsfmn1-zero;5 o. ?( g# |2 D( }, m# u5 J
subplot(3,1,2);
]% h$ }! a5 s1 W3 g2 ]2 uplot(1:length(diff_nsfm1),diff_nsfm1); %绘制含大信噪比高斯白噪声已调信号
, ]! J0 b2 S, X& Z. G+ v. u# m/ |% %的时域图1 ?: `5 b+ E a; _
xlabel('时间t');8 v' Q; P1 h) S0 r; n9 O
title('含大信噪比高斯白噪声已调信号的时域图');
* ~, q) [% ^! l4 x7 m/ E+ _subplot(3,1,3); %绘制含大信噪比高斯白噪声解调信号
8 P+ E1 n) b2 R5 _) e$ P; |, |$ d% %的时域图
; x+ o+ o4 ]. q1 R, p6 b/ W% Tplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');- z6 v' V* X/ q! v# B0 @
xlabel('时间t'); 5 z! I; m; U& o; |
title('含大信噪比高斯白噪声解调信号的时域图');1 O0 X& O1 f( U
%*****************************************1 V. F: f1 [) p. v/ G" f9 p
%******************结 束*******************
9 n# I c( x: _! |7 r4 R, Q2 o0 l3 R% a4 L4 l! q' U
9 [$ _* E; L3 `* O) H
|
zan
|