- 在线时间
- 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
; Y7 Y* ?5 \/ H" v' f; T%频率调制与解调的Matlab演示源程序
* s8 z9 {3 D/ y x%可以任意改原调制信号函数m(t)
& w9 U7 c* C, \: @%电子信息工程 杜怀超 091308305 : r V5 W! y" y& H" m
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
. A+ x/ m1 F6 e0 E%*****************初始化******************$ A# A$ \8 s0 e4 L
echo off
8 m% ]1 K4 y9 Y6 B+ @/ `0 {3 ?: {close all
5 P; s! l$ ?+ |$ J- c0 [3 J: _ _clear all
. y$ j9 m S- E9 x* b* ^clc" t7 M: U' ?1 c7 `! g/ ^4 O
%*****************************************- u5 }# _- A2 M, A' l1 H
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
! ~/ R, W2 `) h1 \0 n: D%****************FM调制*******************
4 `; y# u* u+ e% o8 |dt=0.001; %设定时间步长, W, G; L0 }# C1 B5 Z( {& ^
t=0:dt:1.5; %产生时间向量5 Y9 c# [6 h- T9 `3 O5 z, L# z
am=5; %设定调制信号幅度/ J: c* {5 [% h. ]: \$ ~7 R
fm=5; %设定调制信号频率/ d2 b A% Z# \ g4 Q
mt=am*cos(2*pi*fm*t); %生成调制信号$ z: a5 j0 ]$ p2 j+ d+ P. S& t
fc=50; %设定载波频率
0 u- P% _3 a3 [9 s/ }ct=cos(2*pi*fc*t); %生成载波
: m3 N) U$ E1 V. p6 u0 @' ykf=10; %设定调频指数6 b' [ f9 x2 b. ?* o$ e
int_mt(1)=0;' L) M4 t% T- ?3 L+ [8 b
for i=1:length(t)-1
2 ?5 v* o1 D( t" T int_mt(i+1)=int_mt(i)+mt(i)*dt; %求信号m(t)的积分2 \" L+ I) B3 h: }! Y
end %调制,产生已调信号" d9 t7 m+ ?; x% {
sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt); %调制信号
8 H7 h1 k8 r# |+ B% B2 f3 l! M1 `%*****************************************3 ]- ^4 e3 o$ r
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
& z# |. E. r) b0 Q" v- ]%*************添加高斯白噪声**************
2 y- s+ P6 A2 C: q- l$ s8 Wsn1=10; %设定信躁比(小信噪比)3 R- z) |) j; X" x; x
sn2=30; %设定信躁比(大信噪比); x2 | [2 e) n# |
sn=0; %设定信躁比(无信噪比)
0 P2 g: Y- D) jdb=am^2/(2*(10^(sn/10))); %计算对应的高斯白躁声的方差
, y5 ]. t2 @& N8 g8 ]( f4 ?n=sqrt(db)*randn(size(t)); %生成高斯白躁声
0 x4 d# j3 _6 O1 a5 Znsfm=n+sfm; %生成含高斯白躁声的已调信号(信号通4 z( k {) M6 A, i
%过信道传输)& I! c8 }2 A' Y" r
%*****************************************
5 J. E6 J) a! q2 R1 S%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
F h. i m1 q/ q, e%****************FM解调*******************( }- @: Y8 {9 I/ Z0 K E$ g4 b
for i=1:length(t)-1 %接受信号通过微分器处理
7 x' c1 r5 @3 Z( U- q" { diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;* B; k/ a& k/ I0 _4 b& u
end
& j2 M/ g7 C6 Qdiff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)9 H& \9 ~$ F% i% Q- k! @. L
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
. X( k* ?5 x/ h0 Z& B) q, Cdiff_nsfmn1=diff_nsfmn-zero;1 X6 R' ?: A$ s
%*****************************************
* C! T6 o/ A0 W0 _" ?$ N%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
z5 G5 d; X6 z* L0 H! Q%**************时域到频域转换**************
. `2 S; W" m% n1 Nts=0.001; %抽样间隔
0 ?/ N! f T6 x* p$ N5 a# Afs=1/ts; %抽样频率
* j. r8 |! B" W1 ^& `: Odf=0.25; %所需的频率分辨率,用在求傅里叶变换. b! G) l5 T& b4 [$ q# z6 ^' S" ^* {
% 时,它表示FFT的最小频率间隔2 V$ Z4 h7 {: h! N0 L$ p
%*****对调制信号m(t)求傅里叶变换*****
" Z1 t! e- f: D- @4 W$ Ym=am*cos(2*pi*fm*t); %原调信号2 z' S) w0 G1 N
fs=1/ts;6 E' ?5 d3 C N2 F& n6 @4 K& ?
if nargin==2
: |! _& F$ k4 [4 F' t8 }* t n1=0;
) A1 [% ?# F; [0 Aelse
! e9 U' N0 O& D n1=fs/df;
0 q3 G) `7 z2 {/ Y a; g% vend. a6 l: i6 E+ P1 x, v3 v
n2=length(m);
$ Y. ~0 @1 O' I' ~n=2^(max(nextpow2(n1),nextpow2(n2)));
- ]8 j! y- D! s6 s/ fM=fft(m,n);
" X0 p, y+ e* b# @/ Im=[m,zeros(1,n-n2)];, ?& k; \8 Z4 [ _ Z8 E' T8 `8 a
df1=fs/n; %以上程序是对调制后的信号u求傅里变换
% u: C- g! a" ?+ U8 s1 LM=M/fs; %缩放,便于在频铺图上整体观察
# I" l6 U4 B" [3 qf=[0:df1:df1*(length(m)-1)]-fs/2; %时间向量对应的频率向量
- U" H! b2 P8 p- ?/ d, C% g! t& [; ?
%************对已调信号u求傅里变换**********/ `0 z, q# v2 `6 @ Z8 { D6 l( h/ L
fs=1/ts;: |) m/ M% J" `% ]! q0 g" R
if nargin==25 L, O: e6 R$ J# ^+ Q
n1=0;
8 y. d$ @: `% g' Y- Selse
% }) v' G, B. l4 W8 b, d9 B/ _ n1=fs/df;
V7 z' w4 `7 ^" F- `& mend
) P- q# F% R+ s1 b+ @n2=length(sfm);
: @% D; J9 F+ p; h: G% f2 An=2^(max(nextpow2(n1),nextpow2(n2)));/ _3 P* ^+ @8 A$ u1 W. p0 |
U=fft(sfm,n);" A" _* E( j9 ^" y
u=[sfm,zeros(1,n-n2)];
8 a b, `* ~/ B- E; Hdf1=fs/n; %以上是对已调信号u求傅里变换
: S& C) n/ ]! h T3 UU=U/fs; %缩放
0 f4 W/ i7 t/ o9 Q%******************************************
3 O2 R7 {; a% ?%*****************************************
; l D/ x* t6 G4 A& @& W7 z%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
6 c6 {" `9 n( \* z4 I7 M%***************显示程序******************
' [' u! p1 B. A8 \1 |8 u$ Ndisp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')
z4 U# n$ q4 k A% G+ upause
8 D, B3 l' ^: f! s( g%**************figure(1)******************1 f( ^7 I& c& [% q4 y2 f
figure(1)" E2 n& U/ o" n4 r% s! p3 u* R
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图% s/ k; m6 p Q- `8 D8 y0 T. O
xlabel('时间t');) u1 {% v5 h8 b) D) I& m& Q
title('调制信号的时域图');
( j2 N% f% |# ^" ?; z- t8 ?* D. Msubplot(3,1,2);plot(t,ct); %绘制载波的时域图% e% Y) A3 M: {0 U: n( e
xlabel('时间t');
! a- |# @/ A: X: ~- Ctitle('载波的时域图');
U$ e, J+ F2 ]0 Y5 Osubplot(3,1,3);: C/ X6 O" b7 m) l9 I2 D1 ?
plot(t,sfm); %绘制已调信号的时域图
! X! H# n. K2 [/ H( N* Q! V" Rxlabel('时间t');3 N# T$ K% k" C# R! ~
title('已调信号的时域图');
" {2 I1 l, V/ b6 s/ x( V" ` a' c0 _%******************************************# {- p2 a* v- P8 R! c
disp('按任意键可以看到原调制信号和已调信号在频域内的图形'). u; }# ^6 Y D# [' B% Y9 }3 ^) q
pause" ~$ Z1 e3 R$ I# H! v# X
%************figure(2)*********************
, J: `; c- o4 b9 ifigure(2)' L- J, V1 `) z- o1 Y! [
subplot(2,1,1)5 T- v0 {/ A! J9 o
plot(f,abs(fftshift(M))) %fftshift:将FFT中的DC分量移到频谱中心 c% l3 ~% e9 v. f, N
xlabel('频率f')
5 x5 g( e5 V# ]4 q! M3 A( wtitle('原调制信号的频谱图')
! M: F. k/ Z* ?2 k. }. Csubplot(2,1,2)3 M* N1 M, S7 c( }- O/ F3 l
plot(f,abs(fftshift(U))) \, b9 ]4 ~+ V
xlabel('频率f'), C; _! |6 B6 s! j# k
title('已调信号的频谱图')
- P, D( |+ ~0 s. r. R%******************************************
4 d( U8 [+ M9 G* X" adisp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')
+ W" e' i' b6 z; K; _pause6 D, @: m$ T3 T$ }
%**************figure(3)******************
+ b- a0 v# n1 u& H: n m0 sfigure(3)
* j: \! c' R1 u4 a4 t# Zsubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
- Z+ }+ L, \% Z- r3 e+ F! H& {xlabel('时间t');
6 C- T0 Q4 x7 ~6 t& `- k3 r& btitle('调制信号的时域图');/ o' L- f1 I8 w! a, C; l
subplot(3,1,2);plot(t,sfm); %绘制已调信号的时域图
" s) j+ L, u' S5 X: H. j7 ?xlabel('时间t');( t6 ^; u6 k. h8 X! ?
title('无噪声条件下已调信号的时域图');
( W* b9 u3 Q, S$ v$ ansfm=sfm; 2 i+ K Z0 @5 I4 U: U. x6 u9 C
for i=1:length(t)-1 %接受信号通过微分器处理
. M2 T) x( A s; G diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
0 h# Y% r! ]: B* ^) lend! z* P- Z) v6 A2 ^
diff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)+ |- Z, Z% _3 K% Q( b' p$ x
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
8 {* \0 B5 u) Y1 z" C/ Idiff_nsfmn1=diff_nsfmn-zero;' B; S) }- f$ a- |
subplot(3,1,3); %绘制无噪声条件下解调信号的时域图
' @6 c" s! ^. j5 Nplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
; s* Z# t! b" W) ~/ T( T. ?xlabel('时间t');
5 X( N; ^6 T7 `( P7 Atitle('无噪声条件下解调信号的时域图');
% m8 T3 Z# ?, o- X%*****************************************
/ a6 ~) @6 B; l: q0 { L/ C$ P- bdisp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
6 u. [$ C) C" J0 g9 C: Cpause; H6 I a3 H- B9 v5 M6 B' q' G/ K
%**************figure(4)******************3 R0 K( ^; C+ X! c1 N4 V
figure(4)1 z: R/ E0 M1 F* A% b9 A4 e1 ^
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图) M% c- D! ^' [/ C# D% D; D7 @
xlabel('时间t');
2 F0 E8 S( R* |- c3 Q& atitle('调制信号的时域图');9 S$ i7 c( F4 D' f1 e; F! A5 P
db1=am^2/(2*(10^(sn1/10))); %计算对应的小信噪比高斯白躁声的方差/ k8 t9 T U: g" b, K# B8 n& n' l
n1=sqrt(db1)*randn(size(t)); %生成高斯白躁声
% M/ l! f8 f }nsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通
0 n; q2 }9 s* U2 ]- y/ c% %过信道传输) Q" p; x, I. g G
for i=1:length(t)-1 %接受信号通过微分器处理
+ ~7 d) V6 b4 N- j3 K7 \" p diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;' F7 m. b6 E6 }
end4 K+ G8 f! ~6 [& v& ^
diff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)2 f0 c; p8 j6 k$ F) _
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;; k- ^; b7 e [1 Y j6 S2 b
diff_nsfmn1=diff_nsfmn1-zero;
6 {4 ^! P+ o* bsubplot(3,1,2);
) M$ R2 ^3 p5 K" _plot(1:length(diff_nsfm),diff_nsfm); %绘制含小信噪比高斯白噪声已调信号的时域图8 Z. u' e, ~' H& d6 y3 x! W
xlabel('时间t');
- M, M1 x: H4 C; Btitle('含小信噪比高斯白噪声已调信号的时域图');
4 h) B* Y, g7 h3 Z4 r3 nsubplot(3,1,3); %绘制含小信噪比高斯白噪声解调信号的时域图
9 z2 Y; M6 ?9 ]7 |' b% P2 Tplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');" K1 I8 e& w6 `8 t, m! O2 s8 v% X/ w- B
xlabel('时间t');
1 a3 S# f% A2 R% Mtitle('含小信噪比高斯白噪声解调信号的时域图');; F0 g$ g' \' s% T, B1 d
%*****************************************
4 f" s7 C% p5 C( [5 _0 idisp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
( A4 B0 j& W) n/ y. F9 J* Cpause f5 ?1 c2 [: G
%**************figure(5)******************8 B# T% ^4 h$ L( @ f' ]% r d- q
figure(5)( x, O; h7 b5 J8 H F( S
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
" q, A- d6 s, n0 V; Ixlabel('时间t');3 K( m+ S/ g( J) a: c
title('调制信号的时域图');% o3 z) a9 ]) e% m* |+ ^1 g% A
db1=am^2/(2*(10^(sn2/10))); %计算对应的大信噪比高斯白躁声的方差6 L2 h$ R; E1 b$ M2 J) ?2 m
n1=sqrt(db1)*randn(size(t)); %生成高斯白躁声3 u& o7 x+ u) R& d" u' g
nsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通过信道传输)
2 i6 i. B/ z9 k. Qfor i=1:length(t)-1 %接受信号通过微分器处理
8 ^' ^0 g. }0 w8 z$ X6 K diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
7 P- D6 B# u) ?% k1 [* }0 ~end; V3 |8 k! e6 ]. B
diff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包
" \. j9 }* [. u% %络检波)
* ]+ I4 r" s4 xzero=(max(diff_nsfmn)-min(diff_nsfmn))/2; s4 d# T% Z$ s
diff_nsfmn1=diff_nsfmn1-zero;' W) o! h* @+ s$ P" R; a
subplot(3,1,2);
: G9 n P4 Z2 x; R2 G$ {plot(1:length(diff_nsfm1),diff_nsfm1); %绘制含大信噪比高斯白噪声已调信号# \* E' m+ P. d1 f0 ]* b( ^. y0 U
% %的时域图
& c' r* b4 h1 g, C' v% \xlabel('时间t');3 K* t% h: j* d6 Y4 `% Z* d4 q
title('含大信噪比高斯白噪声已调信号的时域图');
. D7 e: o+ L8 t0 _2 v6 ]' qsubplot(3,1,3); %绘制含大信噪比高斯白噪声解调信号. f$ B/ N: \" s6 H
% %的时域图
7 `. E! ]) H9 F" T# Vplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
Y7 A7 z! @, q: Yxlabel('时间t'); % e8 j" Y/ Z: k' |5 o
title('含大信噪比高斯白噪声解调信号的时域图');# {- J# j, A; h. \
%*****************************************0 v: {' ~" w; E8 c
%******************结 束******************** S+ }. V; `8 n6 e3 n
" S; S7 Q# V) F m7 u* _1 P
- s: @( {2 d% r5 J |
zan
|