- 在线时间
- 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
, Q+ ]' d8 s- g* P! I, e0 F8 h%频率调制与解调的Matlab演示源程序! I$ b' r9 O9 k/ | T: D
%可以任意改原调制信号函数m(t)
5 d/ p$ \6 r+ B+ Z2 k%电子信息工程 杜怀超 091308305
" x% R" R% p- \+ Y3 i6 [ a%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
8 u6 `' i& D i1 r- U%*****************初始化******************' X5 ?, a4 }& [ [
echo off ) X& O" b7 z' b/ o1 X$ v, O6 X
close all
) W& X& T+ J, n) k% E7 a- a) q, jclear all* X3 v5 B3 z- z7 W, B2 L$ r5 }
clc
t% z# F- n; I4 m) |' G2 W4 b%*****************************************- n8 w, H3 J: {3 t
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
3 U0 q3 M% _2 `% n" D) i%****************FM调制*******************5 p' K) I! g( [% l
dt=0.001; %设定时间步长
/ \' }6 j3 ~0 y0 V( Bt=0:dt:1.5; %产生时间向量
# V8 ?1 D' q3 s: |# gam=5; %设定调制信号幅度
1 m) T7 |3 g- i2 s0 L' _6 |( [fm=5; %设定调制信号频率: H7 |8 D' a' c# N
mt=am*cos(2*pi*fm*t); %生成调制信号
/ w: W8 W/ y% T7 Sfc=50; %设定载波频率8 @0 k5 Y9 G1 e) |- T) R, {
ct=cos(2*pi*fc*t); %生成载波
5 X2 L5 G- t: Bkf=10; %设定调频指数
4 p4 n9 p) d# Mint_mt(1)=0;4 ~ k3 l# J7 d
for i=1:length(t)-1 ( ^7 s4 X; X. l' Y7 O( A4 W; N- w
int_mt(i+1)=int_mt(i)+mt(i)*dt; %求信号m(t)的积分
% y5 N+ F4 X; g& l- c/ i3 wend %调制,产生已调信号
. }* a% F0 r) a: m' O4 ]- G" i9 \sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt); %调制信号! P L1 I8 o0 p$ g. z6 Y4 x
%*****************************************
) i7 G# U* p, h/ z) ?- @1 E+ J, j%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·% b4 b) Q* [; o, @/ Q
%*************添加高斯白噪声**************
9 e, b1 k. Y0 c4 ^' q9 ssn1=10; %设定信躁比(小信噪比)2 z/ v. E( V$ K6 b
sn2=30; %设定信躁比(大信噪比)
' Z& A7 F4 G# z# q9 m! Osn=0; %设定信躁比(无信噪比)1 ?( N' P& O& o
db=am^2/(2*(10^(sn/10))); %计算对应的高斯白躁声的方差
& C- |# X% [4 O9 p/ O, `4 Y; vn=sqrt(db)*randn(size(t)); %生成高斯白躁声
# n. X* D1 H% E% o6 X& i) lnsfm=n+sfm; %生成含高斯白躁声的已调信号(信号通
7 C( q( k% m- v6 q%过信道传输)
0 C. W% i6 E1 ?2 i%*****************************************
A! h; w0 _" n7 }6 d3 q8 N%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
! h8 O% ]6 `# M3 N: X%****************FM解调*******************4 F5 ?! I( g" M
for i=1:length(t)-1 %接受信号通过微分器处理
$ A* ]8 M) h! _ diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;4 B9 Y, K4 t' O) @
end
5 v, G5 G$ ]" m2 z) Sdiff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)
% {7 Q& D7 Q0 m6 k6 d) azero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
/ L* `. o9 ?) k* r& y" hdiff_nsfmn1=diff_nsfmn-zero;
. I8 t5 Q1 g7 Z%*****************************************( ~: C4 E. ?- m3 x/ V: x
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·% M1 J' e# h, C* L
%**************时域到频域转换**************4 ]9 I* s+ V3 f+ s+ X
ts=0.001; %抽样间隔
" H4 o6 |& H k" z- Tfs=1/ts; %抽样频率3 _, |7 r9 r2 t/ x1 C" C( }
df=0.25; %所需的频率分辨率,用在求傅里叶变换) ]0 t, h! i5 o' @) s6 `
% 时,它表示FFT的最小频率间隔
+ V4 S F6 z; H5 L3 y%*****对调制信号m(t)求傅里叶变换*****3 M& C2 r8 [0 m1 x' E0 ~) q
m=am*cos(2*pi*fm*t); %原调信号
& G: p0 m6 S$ J- \& ^% bfs=1/ts;
0 o t% x! ]* v1 H% zif nargin==2; e$ T! }* w1 F* {3 L
n1=0;
4 \. Z* l2 ?- Q$ W; X2 D% O( Pelse
1 B- D) ^4 w/ F5 ~ n1=fs/df;
- l! y) X* q) V7 _6 lend0 t" k* F: l+ _4 E) i* @3 d& k1 i! n
n2=length(m);% C G5 {( [" h% e
n=2^(max(nextpow2(n1),nextpow2(n2)));
2 G0 n$ r# `7 D: t& J% x# ]& `M=fft(m,n);
9 @6 y. r L1 `# o2 U$ R; w+ w8 }m=[m,zeros(1,n-n2)];
4 l+ L1 d. F9 B: ndf1=fs/n; %以上程序是对调制后的信号u求傅里变换0 I$ g3 B) ?9 B2 j
M=M/fs; %缩放,便于在频铺图上整体观察' C% @/ c* E: b4 i: u. s4 [% X$ l
f=[0:df1:df1*(length(m)-1)]-fs/2; %时间向量对应的频率向量* q5 ?% v1 P- x$ ]4 o+ G; M
" g8 `4 M* p/ T4 f7 }8 ?
%************对已调信号u求傅里变换**********! Q; _: A z! X: }5 o
fs=1/ts;2 n5 |, N! a5 x4 I; A- y7 [
if nargin==2% Z o8 h" }# U8 O
n1=0;8 w1 x% N- w% ~# V
else. n K' f( t2 h! H4 ~/ y z& B
n1=fs/df;
+ g2 X# z( t m% ]+ \, `) Mend) J1 t1 X8 W3 K2 K2 b% e
n2=length(sfm);
8 ^% F4 ^, ^* B/ ~' [6 _n=2^(max(nextpow2(n1),nextpow2(n2)));
( t9 z- c) F2 g/ pU=fft(sfm,n);4 e/ ^. ~7 c9 B p
u=[sfm,zeros(1,n-n2)];* ^% O6 r B7 D! R, Y! z
df1=fs/n; %以上是对已调信号u求傅里变换
8 q9 f/ i; z+ L/ G G9 NU=U/fs; %缩放
) |7 Z" G$ j% }6 K- ]5 Y%******************************************5 C+ s7 \) c9 Q& }- P* ~
%*****************************************6 H* Z0 X8 d6 N6 {, U: ]+ n
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·2 v& D' i! ~0 i+ I) z- H8 E1 t4 }
%***************显示程序******************
9 a& U3 V: u& H' r# ~2 g& odisp('按任意键可以看到原调制信号、载波信号和已调信号的曲线') Y) y# t! X" H& S' [4 T+ K* H9 W! V
pause
- j8 Q5 w0 Q# r% c% ^4 o' J- f$ i& Y%**************figure(1)******************
. u- Q. r. l: g1 I5 H5 o; h" kfigure(1)4 i9 q) p; b6 s, M: W7 R/ V
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
4 `" Q; I' l s7 c" F8 w% j, T$ Rxlabel('时间t');0 G& t( d7 ]% U& `- m6 ]
title('调制信号的时域图');
8 ]( p. [2 y: O+ g, e: M' Jsubplot(3,1,2);plot(t,ct); %绘制载波的时域图7 F; o$ g& ~. D" Q }9 ~- z
xlabel('时间t');2 N) _9 N3 P* k7 F6 c8 V) O$ u
title('载波的时域图');
E+ C* n% t, c4 v6 Jsubplot(3,1,3);6 ^- L6 |2 c" j1 X+ k1 h
plot(t,sfm); %绘制已调信号的时域图
: d% ~* n4 x4 pxlabel('时间t');
4 g- @* A y0 F# `title('已调信号的时域图');2 J, k# N4 }8 Y8 U% d
%******************************************+ X' k, z' i- a* _' N0 p2 g( w
disp('按任意键可以看到原调制信号和已调信号在频域内的图形')
* P) Q. |. W( b% spause3 g2 |% F" c- } ~! g
%************figure(2)*********************) a0 F; I# p6 J
figure(2)3 Y( `6 c' H" L0 s5 T( O/ @
subplot(2,1,1)8 _, B# \9 l8 b {
plot(f,abs(fftshift(M))) %fftshift:将FFT中的DC分量移到频谱中心
# d/ F+ H m- g- oxlabel('频率f') F, R3 M" B+ S# |8 m
title('原调制信号的频谱图')
# ^7 E4 T. D! T {subplot(2,1,2)3 ?* T% I. N' A" p( h
plot(f,abs(fftshift(U)))
& n* S" n* U8 d4 Nxlabel('频率f')0 W J- I" T4 ~9 ?7 D3 l4 f5 j
title('已调信号的频谱图')/ t5 A: e) `: M, |1 {- c: \
%******************************************
1 \9 J: U$ ^8 Adisp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')
% a( H1 Y F4 r+ V% L! L0 lpause( Z' ^4 u E9 N5 Y& B
%**************figure(3)******************
) p# R O' v" t: wfigure(3)
1 e A: @8 ]* |6 ^/ ]subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
( |) D( [6 g$ J wxlabel('时间t');$ q0 L/ P" t; o. V0 H5 k0 h
title('调制信号的时域图');9 F0 N! E! w' x9 ] A. U
subplot(3,1,2);plot(t,sfm); %绘制已调信号的时域图
2 }4 @+ L( ?8 H. ^xlabel('时间t');
, X9 q. D. `! F m4 ititle('无噪声条件下已调信号的时域图');
8 @- `7 Q" K5 ^# | U+ Z5 V5 H% |3 Insfm=sfm; 5 H Q6 ]5 A$ ^- A% y2 \
for i=1:length(t)-1 %接受信号通过微分器处理
' D. o* R7 d' u) x diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;# s" e( }& Q/ s; N, [$ z' |
end
4 P" u8 Y+ Y. i4 Zdiff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波); H; S: n0 m& s h
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
6 }7 J. ]" [* m( }' T1 Fdiff_nsfmn1=diff_nsfmn-zero;
# h: w; b8 Z0 T3 x- C. @- H5 Ssubplot(3,1,3); %绘制无噪声条件下解调信号的时域图
" |: m' v( O. v8 F/ a( ^( w# rplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');7 y" L% v% v" t5 w5 R) w
xlabel('时间t'); ! K5 u% a- {3 L7 v, F! e
title('无噪声条件下解调信号的时域图');
' Y' r- W p8 d%*****************************************
, f1 v% ~/ o% ~( T+ @disp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')+ U8 h2 ^( T0 s ?1 `& f7 A
pause
/ d( c y' r. G/ v; I/ r; z0 k%**************figure(4)******************7 h+ G% B4 e# }1 @! e4 \4 @
figure(4)2 U" G/ v- f9 a+ [
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图9 w& A, b4 J# k2 T
xlabel('时间t');
" Y5 f9 f1 k9 v8 y0 H" i- ntitle('调制信号的时域图');$ M, Z3 ^" b R) y0 v
db1=am^2/(2*(10^(sn1/10))); %计算对应的小信噪比高斯白躁声的方差/ G+ }5 Y( P% U& S0 y
n1=sqrt(db1)*randn(size(t)); %生成高斯白躁声
. k) U- c9 r# m7 b' Snsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通" c2 x5 p: E7 q1 P; c) {/ P+ d+ _
% %过信道传输)
% j& @8 t4 g8 U; A2 d. @. ?for i=1:length(t)-1 %接受信号通过微分器处理
5 a/ q, N1 x7 P1 r$ A diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;8 {& y& O/ l5 w9 D) ]3 m% a
end
0 D- J8 u, r5 n0 mdiff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)2 [! t4 z9 U5 E/ K( K! Q# {! @- a& i
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
( E, d N9 u) d4 @! u/ idiff_nsfmn1=diff_nsfmn1-zero;
; B. n0 v+ N) ]7 ~1 T3 V/ lsubplot(3,1,2);$ M" E' x. q" q- v* q' _
plot(1:length(diff_nsfm),diff_nsfm); %绘制含小信噪比高斯白噪声已调信号的时域图# P. B$ ^2 |9 R2 }* w
xlabel('时间t');" J& q& w L; b0 a* x$ b3 S8 K4 ^
title('含小信噪比高斯白噪声已调信号的时域图');
0 G( j$ c' l4 ~# M- bsubplot(3,1,3); %绘制含小信噪比高斯白噪声解调信号的时域图
+ q4 k3 Q Z0 ^" Mplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
& Z' w8 I9 j0 H4 ~# ~, Kxlabel('时间t');
& z' x- b* O$ h6 ]5 h7 @4 d, Htitle('含小信噪比高斯白噪声解调信号的时域图');
1 l7 a2 r1 }; D6 \%*****************************************, ^ P$ Q" ^0 T0 x5 z0 e
disp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
' j m' Q& p1 j- A4 f2 P+ gpause
3 K+ t2 [; d- s: l" x# b w V9 p%**************figure(5)******************
8 Q7 e& F1 X- Vfigure(5)
5 F4 K" J3 ~7 Z3 o0 N' g) D- w& msubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图+ n; @$ ]/ I3 X# M" E
xlabel('时间t');) b4 x0 N. F$ y( b" h. d7 d
title('调制信号的时域图');" Q8 `. Z% l; L, t2 K2 R: z- }
db1=am^2/(2*(10^(sn2/10))); %计算对应的大信噪比高斯白躁声的方差% J% [0 S+ N% [/ k
n1=sqrt(db1)*randn(size(t)); %生成高斯白躁声7 I5 V7 ] F& H( l
nsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通过信道传输)
+ |$ I0 p* f& O2 f: ?: T- Ifor i=1:length(t)-1 %接受信号通过微分器处理
. Q. p- w5 {. X/ Q9 f3 f4 n$ Q diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;% H! V% `# \5 ~3 y r( E
end
) i+ i) i: W2 y3 J4 z8 wdiff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包
+ {- e6 G/ }4 m6 d- t- h) l% %络检波)8 B7 m2 o2 \, z7 F7 G' `
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;3 v* ?7 G8 K- t8 S2 m; u
diff_nsfmn1=diff_nsfmn1-zero;
3 k- Y) Q7 X) b0 bsubplot(3,1,2);5 U8 _3 F. u' W% z
plot(1:length(diff_nsfm1),diff_nsfm1); %绘制含大信噪比高斯白噪声已调信号
3 O, K( m s9 R. v# E/ d6 C8 t% %的时域图
4 V; H1 U2 D0 x( e+ D$ @" Uxlabel('时间t');
0 v* h/ r, h ltitle('含大信噪比高斯白噪声已调信号的时域图');
. r- o9 V. K7 h; Lsubplot(3,1,3); %绘制含大信噪比高斯白噪声解调信号% J( k' ^- n! E# L
% %的时域图
9 F% o% F% b& O( eplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');9 e3 }; E) y6 r/ [" k5 I4 O, q( x- d
xlabel('时间t'); 6 H( \8 x X0 I- z9 ]% k0 S- _
title('含大信噪比高斯白噪声解调信号的时域图');3 p; |( J, z" b) |
%*****************************************" [% u; U$ N* }) B' I! z
%******************结 束*******************
$ B# T/ v3 w( v6 f3 w8 w D6 R
7 p3 Y# w$ O6 h% [
" P9 z9 u9 p# |% s, B |
zan
|