- 在线时间
- 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
5 {' Y6 x/ f% L: b%频率调制与解调的Matlab演示源程序
# }3 C) ^- Z- X4 H6 v" k1 H%可以任意改原调制信号函数m(t)7 Z( u0 l5 |! J6 u6 z; y [6 s; C
%电子信息工程 杜怀超 091308305 / ^8 f" s3 W$ F* [; q
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
" p; n$ }% X; J6 o- @1 G/ P$ g2 r%*****************初始化******************* N0 P: j3 X/ s2 m3 [/ J }" z) V
echo off : C1 X/ Q) V8 u" B, S( J$ Y
close all
, M1 a4 ]- B: o9 Vclear all; ?! v0 e/ R7 M2 W
clc
/ v( A% G. g& |2 Z%*****************************************3 o& a# c/ |5 o) H9 M
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
& D3 \; Q( N: Z/ C1 Y( |%****************FM调制*******************
4 b( z# }4 @5 x- x" Q. ldt=0.001; %设定时间步长
1 |; t1 A+ J) D5 v4 h- E7 I$ Lt=0:dt:1.5; %产生时间向量3 W' X! I- j$ u1 \0 x& [
am=5; %设定调制信号幅度
# ^7 h2 K1 _: ]! a N; gfm=5; %设定调制信号频率/ x) I- h7 s/ [' W/ s7 ?
mt=am*cos(2*pi*fm*t); %生成调制信号; ]' v. j& P4 A2 ^: E% y! P' e
fc=50; %设定载波频率
) c. u8 I, r! `* P! zct=cos(2*pi*fc*t); %生成载波
1 v c0 E3 o( C% w! h! Mkf=10; %设定调频指数
: [0 D0 W& f3 p# A6 xint_mt(1)=0;/ v8 t( Q7 M! Y7 F
for i=1:length(t)-1
7 X0 d1 o, ~; o0 T1 v- B int_mt(i+1)=int_mt(i)+mt(i)*dt; %求信号m(t)的积分3 {, Y- A) j7 o$ t
end %调制,产生已调信号 B" b/ V' G& a. F3 K% d
sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt); %调制信号" m: _" m- d: k. r: M3 O; I$ [
%*****************************************
) R: o) b' N" n) ?0 M) _" ?/ O%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
% {) P- l/ }/ X%*************添加高斯白噪声**************
U8 u# J/ e$ `+ V, n7 _' Msn1=10; %设定信躁比(小信噪比)
1 M- `: r- S! s) u, h; rsn2=30; %设定信躁比(大信噪比)
0 V! q/ m5 a+ L7 h% v" bsn=0; %设定信躁比(无信噪比)
. n% r9 F# {! D4 @7 F8 ^. ~$ h* Cdb=am^2/(2*(10^(sn/10))); %计算对应的高斯白躁声的方差# W' Q% V& S2 n! M2 V7 {) Q! {0 N
n=sqrt(db)*randn(size(t)); %生成高斯白躁声
" @- m; z$ E: {* c) {9 I4 ^5 P% {% o9 ^nsfm=n+sfm; %生成含高斯白躁声的已调信号(信号通 [. {4 Q& t$ A4 a0 _+ ^
%过信道传输)
6 I, r, s) J; w# d- s; C2 Y%*****************************************1 k" q. i7 b" k* I( R; E5 ]
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
0 n' z/ g! K" I4 G/ d Q: ~. v%****************FM解调*******************& O9 g* w% b6 \; d6 L& d
for i=1:length(t)-1 %接受信号通过微分器处理
) L5 F& R% k' C ^6 s4 E; ^ diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
4 T; K) b% D0 y, w0 p; qend
4 H! U1 d x0 `% S4 W. Cdiff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)
7 { J1 }& ?9 N" H$ |) f0 Tzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;5 Z# n$ z7 E. G! K h8 k1 W
diff_nsfmn1=diff_nsfmn-zero;
! G! H: V* }- g0 S4 a5 r%*****************************************9 K/ F M; d! b3 ]9 c& `1 u3 W5 v
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
4 K; K- H2 ], R3 H6 B%**************时域到频域转换**************
. S0 Q. F; o8 ?2 U, Y" e1 Xts=0.001; %抽样间隔
: w" \- H+ w v8 @- T% Sfs=1/ts; %抽样频率) t( n& j2 o/ o: s! V
df=0.25; %所需的频率分辨率,用在求傅里叶变换
' Y4 ~: c5 i9 C) c O% 时,它表示FFT的最小频率间隔/ y; w$ C: S; M8 p7 w) X
%*****对调制信号m(t)求傅里叶变换*****( P+ X& A5 T+ r! b
m=am*cos(2*pi*fm*t); %原调信号
% ]4 L+ P4 I% t; ffs=1/ts;2 q- k; n- I+ L, u/ c
if nargin==2
) U9 m1 [1 E) s: r3 o4 j n1=0;
7 B: j0 ~/ Y! c) ~1 ^% v4 Ielse
1 L) @* `0 W" M n1=fs/df;
) L1 @: M" |9 b. H7 w, C, Xend
' `& A N- |% j \# `4 ^n2=length(m);5 R, _1 x) k9 I
n=2^(max(nextpow2(n1),nextpow2(n2)));! C4 [: U T- `8 D* Y
M=fft(m,n);! t6 C! T# ~' @
m=[m,zeros(1,n-n2)];
" @0 w0 G' }! ^6 w/ Q. ]% Cdf1=fs/n; %以上程序是对调制后的信号u求傅里变换
" k4 n i" m2 @ @* S% }' v' ]M=M/fs; %缩放,便于在频铺图上整体观察
: H' n- _- U; Tf=[0:df1:df1*(length(m)-1)]-fs/2; %时间向量对应的频率向量6 N9 R9 b2 y* \0 d6 c' p* o
$ B- T& m' | f q1 @
%************对已调信号u求傅里变换**********
9 w8 Y& b! r6 d" M/ {5 ~9 Q/ r( dfs=1/ts;
) e! N- q: n) Uif nargin==2
7 ~, `: Y, Y9 D& l, j n1=0;
) k& v) s1 @4 {4 S' _2 ?else+ O) ^* P4 V P Y
n1=fs/df;
+ P( h+ m0 B" a+ n2 Oend
5 W' p4 l* O: M! cn2=length(sfm);8 y; R% b/ ^6 g; W
n=2^(max(nextpow2(n1),nextpow2(n2)));$ J9 \( \$ P6 F$ B: i" ^
U=fft(sfm,n);
, H- r7 R# \' c5 M% }, g: ru=[sfm,zeros(1,n-n2)];$ c" t& }& Y' ]8 F
df1=fs/n; %以上是对已调信号u求傅里变换* Y5 d f! w( L8 n5 c: _2 d
U=U/fs; %缩放) j2 E$ H9 }1 s k: ?0 `+ a
%******************************************
( }2 s1 ?% u. B1 x# f. p%*****************************************
* K7 e: G; f# K+ U%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
5 d0 _5 T* F- g' F) W%***************显示程序******************
9 k. T3 l! Z" Qdisp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')
3 _6 K6 Y( l5 R) E0 qpause
7 |; }' d0 l3 F5 ?%**************figure(1)******************
* }1 @% g1 m( Xfigure(1)
, O* B* B7 s- M t7 ^; F bsubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
* D$ }4 R0 z- k9 I/ [: Nxlabel('时间t');* s# B+ L7 S8 w* H' ?4 w
title('调制信号的时域图');
6 _/ t1 ]! @, i; u4 R' O% Osubplot(3,1,2);plot(t,ct); %绘制载波的时域图# Q- k* B* v$ X4 B2 d7 r. o. f
xlabel('时间t');
. S1 u" O2 C- x6 v2 a* stitle('载波的时域图');
1 O+ S G7 N. c* Ysubplot(3,1,3);* h( [( _/ n/ w: D" O
plot(t,sfm); %绘制已调信号的时域图
9 X* G& `0 X$ v4 [xlabel('时间t');$ ^4 D- O7 U6 g8 b$ B8 [- r! H
title('已调信号的时域图');) p0 B6 j' Z( G' K) O4 x, l
%******************************************
$ Z; V4 z1 a: T0 Ndisp('按任意键可以看到原调制信号和已调信号在频域内的图形')! Y7 s7 a% l8 j
pause
2 ]& D& _6 ?; A3 Q( r- @%************figure(2)*********************( y% j8 |6 p* Y7 d
figure(2)
1 o" j/ \& V2 [" b) }) g2 M: Wsubplot(2,1,1)
, [9 x% u# d5 J$ O( t' s. K) Dplot(f,abs(fftshift(M))) %fftshift:将FFT中的DC分量移到频谱中心
. Q! S1 Y* b7 v, [& a9 b/ v0 Pxlabel('频率f')! b: q. |9 t) p& `8 s$ a
title('原调制信号的频谱图')9 ]0 D$ L9 e2 [0 ?0 A
subplot(2,1,2)
4 U+ o/ }5 |7 [ a: Bplot(f,abs(fftshift(U)))
3 Z- O) N; [9 Dxlabel('频率f')
2 a$ ]- X% D; h% z' Ititle('已调信号的频谱图')
9 K+ V! e0 s- c: b# i1 S%******************************************1 J: Q, J: D+ Y5 D5 i3 V$ ~9 c
disp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')1 _ t0 O( `2 H; T" Y: l. x
pause
! y+ [7 T+ M4 L. R4 K- x$ U%**************figure(3)******************/ q6 N5 J+ k; C- c; A
figure(3)8 M' ]0 W$ J7 c3 \) T# V
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
& p5 s% k7 M$ @xlabel('时间t');
8 \. f9 C7 P1 ]: ?title('调制信号的时域图');& V2 ?6 e* K% b6 p3 u1 l: d2 U
subplot(3,1,2);plot(t,sfm); %绘制已调信号的时域图( e! u- F: q# }5 [" Z% b
xlabel('时间t');
2 r W) t& z' X# mtitle('无噪声条件下已调信号的时域图');
J0 \9 M, W1 bnsfm=sfm; 1 M0 a( D# t' `9 w
for i=1:length(t)-1 %接受信号通过微分器处理& w# p K& R$ R$ X) `: f0 X. H
diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
4 w- `" H) T. o; y$ l; uend. F! P! u6 R- {. p& L* F+ O+ c+ o8 m
diff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)5 ^! a2 P8 j, G+ ~) a* L/ k
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;/ d1 a+ l5 s3 s! c9 Y* x; o
diff_nsfmn1=diff_nsfmn-zero;
* a- ^: }6 J, ~- a& ysubplot(3,1,3); %绘制无噪声条件下解调信号的时域图9 ~" E; s' K& v2 H5 z, j
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');8 U- B& D6 v# `" t
xlabel('时间t');
r; ~8 ^: V6 S8 R# g etitle('无噪声条件下解调信号的时域图');
* i. W( t: c8 t( ], m%*****************************************% i; W2 c1 B: Z9 f, F" Q
disp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
9 |1 e& R5 O( u- fpause3 w9 k0 [0 N6 x y" r; U
%**************figure(4)******************4 F" j" z; `; l- A. z" b D
figure(4)8 W% G8 l' X. {) q7 N1 l: A
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
- @; N7 r; c5 t* A- D) G* T5 Kxlabel('时间t');
( C' ?% H- b: n8 ptitle('调制信号的时域图');
8 e' H! }- S5 c3 e# Ydb1=am^2/(2*(10^(sn1/10))); %计算对应的小信噪比高斯白躁声的方差6 |: }8 {- h( ?
n1=sqrt(db1)*randn(size(t)); %生成高斯白躁声
* y7 B9 d4 S& a% |. Dnsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通
/ d; `5 \5 D( [+ D, T) R% %过信道传输) k5 P. |! ?) S1 v' I+ W
for i=1:length(t)-1 %接受信号通过微分器处理/ |+ |/ ]; t% Y- i7 E! i: W
diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;! \ [2 A* [7 I+ v; @5 O
end
& @; s9 _# l4 j6 gdiff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)
: Y4 n7 P/ T3 R. A* H9 z. |zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
$ i( n' W7 \# s* F5 ~diff_nsfmn1=diff_nsfmn1-zero;
, ~4 L0 l+ @7 [6 S2 J6 ssubplot(3,1,2);* {- r/ t* U, b3 ~5 k L0 X# S: H; r
plot(1:length(diff_nsfm),diff_nsfm); %绘制含小信噪比高斯白噪声已调信号的时域图
3 a) S7 X0 Q7 L4 nxlabel('时间t');, `# T! _8 f! K7 q2 d9 S6 X& y
title('含小信噪比高斯白噪声已调信号的时域图');, Y$ i0 l* \% i$ y
subplot(3,1,3); %绘制含小信噪比高斯白噪声解调信号的时域图
" Q6 v2 o1 Z* K& uplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
$ C; ]1 P& }7 Q0 D7 N a7 @* xxlabel('时间t'); ( [* a" L/ T# z6 R
title('含小信噪比高斯白噪声解调信号的时域图');/ v* R- _1 j3 G- ~
%*****************************************
. r- g; ?! G; F0 {+ X! E) E5 odisp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
! @* m3 S& l) ?# v9 wpause
. e! m/ o3 X2 X%**************figure(5)******************
: P6 ]; s: X3 q$ ~/ Ufigure(5)
0 x- @1 i. K, G; ~/ lsubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
" @# ^# [; b0 l7 }- xxlabel('时间t');8 W) n4 ?+ D, a0 g5 F) J
title('调制信号的时域图');; q$ w/ \( F2 W Z' _3 L
db1=am^2/(2*(10^(sn2/10))); %计算对应的大信噪比高斯白躁声的方差
- w0 M/ W0 ?, A; Q$ e, ?5 en1=sqrt(db1)*randn(size(t)); %生成高斯白躁声8 L5 \. b8 t: D/ f
nsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通过信道传输)
4 l' w D6 ]* ?% A7 I9 r/ Vfor i=1:length(t)-1 %接受信号通过微分器处理
2 C" h3 H7 v' W0 u% D diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;$ T" h( K* J0 Q2 |( P
end
9 ]$ C1 ^7 i, [, w( e0 v! B" P6 `6 |diff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包& R- B5 j3 |6 A
% %络检波)
+ P0 C+ Z5 d, r& F: S! zzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;5 Q9 `0 X$ g$ e
diff_nsfmn1=diff_nsfmn1-zero;
* A z+ x/ i0 f' `7 f2 m" [* B8 ?( Bsubplot(3,1,2);
$ h" w4 {) O( O( I2 r3 Xplot(1:length(diff_nsfm1),diff_nsfm1); %绘制含大信噪比高斯白噪声已调信号4 t! a+ Z# t6 I+ [; R D& h9 z
% %的时域图
: O$ o5 M4 D# c8 |2 W3 V1 ?$ B( sxlabel('时间t');0 [) [% R1 u& O! `" u" c8 C
title('含大信噪比高斯白噪声已调信号的时域图');
. ?" H) M: Y* A6 [subplot(3,1,3); %绘制含大信噪比高斯白噪声解调信号
3 B6 E. r! f% T5 ~% %的时域图
2 M8 v% A" Y( `# ?: R# |( rplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
! ]1 X- D# n( p3 [, B& Z# Dxlabel('时间t');
3 ?* B2 O' v) k* A6 etitle('含大信噪比高斯白噪声解调信号的时域图');
" {: s6 b8 ?. ^3 C# r! f%*****************************************
5 X% v, o3 Y+ e# v%******************结 束*******************
( e# c6 g8 Y. `$ o+ {( d
- X6 ^+ ?) M: i ~7 r8 z) y n8 H
|
zan
|