- 在线时间
- 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调制解调系统.m4 S( P) ^$ m) `7 ~
%频率调制与解调的Matlab演示源程序$ p v4 S2 l" R1 x% `
%可以任意改原调制信号函数m(t)/ h2 m8 D |" K: \8 n) _
%电子信息工程 杜怀超 091308305
6 b) l6 m- X: K: G" T {%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
9 A+ X* u8 n( T- ^8 a5 p6 u%*****************初始化******************8 `4 x, E5 B) K8 V, f- n) F
echo off
' N/ ?& `3 T7 Z$ `& @close all# p8 s# u) l& k$ O
clear all$ ]6 h) X7 | N( P @/ q
clc6 @; m) {. j3 |
%*****************************************5 I; _. h" H: U0 N, x q8 W
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·9 M! z+ R( e( n1 P+ U
%****************FM调制*******************
& b2 e5 ?; ]7 V5 q+ cdt=0.001; %设定时间步长5 V. `5 w [! b% V
t=0:dt:1.5; %产生时间向量- i: q3 e' \0 V1 V( {5 R: \- i
am=5; %设定调制信号幅度
3 d& m% y' _, w& B- r7 p5 Cfm=5; %设定调制信号频率 N8 x" V: [3 V' r) s
mt=am*cos(2*pi*fm*t); %生成调制信号
9 u$ f9 q6 Y" z- D' Rfc=50; %设定载波频率
- G8 \0 {7 u; |4 s5 ~ct=cos(2*pi*fc*t); %生成载波+ u1 T% O% W* C9 y5 m( ?' D
kf=10; %设定调频指数
: N: }' O0 T0 nint_mt(1)=0;5 B7 P; f# J6 @- n
for i=1:length(t)-1
; J8 X9 G2 w6 s/ K! D# Q int_mt(i+1)=int_mt(i)+mt(i)*dt; %求信号m(t)的积分
& a9 T$ V- ~. q$ E: e! w2 F4 fend %调制,产生已调信号" I `! [0 R0 X- y
sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt); %调制信号" J% X, h+ f+ @
%*****************************************
/ [2 W' F8 s& g$ R4 q; y; p$ r6 c%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
3 e( F; J2 R- u%*************添加高斯白噪声**************
h2 a- ?- B3 v5 [& E" Y: Tsn1=10; %设定信躁比(小信噪比)
R# D2 ?& b6 g8 O1 t% e, P( m, W0 y' Psn2=30; %设定信躁比(大信噪比)
3 t9 d" B" `! r. D) Vsn=0; %设定信躁比(无信噪比)4 Q% D) P+ T2 t& t8 |6 R' w
db=am^2/(2*(10^(sn/10))); %计算对应的高斯白躁声的方差
6 Q8 n4 n9 {: B8 \2 I/ z, On=sqrt(db)*randn(size(t)); %生成高斯白躁声
6 X! m7 j( U W! t0 L' q$ Ynsfm=n+sfm; %生成含高斯白躁声的已调信号(信号通6 n- m6 t) H" C* t. {) ?
%过信道传输)
% _" O; U) B( K) m4 s0 K%*****************************************
: ]$ U, `' D6 L$ }: K%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
/ v) w/ Z7 ]( l# j6 z% M%****************FM解调*******************
; Q9 `1 c/ R& s- @) Bfor i=1:length(t)-1 %接受信号通过微分器处理/ S; J0 g1 n2 }2 o9 u5 U, ~' T9 @* _
diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;/ i, l4 U: E; C6 @' q
end5 Y( a2 T5 M$ n. q/ P
diff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)
" z! I8 o9 K1 @7 C2 U; `zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
% S! R6 q4 k/ X I2 idiff_nsfmn1=diff_nsfmn-zero;0 a9 |+ c; x6 {
%*****************************************
" c% [$ v7 \3 X$ U%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
' ?, c- a( G1 \3 N3 X%**************时域到频域转换**************- N" k. N P# v2 M
ts=0.001; %抽样间隔
& u9 {1 }# i* G: I: tfs=1/ts; %抽样频率
+ H9 }5 j7 h. Y+ d# adf=0.25; %所需的频率分辨率,用在求傅里叶变换
9 ?0 r5 M2 A, l& n7 l. H% 时,它表示FFT的最小频率间隔# ^' R+ V9 I' V, L; }
%*****对调制信号m(t)求傅里叶变换*****" t. J, L P3 u- c4 t2 I: R
m=am*cos(2*pi*fm*t); %原调信号
: G) e+ ~! W# |/ yfs=1/ts;
$ {; u# G) o2 Rif nargin==2; h r7 s; C1 P* z7 l2 b! g; i" T! i
n1=0;; C$ R# O2 H' u' k5 K5 M5 W
else
8 q! t" v( k7 |* F% e n1=fs/df;" p3 r+ H3 d& s
end$ u3 {9 d. s+ ^, O# Y6 d% m
n2=length(m);0 r: `/ e k2 e- Y0 R+ V* l; G* L- X
n=2^(max(nextpow2(n1),nextpow2(n2)));
0 y- b! F2 J2 o) {M=fft(m,n);
6 l% }5 _/ w; ~* V( Qm=[m,zeros(1,n-n2)];2 ?% {1 @2 v* ~+ l) d" ?- Z1 B
df1=fs/n; %以上程序是对调制后的信号u求傅里变换2 ~8 S& ^8 u7 F+ a' C
M=M/fs; %缩放,便于在频铺图上整体观察
8 }1 ~0 K8 M% u1 N+ x- `& Jf=[0:df1:df1*(length(m)-1)]-fs/2; %时间向量对应的频率向量+ Z% O; i q- N4 e, Z
# A+ h3 g3 a6 c3 I9 b%************对已调信号u求傅里变换**********
' `2 x ]" F& j. \* W6 g9 f/ vfs=1/ts;' Q/ |' K0 z7 {2 x
if nargin==2# m" e1 [0 W! h) \- O8 f: S
n1=0;! u5 C8 M p$ g3 ]
else# H% @% n: L5 Z. s' W- z; [1 j1 b
n1=fs/df;+ Y- P2 Q' \8 F, Z, K5 {
end3 \8 X& {: ?! }. @
n2=length(sfm);$ v K2 k; p) ?" c
n=2^(max(nextpow2(n1),nextpow2(n2)));
1 X! L; G3 t1 G5 W4 q% j' WU=fft(sfm,n); O0 t2 w* f$ S
u=[sfm,zeros(1,n-n2)];3 y3 [" e' a. h2 k3 g7 ]
df1=fs/n; %以上是对已调信号u求傅里变换, z/ [1 u" P' b
U=U/fs; %缩放: V7 B5 {# `1 D9 x
%******************************************
' D- ?* M$ _7 L7 e) A. h6 s: e%*****************************************( E9 Q0 @9 W" |6 P6 }7 z5 R
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·( C3 [2 f6 Q7 N
%***************显示程序******************
* \, ^ k) J+ g' M( {: edisp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')- b# T9 U9 i& {. Q1 s/ O3 u/ r* v
pause
0 |6 M4 c( }: U6 x y8 _. y%**************figure(1)******************
9 ~' P9 `' N" Pfigure(1)8 W. Q& [- X; u1 t6 u5 ?' o
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图! z& F- L7 Y' |) l( }
xlabel('时间t');- A5 P7 \- T* y$ Z
title('调制信号的时域图');; Z7 _+ w6 l" L1 ?' Q
subplot(3,1,2);plot(t,ct); %绘制载波的时域图
* `! C& R2 s' o$ y- g: ]xlabel('时间t');0 K! B# h) z" K d6 z- \
title('载波的时域图');5 N, C! K/ s% v, ?$ d9 W
subplot(3,1,3);1 L \* N# x0 L8 ?/ K. f {
plot(t,sfm); %绘制已调信号的时域图
+ u; R( l. R: b/ @* S* e, A. L3 [- A: ixlabel('时间t');
& R; A+ _1 A# Otitle('已调信号的时域图');
! R* ^( C/ Z* ^' W8 n- I%******************************************
: L5 T: `" H+ L3 zdisp('按任意键可以看到原调制信号和已调信号在频域内的图形'). a$ C8 c4 h) q# L; h0 f
pause
x/ {( y* {+ z' X2 E- n8 n%************figure(2)*********************6 i) h4 @- Q: k0 S: @
figure(2)
7 c4 g- v5 }- o H& e3 x+ L# osubplot(2,1,1)
9 `; i+ @0 Z) |9 {plot(f,abs(fftshift(M))) %fftshift:将FFT中的DC分量移到频谱中心9 \; j0 z6 m1 S
xlabel('频率f')
& s) ]; q4 T! `/ x" f' g: ]. R& {title('原调制信号的频谱图')
- U" S4 i9 q {2 r: b8 v; Q/ csubplot(2,1,2)
" Z6 o) Z4 g7 K. s% B2 Tplot(f,abs(fftshift(U)))
0 A' \" z: Q- ~# |3 V- l( rxlabel('频率f'): }) f9 V1 c) T- F) \
title('已调信号的频谱图')
1 E, b4 }5 Q1 K* \+ @) a! R, S# c%******************************************0 U. T6 M2 ~1 |9 P
disp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')
' }7 J9 G5 H: e( f: Xpause
0 c! [* N0 W; `9 V8 G; F%**************figure(3)******************; v& G+ N- T. E1 P; U
figure(3)
3 m1 B5 V& M6 M1 t- {9 isubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
$ _, e8 n6 M! i7 K" Dxlabel('时间t');
& G4 Z0 m( _3 e) {1 Vtitle('调制信号的时域图');# J; P% H9 V3 h! F# K# |- E
subplot(3,1,2);plot(t,sfm); %绘制已调信号的时域图
; X4 P" j9 R6 E bxlabel('时间t');7 S7 R1 L* x7 m% R6 {
title('无噪声条件下已调信号的时域图');: D, D8 [1 @$ u# ? ^" G5 M9 H
nsfm=sfm;
5 G/ l, F. i! q, v; _, efor i=1:length(t)-1 %接受信号通过微分器处理
( o/ Z6 E) ~; g9 ^/ @1 R! X) k" z diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;5 s5 U% P$ p! w5 _% E- \) Y$ c
end
* m# D' v* {# e" P. ?9 W! |9 {diff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)+ \" ]" O1 V; s) n7 R. s% G
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
4 S H! v- b e0 z3 b s# hdiff_nsfmn1=diff_nsfmn-zero;
0 m+ k7 j/ I/ L% vsubplot(3,1,3); %绘制无噪声条件下解调信号的时域图
* u4 L) N1 v& z( U6 y: I% Cplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');) s: D" ` z* V! j4 n
xlabel('时间t');
! W( I/ O( \9 l& O- g$ otitle('无噪声条件下解调信号的时域图');
* h5 N! `' g# Y; T* c& |* }%*****************************************
: }8 D0 x: o6 l3 H2 vdisp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
- V3 ~; y) b# t: a1 e, Zpause
( S* Q* S; v$ j7 A; w( m, |8 H%**************figure(4)******************
) l5 ~: d3 {$ H7 Gfigure(4)
t% y3 E+ h! Y$ rsubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图3 `( p {9 b* ?+ H0 y1 a. s
xlabel('时间t');
6 E# S; ]6 i3 W6 m& a6 s6 gtitle('调制信号的时域图');) s! w# @% g- a& @ U9 C
db1=am^2/(2*(10^(sn1/10))); %计算对应的小信噪比高斯白躁声的方差
+ x% j: M& ]( S+ An1=sqrt(db1)*randn(size(t)); %生成高斯白躁声7 d5 E- R; O4 {
nsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通* {" X# _/ N- F1 T# k; Z+ e! \2 h+ _
% %过信道传输)
' {! l7 E4 V* I) L- w3 l8 ^for i=1:length(t)-1 %接受信号通过微分器处理+ F9 Q. b! r2 e( y8 | N
diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;1 u9 F- K( p' D) Z7 S v2 j- z
end
4 g" J% O: X. {8 u$ Kdiff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)
/ ]$ w! A2 z9 W; w" ezero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
- o0 Q4 x) d2 {# Adiff_nsfmn1=diff_nsfmn1-zero;
5 i6 N; A' Q @& _7 [5 E* h4 Rsubplot(3,1,2);
+ q6 e( w6 ~ \9 Zplot(1:length(diff_nsfm),diff_nsfm); %绘制含小信噪比高斯白噪声已调信号的时域图' n2 m2 j# ?& R1 ^; s
xlabel('时间t');2 R' ^' E7 @$ \% F6 H$ A2 r) S
title('含小信噪比高斯白噪声已调信号的时域图');+ |; d# h* P; l4 L" s( M
subplot(3,1,3); %绘制含小信噪比高斯白噪声解调信号的时域图
. j* @) c( B4 Y- I: {# o. n7 n t2 vplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');$ |4 P4 B% k7 S( S0 H
xlabel('时间t');
, L' l- ?5 Y2 N( r1 K0 stitle('含小信噪比高斯白噪声解调信号的时域图');! ]8 d6 j7 [" x- L! x& ?6 T+ B
%*****************************************' p5 ?' U, v/ _" l7 M2 [
disp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
, E1 z) a2 q% k3 E% ~, p7 n) i) ?! gpause
5 D/ E) k, \. E%**************figure(5)******************4 @4 W0 i; o9 I* ~8 u& J, E5 i `
figure(5)
/ g$ p+ p5 p* [" v( `5 t, Bsubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
5 {& F3 V# m3 S' C& h7 N/ Xxlabel('时间t');4 }& I: e0 t3 i" J( ~7 C
title('调制信号的时域图');, G( S" b& t d) f* \
db1=am^2/(2*(10^(sn2/10))); %计算对应的大信噪比高斯白躁声的方差
+ M- T; i) f* L& p* y2 H1 Jn1=sqrt(db1)*randn(size(t)); %生成高斯白躁声
# y+ w4 r/ j9 j- o q! Onsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通过信道传输)+ Y5 d4 ]9 ]4 h! A! F
for i=1:length(t)-1 %接受信号通过微分器处理7 t5 k7 M- P9 M+ w
diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;. e. S. A" y- w+ ^8 I
end
7 A0 D" b6 a% y3 gdiff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包9 ^- `# w/ R2 |
% %络检波)
4 |: a1 Z- y! W8 }5 C3 G9 szero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
. i; h7 L) I8 r9 gdiff_nsfmn1=diff_nsfmn1-zero;% o1 d) ~- N0 r/ V1 }
subplot(3,1,2);
7 i5 _" o$ p* A3 f' w! a2 T# ?plot(1:length(diff_nsfm1),diff_nsfm1); %绘制含大信噪比高斯白噪声已调信号4 T5 P: _, ? A" _: ?7 v
% %的时域图
' M. }! H6 V; b: X+ A- zxlabel('时间t');
6 ^5 R8 j# v- L! n1 n4 y" ftitle('含大信噪比高斯白噪声已调信号的时域图');5 [9 C: L6 K3 ~& z& M, j1 n0 i
subplot(3,1,3); %绘制含大信噪比高斯白噪声解调信号
: n% ~. {1 C# S+ M( z2 X% %的时域图
6 F6 j6 ]$ A, i6 d" m5 m( vplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r'); M0 z0 o1 k* a
xlabel('时间t');
2 N1 y% m2 z h# j8 a9 }4 Ktitle('含大信噪比高斯白噪声解调信号的时域图');* j$ [) O% q! u, T
%*****************************************- ~, n# a m8 S( D7 n
%******************结 束*******************& i8 J9 a* A; H3 J
$ b% I& a. w! f& ~6 t. r j0 u- c
|
zan
|