- 在线时间
- 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
9 D# l& f- P! F% L3 a0 y%频率调制与解调的Matlab演示源程序# i7 q: M+ l/ i" D
%可以任意改原调制信号函数m(t)
- K4 Y8 N! S+ x# [5 B%电子信息工程 杜怀超 091308305
: f. d- @! Y4 U# m# w/ G6 p%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
) W" z- o; |' P6 S%*****************初始化******************6 c0 U) j. s# G% H
echo off
1 ]3 j; D# B% f$ }close all
8 a- h+ V" h5 U. ?clear all
. v6 V5 a. v3 V0 Mclc+ g/ d! r0 ]; m. {* Q
%*****************************************2 z3 `. I' n2 [% X2 h
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
" y: q" k. w) Y, ]4 K%****************FM调制*******************
. D4 h o! X4 i6 K- Cdt=0.001; %设定时间步长
" V4 z; t, V% D; e/ P4 zt=0:dt:1.5; %产生时间向量# c0 g4 x2 d+ j3 X+ Y
am=5; %设定调制信号幅度
7 E! g3 B3 w$ dfm=5; %设定调制信号频率7 D1 ^/ Z$ X4 w& X# T+ k/ d# U$ A
mt=am*cos(2*pi*fm*t); %生成调制信号 D4 Z6 D+ ?9 i" ]
fc=50; %设定载波频率5 K9 E8 Q8 }0 t5 K' q' S
ct=cos(2*pi*fc*t); %生成载波9 @; _8 \: B" O2 R0 r( _9 J
kf=10; %设定调频指数
0 Q' b- }8 I0 ?( Q8 `: uint_mt(1)=0;- g" B$ y5 ^, S. h. W7 V2 {
for i=1:length(t)-1
3 j) H1 `7 ]) \4 Q* M+ F int_mt(i+1)=int_mt(i)+mt(i)*dt; %求信号m(t)的积分, R s/ P+ y* K/ @' S' A1 _
end %调制,产生已调信号) C% D- _& a& ]: b G
sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt); %调制信号- x1 P6 x6 N9 Z) `, |
%*****************************************
' E- w) X+ q, U. I%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
Q5 Z7 |6 g4 {- E" i%*************添加高斯白噪声**************- q' G r P6 o+ }; ?( U0 n
sn1=10; %设定信躁比(小信噪比)
$ [4 K% f( n+ osn2=30; %设定信躁比(大信噪比)
l' A, L+ l" O+ Z% Bsn=0; %设定信躁比(无信噪比)7 [3 e2 \7 l5 f, z i; e
db=am^2/(2*(10^(sn/10))); %计算对应的高斯白躁声的方差( L( P% x K& r1 M& D
n=sqrt(db)*randn(size(t)); %生成高斯白躁声
, J! Y) E' [) @- }" qnsfm=n+sfm; %生成含高斯白躁声的已调信号(信号通9 W: w1 {& Q- J9 R* S- V
%过信道传输)) l* O+ W% ]: i9 b7 r* w; U; {
%*****************************************# H! \& t5 w6 I! L( _* `
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
% T6 \, k4 f& c# I+ z" }& x%****************FM解调*******************
/ B# D& k" W. yfor i=1:length(t)-1 %接受信号通过微分器处理
( U `! A! j% ?, l diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
6 V2 A4 p6 \0 {1 h8 [: \end
, C" ^% }. K* w2 T7 D" J) V4 Z/ tdiff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)
0 @& N, Y, }6 G! J8 q' Tzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
) S2 e0 `0 q- D3 ^% Z2 rdiff_nsfmn1=diff_nsfmn-zero;
6 A1 }* U" d Q6 c5 {; x: u%*****************************************9 K. N q- ^2 [( n5 T1 V4 S4 [
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
# C; e4 Z8 W* S/ R%**************时域到频域转换**************
; }9 `; N$ E0 U7 pts=0.001; %抽样间隔
* [+ U6 n, M6 d) h- [: u/ q |fs=1/ts; %抽样频率
, o- T0 `; _+ pdf=0.25; %所需的频率分辨率,用在求傅里叶变换- A8 ~) s8 N6 f' n: \3 H; c- m0 x
% 时,它表示FFT的最小频率间隔; }7 G6 O: H( l" N# w
%*****对调制信号m(t)求傅里叶变换*****
2 G3 ^0 D9 B+ F5 ~ im=am*cos(2*pi*fm*t); %原调信号$ y( }, a7 P5 Z" c% d
fs=1/ts;
: i$ _( C6 X$ w1 D3 l" ?( L5 tif nargin==27 l/ P( j! @( _# t9 j8 b5 e6 u' [
n1=0;
& ?7 Q" L4 Q9 r! y Gelse8 d3 a( u* K" p2 w4 {3 x
n1=fs/df;, m. _" a7 a$ Q2 A5 r, ~0 m F8 x
end- d8 w) s: t% r1 H! P
n2=length(m); Y* A( y0 K6 X' z3 a
n=2^(max(nextpow2(n1),nextpow2(n2)));( Q' P( n. \- \9 g% B: x
M=fft(m,n);, \2 `2 A5 P( ]2 V& X2 L- e
m=[m,zeros(1,n-n2)];
% J& {' a9 M% H- r" e- \df1=fs/n; %以上程序是对调制后的信号u求傅里变换& V# H9 A( t" t6 J, l2 N
M=M/fs; %缩放,便于在频铺图上整体观察8 v: I5 c2 t* S4 [7 p8 u: D2 w
f=[0:df1:df1*(length(m)-1)]-fs/2; %时间向量对应的频率向量. ^! t* x" ?8 y8 V1 r: V
7 n4 T9 q% z% K1 Y. G- I }" R%************对已调信号u求傅里变换**********
h: J% a# [: M/ v1 c ] H& u* Jfs=1/ts;3 }( Q8 V* R$ J8 K F- C' X
if nargin==2
( w! p- H- @4 _9 {' l* ` n1=0;
$ n2 y; U; M/ O3 h2 Nelse
& e: R2 C; \7 E n1=fs/df;
5 F! Q& T6 w) ] xend( S* r5 j3 a8 p- U! m
n2=length(sfm);
7 B# q' ?( `% C# @" _" Qn=2^(max(nextpow2(n1),nextpow2(n2)));! @2 V, {! G$ ~: ?& Z& X
U=fft(sfm,n);. t3 n/ X7 i2 V" `2 e
u=[sfm,zeros(1,n-n2)];+ c' ?+ A; y4 ~" U @
df1=fs/n; %以上是对已调信号u求傅里变换# X+ f; k2 O! K0 C; f/ ]9 D6 q
U=U/fs; %缩放6 Q9 W# i: R7 T
%******************************************2 a% z0 g, y2 Z1 Y/ J
%*****************************************: I8 r7 I; G! b- s0 h' O. k# |* U' G
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
1 H3 u8 T+ }$ i# n3 F%***************显示程序******************
, Y% {7 B: ]; j; ddisp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')
+ x2 h8 Z0 B. X, Mpause" B- I, a$ o" P4 z: R4 A
%**************figure(1)******************+ q# Y6 P/ g* k( S$ M9 B
figure(1)
% U0 z$ H. \0 D$ b0 h# T! lsubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
/ E/ B0 v! \$ O$ y+ |% Vxlabel('时间t');
|0 c. d7 {8 Y1 U6 j& Jtitle('调制信号的时域图');6 u9 w6 Q+ T8 _( i' O" O5 a" E
subplot(3,1,2);plot(t,ct); %绘制载波的时域图, N4 @) o1 \) J7 L3 l
xlabel('时间t');
. q: ?+ \% C) J8 v: [, Y* Vtitle('载波的时域图');
( g [: G: S5 ssubplot(3,1,3);0 q# C G1 l5 ?
plot(t,sfm); %绘制已调信号的时域图1 P6 y5 T) T( U" q+ P
xlabel('时间t');% T" u9 I, f. @& B. J
title('已调信号的时域图');
7 q& X/ ?& ~* C* g1 g, M%******************************************
9 j$ \, M8 u+ M8 T! `0 ^; cdisp('按任意键可以看到原调制信号和已调信号在频域内的图形')
8 T8 E6 `. e9 M- z0 L. h! a7 rpause
1 \) @ a2 F9 s/ a% Y%************figure(2)*********************
7 x4 ?2 L6 C8 hfigure(2)
# ]; N. V* g: y+ n" u6 i7 qsubplot(2,1,1)
! }$ ~( E8 x+ _3 C4 r3 [% j# lplot(f,abs(fftshift(M))) %fftshift:将FFT中的DC分量移到频谱中心$ f& z+ T% d& E* l5 {3 U
xlabel('频率f')4 }& b ?" M8 ~9 d1 _: q, e
title('原调制信号的频谱图')7 |( J" B$ u# C1 A) x! N: W
subplot(2,1,2)0 R% m3 a6 m' F- \/ a
plot(f,abs(fftshift(U)))
. n6 F5 }- A& Q6 r+ Bxlabel('频率f')9 m# M* f; V3 y( v i4 [, U+ j& E
title('已调信号的频谱图'); W/ D( V$ d; e# s
%******************************************+ ^7 u/ r! s$ M$ K' ^7 {
disp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')) p& R* s! X6 @% N
pause- y, G* u6 c( |9 [; m, k
%**************figure(3)******************
o% ]# t! d; p/ A1 ]8 m7 ~5 Mfigure(3)
* {! b; I0 z H! y$ C3 q: Qsubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
3 P6 `4 d' C( ^8 w, a! R" lxlabel('时间t');2 t0 q, M* B- G7 F, e$ Y/ z6 s+ A
title('调制信号的时域图');
9 r! Z! T% K0 Y, \/ O/ |0 V' @subplot(3,1,2);plot(t,sfm); %绘制已调信号的时域图
% X; Q1 F6 U W8 x; ] u ^xlabel('时间t');
5 k* }1 b+ T" Y: W* c T( Ttitle('无噪声条件下已调信号的时域图');
' o' [! g2 z+ l, i$ s' Wnsfm=sfm;
1 A1 W8 r/ C2 Y( x5 t3 Kfor i=1:length(t)-1 %接受信号通过微分器处理# S# S1 p# y0 n& {* z
diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;) u' |9 @+ J B P
end x8 c; i8 L9 e# U; \! X f
diff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)
5 E1 \* h! \, s) d+ H0 z4 Xzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
6 x8 C0 Z' u2 Z, ~2 s& f( T2 ldiff_nsfmn1=diff_nsfmn-zero;
7 L6 a) I) i/ F0 s- o2 Hsubplot(3,1,3); %绘制无噪声条件下解调信号的时域图8 H0 k) S, w" g
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');# h4 i) S( A S5 T: y
xlabel('时间t'); * e& f, s5 U7 ~9 L T5 w5 p
title('无噪声条件下解调信号的时域图');: Q, K7 P2 z" j3 v5 r
%*****************************************
+ `0 `, Z# N) j% N& N4 f/ B2 H: ?disp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')0 n% |0 d9 _& I
pause
, D1 J8 u. Z2 |0 ~( ]% E%**************figure(4)******************, B! B6 i9 T6 ~; w& `! [0 ]
figure(4)
* H, g6 O7 H0 R+ W) e0 Psubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图6 P9 X8 N& z! f
xlabel('时间t');9 \* ~! l: m) ]! s
title('调制信号的时域图');: @4 j+ p/ i `! p# `$ ~2 F" T" }
db1=am^2/(2*(10^(sn1/10))); %计算对应的小信噪比高斯白躁声的方差& A7 x0 ]9 P* ~8 P. Q. b! n( k
n1=sqrt(db1)*randn(size(t)); %生成高斯白躁声. e' C3 j' k9 R
nsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通
1 v) M+ t4 k; ?% %过信道传输)
* G4 G6 l0 D2 X2 wfor i=1:length(t)-1 %接受信号通过微分器处理3 z7 `/ n+ l0 c% O5 ?
diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;1 A: h% c% L+ N8 {) S* a
end
) A+ L2 g, r. i( @& h) rdiff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)9 j r# x- x) U G9 l" @; A* N
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
, O8 g; H4 U7 { C# O$ t* K# Zdiff_nsfmn1=diff_nsfmn1-zero;0 d' |+ H( n" Y
subplot(3,1,2);
& J7 `6 C& m7 c2 Bplot(1:length(diff_nsfm),diff_nsfm); %绘制含小信噪比高斯白噪声已调信号的时域图
8 ]7 Z; H6 j' I7 txlabel('时间t');9 J$ y6 y5 u; h" {
title('含小信噪比高斯白噪声已调信号的时域图');8 D$ T# t0 w- H
subplot(3,1,3); %绘制含小信噪比高斯白噪声解调信号的时域图# E7 h' _( t; D; b
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
) k' y) g) J( X$ B! D) S) fxlabel('时间t'); " K% r9 @ _: W$ p, C
title('含小信噪比高斯白噪声解调信号的时域图');
$ B. n/ T: a: f7 b$ I%*****************************************0 m% M2 i# E8 V9 E) G/ X
disp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
$ R: g- o) x9 @. C. `$ S, o( `pause
: W G7 X( z% W' l# L2 y I%**************figure(5)******************
0 |# N1 X( T. j$ V; Yfigure(5)/ T% q/ C4 G- H9 g- c3 @7 x
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图. k* ~: X# L' N) V: W
xlabel('时间t');
# L; |, o2 i' F) N5 l* t/ \title('调制信号的时域图');. M$ @; z7 g" z1 g- b6 K% @' {
db1=am^2/(2*(10^(sn2/10))); %计算对应的大信噪比高斯白躁声的方差
3 h6 Y& }" O5 @0 v) S9 mn1=sqrt(db1)*randn(size(t)); %生成高斯白躁声8 f: Z5 }4 ^+ K, }& W6 I
nsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通过信道传输)
0 q. Z6 t7 o! Z; I5 x$ Yfor i=1:length(t)-1 %接受信号通过微分器处理4 s$ S- ~' w4 k" C; h- W: @
diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;- c" D) K8 C+ \
end- {1 ?8 T+ n3 \$ M8 T& s
diff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包7 L$ I* c9 U8 k
% %络检波)( k6 g+ s1 X. o4 W" u8 x+ U. N
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;8 F4 {1 M* t, y/ k
diff_nsfmn1=diff_nsfmn1-zero;, l# M- c& v5 \9 a
subplot(3,1,2);9 U3 j' M# l6 ^& \" |) t( X$ O
plot(1:length(diff_nsfm1),diff_nsfm1); %绘制含大信噪比高斯白噪声已调信号
7 Q/ y. _8 }- J* C/ A% %的时域图2 k7 R/ ?! A. S6 g- ^' F6 @' \
xlabel('时间t');6 [! Y% I* Y1 z2 v1 ~
title('含大信噪比高斯白噪声已调信号的时域图');
1 }; h# ]+ q0 ^1 [" x. E ]subplot(3,1,3); %绘制含大信噪比高斯白噪声解调信号/ d, B1 ~' M) s& z7 U( D) t
% %的时域图9 {- l! `" T% M1 Z0 R, T/ L
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');' r: O) W- d6 b% }3 T0 z
xlabel('时间t'); , e' g* ^4 s: T) t/ H+ P) J6 o
title('含大信噪比高斯白噪声解调信号的时域图');; T9 W9 S1 S: [8 R. a& O
%*****************************************: |; V& |7 q' L* I
%******************结 束*******************4 l$ T2 M* t1 g9 x4 K K
" Q" K: \" _( a% @5 R3 n/ F% `$ ~# M* Y! Y* p
|
zan
|