- 在线时间
- 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调制解调系统.m1 w1 l' X, u( `/ E4 Y6 V
%频率调制与解调的Matlab演示源程序
; N. b4 J$ K7 z* W3 h+ A%可以任意改原调制信号函数m(t)
4 M3 A2 T2 M7 K: x, m& C%电子信息工程 杜怀超 091308305
6 T' u( m4 }- b! }4 X: ^%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·& ]/ ?+ n& S2 M; s$ k) K
%*****************初始化******************
- u+ Z" `2 X. u+ O' }echo off
0 T1 n2 q% ]" R$ R: v8 cclose all
. u8 \! S! {3 ]- i7 x# }clear all0 ^1 ^, s6 c9 O* P: U, S
clc
1 r3 d# R0 g9 v. G Y2 T9 r% S" @%*****************************************' B. {+ p' R9 m" s+ M
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·/ Z: X2 ?% a$ _) N- {
%****************FM调制*******************
0 [/ [5 w- K/ I1 f5 Q% B. G/ Ldt=0.001; %设定时间步长
, P! C0 `1 x( [" k; W5 e8 H6 \9 Lt=0:dt:1.5; %产生时间向量4 V% C3 \6 q: ]9 Z _- |8 E
am=5; %设定调制信号幅度2 C* H+ i3 y" J$ \- i$ b: o
fm=5; %设定调制信号频率
+ v- S% q+ M8 ^5 ^$ @0 h: S' [mt=am*cos(2*pi*fm*t); %生成调制信号( u! Y. J* N, o
fc=50; %设定载波频率
( v6 _8 i+ e9 N0 N4 Yct=cos(2*pi*fc*t); %生成载波
5 l1 K7 H2 R, \$ e& |* X% E, j0 rkf=10; %设定调频指数
: p h2 @' n5 t# M9 u* o9 Zint_mt(1)=0;! d) G0 j# [( `
for i=1:length(t)-1
) {* k! m, i; F int_mt(i+1)=int_mt(i)+mt(i)*dt; %求信号m(t)的积分
- [$ {; L- H, ?" Aend %调制,产生已调信号
; F# B: g3 ?: D& _sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt); %调制信号
' E5 c5 C+ y. W: f! M: F%*****************************************! }$ [- {) E) R0 T- ?
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·3 X9 S& v$ D. |# [3 M. S6 N* J4 f: Y* n
%*************添加高斯白噪声**************
, j! j7 k( u: X& x, Z( ssn1=10; %设定信躁比(小信噪比)- \: s: r9 _! u5 ~5 l
sn2=30; %设定信躁比(大信噪比)6 \- B9 s T1 K
sn=0; %设定信躁比(无信噪比)" R% N! b* \8 N! G
db=am^2/(2*(10^(sn/10))); %计算对应的高斯白躁声的方差
& @! }2 ~& n! b' b) [n=sqrt(db)*randn(size(t)); %生成高斯白躁声- C' C" G. P+ Z) H8 q
nsfm=n+sfm; %生成含高斯白躁声的已调信号(信号通
9 j5 B1 V3 V2 ~" L: L! D! O%过信道传输)
2 ~ a- y. K" D. q%*****************************************
7 v7 T6 Y/ B' n%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·' d" v3 s/ E6 V/ C+ |. H
%****************FM解调*******************- h- R1 x4 t% {4 G/ i
for i=1:length(t)-1 %接受信号通过微分器处理
! ]) @7 M4 F$ O- o2 A, u% `/ f5 `$ A diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
& `% v7 p6 c$ k/ ~' Oend6 _! r/ b! Y# m9 b+ R; A
diff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)6 x- O4 l% L0 w- R
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;) e3 `( z: a9 }5 m G. w, C
diff_nsfmn1=diff_nsfmn-zero;# n( k- w( ~ `% S
%*****************************************
0 z, s; l# f/ ^3 v% A%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·$ W) }0 i, E8 z
%**************时域到频域转换**************7 W @; d. t5 W5 S" {/ y/ X8 K- {5 M
ts=0.001; %抽样间隔: f* }) v- ~$ n9 g" I. a! |
fs=1/ts; %抽样频率
& g$ ~) U# @- g, u) A+ R% [6 ^5 vdf=0.25; %所需的频率分辨率,用在求傅里叶变换
# J7 I& T5 J7 c+ e+ |3 @8 y% 时,它表示FFT的最小频率间隔) C( H+ l1 _- |$ ^) [# d+ M! k
%*****对调制信号m(t)求傅里叶变换*****
, o7 R+ d4 u p3 L1 B1 c' _( }m=am*cos(2*pi*fm*t); %原调信号2 u, y# P* O$ I- U/ |$ X7 D
fs=1/ts;8 P' Z9 Y& Q+ q4 k& k
if nargin==2
' ]6 ]8 d) R! X1 s# w n1=0;
2 o7 N* h+ @ Q5 r1 t! u* O4 Celse
: W5 R' |8 p+ S2 Y3 Y n1=fs/df;5 T+ P6 @6 W' I( j5 i
end8 j3 \8 H% K5 z% P
n2=length(m);, r* @" x+ P/ a) T/ Y! a
n=2^(max(nextpow2(n1),nextpow2(n2)));
2 q+ G) `2 X' z- R: gM=fft(m,n);
$ f- B2 ^" f( ]8 j% H* v5 Ym=[m,zeros(1,n-n2)];. `( s( J$ l( n: G' G8 x( j' O
df1=fs/n; %以上程序是对调制后的信号u求傅里变换
0 F' V2 G( N/ ]) p% |M=M/fs; %缩放,便于在频铺图上整体观察
& s4 |1 ^+ [% k8 Rf=[0:df1:df1*(length(m)-1)]-fs/2; %时间向量对应的频率向量/ |, L$ y" U2 ^7 W
/ r4 `6 W# I6 D7 n3 [%************对已调信号u求傅里变换**********
( G8 g6 Z6 u* sfs=1/ts;
4 l8 @* u! N# Xif nargin==2/ F. ?7 _. h8 l' r
n1=0;
- u8 k- T) C/ L! J3 felse* |1 x) p: Q N$ U; V
n1=fs/df;. H) v) E2 z2 Z4 |$ s7 N$ j
end
& L2 l) i& j% Z. l' jn2=length(sfm);
" g T; S4 e5 T+ sn=2^(max(nextpow2(n1),nextpow2(n2)));
( ~' [0 a+ R6 k1 pU=fft(sfm,n);
; ?, _7 E- Z7 z) h) Tu=[sfm,zeros(1,n-n2)];; x; C( _ }( g1 @2 Z( _/ E
df1=fs/n; %以上是对已调信号u求傅里变换" q' Z+ b ?$ `4 ~( _$ H g
U=U/fs; %缩放
7 c- c- j" I; g% Z* b) @8 j%******************************************" [1 z4 D* t2 d5 d6 C$ v
%*****************************************9 A' E: b- {$ b5 M! V: \% H
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
( F4 u7 X2 S5 V" @%***************显示程序******************
) T7 p" H% ~: K8 ~3 Sdisp('按任意键可以看到原调制信号、载波信号和已调信号的曲线'): f; E, n( j h- k- V8 ~4 o& @0 R' o
pause
5 y1 n1 N2 C8 G+ ^0 L%**************figure(1)******************
3 z: W \. Z7 N! H/ A' p% Yfigure(1)/ ^, f4 r0 ~+ }8 L% _0 `
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
' R9 N3 Y# S: y% e5 A0 c5 @* N2 Kxlabel('时间t');6 {) J3 ~9 e% ~# K" U/ I7 l# y
title('调制信号的时域图');
, U ^! l- U, I+ A( E& ~* [* n: Osubplot(3,1,2);plot(t,ct); %绘制载波的时域图( p9 c6 s; q: ~
xlabel('时间t');+ G4 X' v# b# k% i$ g8 W
title('载波的时域图');
- r& [0 S8 a [7 ]$ r% ~ bsubplot(3,1,3);
! [; U6 V. b9 `9 v8 I+ g- aplot(t,sfm); %绘制已调信号的时域图
- }# Z; @/ K' E! P txlabel('时间t');8 w3 x: `+ u) ?
title('已调信号的时域图');
9 g/ ~$ e/ F) t! s0 d%******************************************1 q7 u# ~% ~6 Q7 h# y ^
disp('按任意键可以看到原调制信号和已调信号在频域内的图形')
4 I" V" g, Q+ i9 tpause
" C( V6 Z/ P* Z; j/ K%************figure(2)*********************+ I) x" r5 A/ J8 @ L
figure(2)
. p$ ^' b* V) C5 msubplot(2,1,1)6 o$ S7 n2 ?/ h" J g
plot(f,abs(fftshift(M))) %fftshift:将FFT中的DC分量移到频谱中心; ]2 q: d7 H7 ^
xlabel('频率f')- c2 ~. ^9 M1 @- G. `6 j
title('原调制信号的频谱图')
" L9 B+ Y4 I9 C& W) @subplot(2,1,2)% ?. p8 g( X2 ~) [9 P' M
plot(f,abs(fftshift(U)))
- h p3 g% y% j0 v; B, _' Q0 Hxlabel('频率f')4 D1 t& `) b) \4 o g8 g
title('已调信号的频谱图')1 }/ _( z. t7 v) c2 K. B
%******************************************% K% J0 n' w5 {' V/ H# R
disp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')
: ]& C& {5 z& a* t6 Z2 O& qpause
( e+ }6 I* ^( w" B: c%**************figure(3)******************
/ w! `: P) Y) H4 R4 v$ D7 w& Nfigure(3)
c, }/ K' V8 E$ T* Qsubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图# R) _% |( Y% L3 w
xlabel('时间t');
- m& W7 r L- e8 D, s8 c6 Wtitle('调制信号的时域图');5 g) x" m/ @( o7 c
subplot(3,1,2);plot(t,sfm); %绘制已调信号的时域图* Y7 x/ n5 R' K8 ]
xlabel('时间t');
/ [ d2 ]1 n3 ~2 a. Y" T6 V* z4 Dtitle('无噪声条件下已调信号的时域图');( n7 _5 e" s* x, s4 o, e8 p
nsfm=sfm; $ A, P6 q5 P; I( L' j6 R6 b0 s0 m3 v
for i=1:length(t)-1 %接受信号通过微分器处理. I6 d! F6 T2 [3 l
diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;! f2 O. Q5 i9 `# k
end
' E" h% I9 |8 rdiff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)3 {% e& w1 B# N3 p( Y5 G; r
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
: h8 ?' s2 m& y2 V# ^# s* odiff_nsfmn1=diff_nsfmn-zero;. g/ F# ] f/ f7 w3 ]$ I" s
subplot(3,1,3); %绘制无噪声条件下解调信号的时域图
" ?( O; D$ [" R& [" ]( X. s/ v$ j3 uplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
( }# `7 {( B# W6 _xlabel('时间t');
0 ~7 M6 I( n/ D0 U$ ptitle('无噪声条件下解调信号的时域图');+ T, j+ A" r0 t2 @- F! u% E
%*****************************************2 ]; `. b8 _; r
disp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')9 B! Z) s9 e' u$ v' j
pause
2 |: _% B4 C6 Y l0 @3 ?* j; f+ l%**************figure(4)******************! j; `9 k+ i/ `+ ?0 t# c( m2 l
figure(4)
4 D7 r, ~5 A0 j5 zsubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图) m1 F' Z$ I, ?$ O5 C5 E$ L: h2 Q
xlabel('时间t');
- S% E, ^: V! T. E* ?. g5 K; ltitle('调制信号的时域图');( m* y9 J( C8 `; T3 G
db1=am^2/(2*(10^(sn1/10))); %计算对应的小信噪比高斯白躁声的方差8 X( b6 ~. P4 c# ?% b# s4 a
n1=sqrt(db1)*randn(size(t)); %生成高斯白躁声
( V/ S! ^: |. Lnsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通3 W5 M# y" F" J8 \
% %过信道传输)
9 N2 F x% ^. e: G$ e, Zfor i=1:length(t)-1 %接受信号通过微分器处理, n( F4 d5 `+ A2 A
diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;7 x& k, ^, B; J% _( y
end
1 X( y4 x! p! e, \* `. mdiff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)
( m3 n9 w& R' @2 b0 f- nzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;, M, i2 K3 y; f4 R5 w5 U( k! T
diff_nsfmn1=diff_nsfmn1-zero;; w$ A; }; D4 ^
subplot(3,1,2);
$ N6 G0 I7 ]8 Q( \plot(1:length(diff_nsfm),diff_nsfm); %绘制含小信噪比高斯白噪声已调信号的时域图
/ w& p, h" |. A+ h6 ~- P* g9 Jxlabel('时间t');
" r. C8 p! g" f/ _title('含小信噪比高斯白噪声已调信号的时域图');
. L$ G& F! P4 hsubplot(3,1,3); %绘制含小信噪比高斯白噪声解调信号的时域图
% a6 U8 E2 e( [; g, H- cplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
" b$ A/ ?4 {) ^8 e6 M8 R2 J6 Mxlabel('时间t'); ; L$ B% S! k- d) }- A6 _
title('含小信噪比高斯白噪声解调信号的时域图');
7 e3 G0 q5 Q/ T# `, \0 D%*****************************************, v2 O/ G( L6 ?
disp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')/ C p1 `0 J! N* p
pause
0 ?4 U7 x6 Z+ n: ]1 {%**************figure(5)******************: R4 i9 I2 W3 @
figure(5)
; E- J7 {9 M: T8 f% F* q [subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
; g t( ?2 s/ Zxlabel('时间t');
) ` F0 ^& b( ntitle('调制信号的时域图');3 D1 h, i4 Q1 q/ E7 o, _6 }) T
db1=am^2/(2*(10^(sn2/10))); %计算对应的大信噪比高斯白躁声的方差, a0 O) u0 O" i3 i0 o3 `- S
n1=sqrt(db1)*randn(size(t)); %生成高斯白躁声
4 L$ K" X, D7 u7 Tnsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通过信道传输)6 h" I" h/ R K$ N( j& @& O2 M0 S! l
for i=1:length(t)-1 %接受信号通过微分器处理& C5 P# Z, e) M6 P5 i0 N, d1 @' I" S! L
diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;6 p7 v: b! o$ u: o
end
& g: j0 d' {! y1 g" c5 J1 Odiff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包( z9 W9 s' j0 ^
% %络检波)6 K0 B" |- V" ?9 K: B1 C4 f
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
9 K4 `8 }/ B& C! U% @' Fdiff_nsfmn1=diff_nsfmn1-zero;
8 u/ u+ C9 F6 H: g: asubplot(3,1,2);
# f. g' w2 N) @4 A# Bplot(1:length(diff_nsfm1),diff_nsfm1); %绘制含大信噪比高斯白噪声已调信号
. `$ |1 _ H8 X% %的时域图4 w! c8 f) c: e7 @5 ?3 m
xlabel('时间t');
3 h! q9 x, |, \8 ~title('含大信噪比高斯白噪声已调信号的时域图');
1 X8 O& C2 U; U6 e4 w" qsubplot(3,1,3); %绘制含大信噪比高斯白噪声解调信号+ T# v R8 x& F" ^. c
% %的时域图
0 X, v' c6 ?: P4 k$ K7 D5 a S2 B# _: Eplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');& _7 K5 ]& v9 f- f6 A
xlabel('时间t');
$ ^, S( B# @: P. i$ V* z9 A Ztitle('含大信噪比高斯白噪声解调信号的时域图');# b$ r: C$ y& k4 s; x
%*****************************************- t! v3 @' E' c9 {$ c2 d. {3 Z
%******************结 束*******************
9 [5 F) }6 F( R- `1 Q) u. S# C% C* }9 S1 b$ b# t7 ]6 B1 p
( V$ Q1 B Q e( h" t
|
zan
|