- 在线时间
- 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
& b' f9 ?" `% t%频率调制与解调的Matlab演示源程序2 M$ Z, |- L; T: m9 W5 v, f
%可以任意改原调制信号函数m(t)
4 j3 r$ C0 t/ B%电子信息工程 杜怀超 091308305
' p4 ~/ ?, {7 q4 R%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
$ U/ |5 K6 n" D! X/ o# @5 ]%*****************初始化******************- v4 l% U' l3 m4 J& Q
echo off
6 O! A& {4 G' E0 i/ v! `close all' H( b. v4 y3 F% a, g4 h) M/ c% R! n
clear all P/ I' V8 [; T/ ?
clc4 x8 Q" d5 k) n: k6 U
%*****************************************4 \ n2 n7 h$ O; g8 V1 ]0 p
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·$ @( P! P9 T0 J8 v- p' f' | Z
%****************FM调制*******************
& U1 w/ q* _& z& W* y, y6 B- fdt=0.001; %设定时间步长
% d. P5 F1 w) bt=0:dt:1.5; %产生时间向量
0 p+ U/ |' k# }+ ^3 P( f) {am=5; %设定调制信号幅度) T- b/ h8 Z# ?5 C- N5 n- o4 u: _$ j
fm=5; %设定调制信号频率5 p" A( b9 A+ t1 G6 O: @
mt=am*cos(2*pi*fm*t); %生成调制信号7 |2 X6 ?/ c- i" S5 N" l; v4 x7 P
fc=50; %设定载波频率7 K% u b0 Y# s5 }# J1 [
ct=cos(2*pi*fc*t); %生成载波7 p9 Q w& ~8 K3 F- M/ X/ E3 |9 R
kf=10; %设定调频指数
/ z" x6 ~ w2 R t, v Dint_mt(1)=0;" F8 U8 f) U6 f$ [
for i=1:length(t)-1
4 _6 N, N0 G- K3 i1 Z8 B int_mt(i+1)=int_mt(i)+mt(i)*dt; %求信号m(t)的积分
) B) @) v% z5 `( B' yend %调制,产生已调信号/ q+ g4 z" e; y4 c' t. u
sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt); %调制信号& Y6 b' v$ D* l
%*****************************************6 e8 U7 \: t. p$ F
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
) A8 @+ O) t: K7 w1 r9 V ~$ K% C%*************添加高斯白噪声**************
r6 v2 O" O% D* x' i$ xsn1=10; %设定信躁比(小信噪比)
# J9 X n, h: B8 \sn2=30; %设定信躁比(大信噪比)& [. @7 [% P) d% ^
sn=0; %设定信躁比(无信噪比)( X) {) H$ P) S% i
db=am^2/(2*(10^(sn/10))); %计算对应的高斯白躁声的方差
! N5 _" H, [! k3 D8 ~9 zn=sqrt(db)*randn(size(t)); %生成高斯白躁声
- _: D' C! I3 ^2 |6 W% Mnsfm=n+sfm; %生成含高斯白躁声的已调信号(信号通 P4 \5 Y; v8 m7 v7 f
%过信道传输); R3 J# X, `& X: m, n( n; {3 D
%*****************************************. b1 p! P( T$ l! w+ ]3 K
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·5 O: A3 [; p) W* b, k( c+ s* z9 w
%****************FM解调*******************
# T* M2 h! b& h, f% l/ V) K' p2 Sfor i=1:length(t)-1 %接受信号通过微分器处理1 ^* |, @* O( Q
diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt; g& b; L. e( k/ R2 P, [3 ^9 L( I
end2 S' C5 J2 b- w/ x# ]+ d4 [( _- _
diff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)
3 m. _$ Y+ g! @% hzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
( X- }7 X$ t/ Tdiff_nsfmn1=diff_nsfmn-zero;
. w( ~: j8 w& P6 a9 f$ B%*****************************************& f, i% M( o6 d d3 y* R
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·- i7 {) ?6 Q$ ~& c( C3 p: B
%**************时域到频域转换**************8 w! `* _( J8 v
ts=0.001; %抽样间隔; q, W+ d9 j# W/ o/ N5 C
fs=1/ts; %抽样频率) C8 b4 z# X, c; c% S: v
df=0.25; %所需的频率分辨率,用在求傅里叶变换
1 j3 ~; i3 T& e! l9 d. P& E% 时,它表示FFT的最小频率间隔$ k. c. O& l {# m$ A- K
%*****对调制信号m(t)求傅里叶变换*****
: J6 O& i, M* k4 w0 t/ Wm=am*cos(2*pi*fm*t); %原调信号5 j/ o5 ]! A( r2 K0 N# ]4 l6 ~
fs=1/ts;1 y! Y6 K" M$ k: k6 {
if nargin==2: }, D/ H2 {# P' }
n1=0;
9 n! Q8 N( K) u& x$ v& gelse3 ?, L$ s+ Z# t' d L" Q5 M8 \2 j* x
n1=fs/df;
9 `% o9 e* [/ u( G: N( W: ^) H2 x& Kend1 B2 `6 R5 v$ |) S
n2=length(m);3 `) u: T3 f- N& _5 t/ [
n=2^(max(nextpow2(n1),nextpow2(n2)));
8 r0 ~" Y- T" K/ k& r* K; r6 p; HM=fft(m,n);3 ?* _( D* T. |% s6 {
m=[m,zeros(1,n-n2)];
2 a: ^$ u9 h* n5 Idf1=fs/n; %以上程序是对调制后的信号u求傅里变换' T4 @: Z6 E L2 C4 r
M=M/fs; %缩放,便于在频铺图上整体观察
7 N' t' x/ I5 s$ O% w6 J& }: M/ Zf=[0:df1:df1*(length(m)-1)]-fs/2; %时间向量对应的频率向量
2 {8 Q5 P$ A- p
. L5 o2 b; S9 J! u%************对已调信号u求傅里变换**********% I3 N$ }* ?6 N8 U
fs=1/ts;6 T$ o y2 U! ?1 r4 e
if nargin==2
. I/ O: ]% p. ?0 i0 Z n1=0;
* [. B9 v4 r: G! `, velse% Z# b+ U) p' ~- B
n1=fs/df;: \4 c; q- w/ n+ m" u- Q4 G
end5 k [1 E! a- C9 x7 u" E( X' \
n2=length(sfm);
5 ^% o6 D: }5 |" An=2^(max(nextpow2(n1),nextpow2(n2)));3 R' Q' [3 b8 e
U=fft(sfm,n);
( N3 K7 o% I0 S7 U1 Y; |8 ? Pu=[sfm,zeros(1,n-n2)];. g0 P( y7 R' B' n }5 C8 P
df1=fs/n; %以上是对已调信号u求傅里变换- t4 q+ R L' ]% v4 O% o, P5 h2 v
U=U/fs; %缩放
8 w) j6 A6 w2 O# O. {& K: J%******************************************
. b W: A: j z%*****************************************
( q6 D: r, u: A4 F%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*· E* D" A% @/ E3 @7 B" w- O# W
%***************显示程序******************, u# o8 O+ g1 V6 ~5 X5 r6 G$ e
disp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')
+ [4 a+ G7 x9 ^3 s5 fpause5 E$ x3 |8 Q$ l3 r. @; E
%**************figure(1)******************# K; O# O4 }9 h- i; Q, Z, f4 i
figure(1)
9 B) S8 E; z: z6 fsubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图& i5 G- T) S+ \' Y. B: E
xlabel('时间t');
$ G, W: V8 B6 X0 U. |. Gtitle('调制信号的时域图');
8 ^: I, l- L2 w% O( e& _, bsubplot(3,1,2);plot(t,ct); %绘制载波的时域图
0 C5 S( h- l7 ], M* P9 exlabel('时间t');+ d- M y% M8 O( I p: c4 t
title('载波的时域图');; H' S) w9 h! g" o9 U$ @8 O! a: U) u
subplot(3,1,3);
c9 p2 V( D# h Tplot(t,sfm); %绘制已调信号的时域图
9 y) @! n2 r- M, s9 y. r2 r+ n( ]xlabel('时间t');
# i* l$ ~( T' i3 v6 V3 Mtitle('已调信号的时域图');
7 v6 q: C/ Y4 D+ b%******************************************
1 c: X! M: A: z6 h( v" ], Kdisp('按任意键可以看到原调制信号和已调信号在频域内的图形')
; N! u4 g/ i7 Y/ qpause
1 t+ K- W) u: W! N4 R" }%************figure(2)*********************
) T/ |# n; P! g4 q3 u2 Y* sfigure(2), j2 L0 B& |; M% b* h: g! ?
subplot(2,1,1)
: }2 w. I$ g3 O0 O) |plot(f,abs(fftshift(M))) %fftshift:将FFT中的DC分量移到频谱中心
! z6 L/ d# i: R9 v4 A3 kxlabel('频率f')' x7 \3 @! ]5 J% b1 d8 N
title('原调制信号的频谱图')
1 N/ M# }2 I% Ssubplot(2,1,2)
8 T: c0 ?3 Y# D) y! kplot(f,abs(fftshift(U)))
: ~, A4 h% {0 }6 |xlabel('频率f'). `/ a$ F) A. P' |! X( F! |
title('已调信号的频谱图')
9 p+ O3 T$ K0 r%******************************************6 S; _) i! R/ i2 C$ q* L
disp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')$ E* l7 |: {6 ^; {8 E
pause
) B, F! @, Z2 @9 f4 G%**************figure(3)******************0 |" w% e7 O" d: L$ Q( A7 n
figure(3)
/ v3 h% z8 x" }- x2 a; b& e& L+ [subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图. @* {* z1 g7 _/ i$ y: `
xlabel('时间t');
; I0 v9 g. z2 o* A( t" Ctitle('调制信号的时域图');( C' u: j" S; {
subplot(3,1,2);plot(t,sfm); %绘制已调信号的时域图
1 j4 {* V- i7 a- z; q+ x0 G0 rxlabel('时间t');6 G) n: d2 B+ l: l& P) l
title('无噪声条件下已调信号的时域图');
6 [- e0 G7 p1 Q1 o1 b X& bnsfm=sfm; - i( X3 k6 M4 K4 ~ B# n6 ]
for i=1:length(t)-1 %接受信号通过微分器处理
! N; L( P6 u( b, V" b7 D& s diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
4 s+ h- G8 D: [7 c0 m: Pend- f+ F$ M1 p- ]0 c
diff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)
a4 ]8 j; h. b+ D% `9 Jzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
5 p9 M. P3 i+ g# O x& xdiff_nsfmn1=diff_nsfmn-zero;# `. O5 R; R. c7 B! p2 r8 W# j
subplot(3,1,3); %绘制无噪声条件下解调信号的时域图. F; T" _8 o& k; g
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
/ F" ~5 v5 i7 }0 Hxlabel('时间t');
. f1 s$ @/ \3 \& {; I) Wtitle('无噪声条件下解调信号的时域图');1 ?1 z4 Q, u4 n+ h8 J5 K
%*****************************************+ g$ h/ K& J" L
disp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')7 G7 G, b& p8 H3 w: r9 \. s6 N e* p
pause
; Q: }" D7 i0 g) L# _8 H%**************figure(4)******************( U5 h+ f0 U/ j
figure(4)
2 K6 ^% }! F Z7 Y& ?; B+ osubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图' [! T! {- K j+ F T% a j
xlabel('时间t');
% G4 F: ~* ]8 d W4 g! D$ }title('调制信号的时域图');
+ C7 r6 g1 X% W4 R: o$ G: w3 M+ R- I* J: Ldb1=am^2/(2*(10^(sn1/10))); %计算对应的小信噪比高斯白躁声的方差9 ^9 l% F* F9 ?# N* N4 d
n1=sqrt(db1)*randn(size(t)); %生成高斯白躁声6 C+ w2 Z' {* ?: E1 \- J
nsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通
, d! j; M, ^0 A4 m) }% %过信道传输)1 h! [* P. i' J5 q
for i=1:length(t)-1 %接受信号通过微分器处理/ {/ D! z( S: j3 O% H; o- e m
diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
6 ~# x! b) \" k. I) w, @, ^8 |7 Y% Send
! n* K. e7 v: ? P% `- a& Ddiff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包络检波). Q1 V3 ?: i3 `: g0 o' j
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;7 t! n0 i9 X' Q1 r7 s+ u
diff_nsfmn1=diff_nsfmn1-zero;2 q+ F/ U0 k5 F# c: o5 f
subplot(3,1,2);
& V* W- q$ H* i- nplot(1:length(diff_nsfm),diff_nsfm); %绘制含小信噪比高斯白噪声已调信号的时域图
7 f. I# J/ @2 B! J2 R0 ~' K5 [/ a ?xlabel('时间t');3 e2 ~" _2 j% _& n9 D0 O
title('含小信噪比高斯白噪声已调信号的时域图');" v( g d8 ~ g8 t* |
subplot(3,1,3); %绘制含小信噪比高斯白噪声解调信号的时域图, E# {( u5 a7 C& ~7 W
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
, G$ R2 ]& m" F6 Y* C: Kxlabel('时间t');
) s0 H! @+ T2 S0 xtitle('含小信噪比高斯白噪声解调信号的时域图');
+ R- Z9 j7 `4 r%*****************************************2 w" [; u/ o1 U A4 T. b" k/ v- _1 }, R
disp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
) g5 y* O( L5 J( xpause: g7 H* y) A+ @8 n" L0 d4 O+ {
%**************figure(5)******************* w, T& B# ~; g& E) N% H
figure(5) `( F1 b, U' f4 G/ \: u; i- g
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
; o+ {) r1 A7 G" U8 {% pxlabel('时间t');# U7 {/ |3 U2 B ^/ G
title('调制信号的时域图');
9 x1 \ G/ t* s3 d$ bdb1=am^2/(2*(10^(sn2/10))); %计算对应的大信噪比高斯白躁声的方差* y, s- ^! l6 e- v! F4 X
n1=sqrt(db1)*randn(size(t)); %生成高斯白躁声; D, b3 p; F$ f8 o% X1 o
nsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通过信道传输)- A/ C: ~3 W# T3 S# b8 z1 K
for i=1:length(t)-1 %接受信号通过微分器处理; G) x- x( q- |% i( l
diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;! o |% C$ u+ S$ d, i- K
end
+ `! K' R& D! ?/ J8 t6 cdiff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包% \, y8 a/ D4 @! y! P
% %络检波)
& E2 ]) v9 }3 B$ \1 ?: Lzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;- ^/ Z) o2 Z! G- u/ u/ K# \& ?% Q
diff_nsfmn1=diff_nsfmn1-zero;
) |$ T y/ j* A6 b# ?4 Dsubplot(3,1,2);1 O# O% ~4 u A: d( _
plot(1:length(diff_nsfm1),diff_nsfm1); %绘制含大信噪比高斯白噪声已调信号5 C* m4 ?! T4 ?' m, |7 \, x
% %的时域图
) ]. R- L8 k; Q9 o1 p) y1 f# sxlabel('时间t');
C; P! ?/ `8 Z3 i ]( Ztitle('含大信噪比高斯白噪声已调信号的时域图');' H8 U; w g1 G! m" x4 Q) f; I
subplot(3,1,3); %绘制含大信噪比高斯白噪声解调信号. M: h3 c5 E$ `; S: g2 P. r+ j0 @* b
% %的时域图
7 v5 T- ?9 o* R0 X: } ?4 L7 P$ Dplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
6 j, o1 M6 }% _xlabel('时间t');
' {8 g) S* @9 I" W# w8 x/ i( V xtitle('含大信噪比高斯白噪声解调信号的时域图');
q: M" F! p/ ^) A E6 w%*****************************************
$ z$ {) \8 A4 F$ l1 X/ O%******************结 束*******************
. V9 y+ e1 M! G! E- {, h1 `$ k4 L$ q+ C% s
6 ? ]3 V N3 W+ n! \
|
zan
|