EDA365电子论坛网

标题: Matlab之求随机生成数字信号单极性不归零码的时域图并求功率谱 [打印本页]

作者: haidaowang    时间: 2020-11-16 16:26
标题: Matlab之求随机生成数字信号单极性不归零码的时域图并求功率谱
》这一题的重点就是首先把码元表示出来,这里我是使用了randi([0,1],1,N);
& v3 \: S3 W! u( \. E" ]
# `0 P8 Y4 K  D( ^- o随机生成了0或者1,生产了N个随机数。* G- C2 o' o' e2 V5 \3 X

- U4 R! w  j7 ~" A》接着表示基本码元,这里的是单极性不归零NRZ码元,所以gt1= ones(1,N_sample);%不归零。之后就应用基本码元函数来生成所需要的最后的序列。! z; @/ c, v/ o3 I2 j
: c" }# I0 a# [
》再根据所生成的每一个码元把基本码元添加到里面。* U9 u& N% P) A$ A. @5 ^$ r& F+ a

6 s' {1 S8 s9 D8 |yt1((i-1)*N_sample+1:i*N_sample) = gt1;  
( r% C0 o1 q3 N, I( u- J
$ }8 J7 U; B/ w) x  s》最后利用快速傅里叶变换fft得到频谱,再用conj求出共轭这就相当于求了频谱模的平方。接着除以时间N就可以得到功率谱。
2 P! @5 v% _, X" g6 T- a
) I" ?: s% D% l8 j》在生成的图我们会发现有许多的冲激,那么你就可以看看这些冲击都是在哪一些位置,试着去掉着一些冲激。
/ j' ?9 T+ s, D2 O$ v5 b: A( e( P: K& i9 A/ Z6 m
for i = 1:80  + F; l6 f; Q4 a8 E' D
) P$ E) r. C7 S
     Pf1(i*100 + 1) = Pf1(i*10);
' T$ Y5 U# r( h3 Q9 v  ]$ Q4 T! A3 w- ~
end$ v3 l$ x+ {( }+ c% Y9 m4 R
. E  f; x$ v! Y5 W9 Z  t4 f
要生成别的码元表示只要稍微修改即可。/ f. O- Q& C* m+ ~1 X% \7 R
/ `! q! E* V1 A2 w! j$ ]
最后参考代码是:(图的显示的时候要多运行几次,最后效果才出来)
( x$ u; ?  y' O+ O$ I$ o# B
# e; C5 |" X9 e% G% communication principle. m* f4 z0 a( q2 v6 K% y
% Lab 6 problem 19 g: h$ w0 c4 g) q& S3 u
function single_polar_code
, q( r, A7 p$ i/ Mclear all;- `' p) B2 |( G# I
format long;6 K# {  {* w+ O: W+ i7 ~
Ts       = 1;                %码元周期
8 B$ ?# N% m" TN_sample = 128;              %每个码元抽样点数& E8 Z6 S' Q4 u' M) h: ?8 P
dt       = Ts/N_sample;      %抽样的时间间隔: n8 P0 o& L+ C7 B
N        = 100;               %码元数
$ o, m, |2 d0 Qt        = 0: dt: (N*N_sample-1)*dt;
3 S! W5 y# O/ O5 I; W( }' [3 y5 f/ b% 基本码元 g(t) = 1" f% m+ V3 M6 A& s$ A3 _
gt1      = ones(1,N_sample);                          %不归零
6 ?0 G& Y/ E+ ]* U) D% hgt2      = [ones(1,N_sample/2),zeros(1,N_sample/2)];  %归零,占空比为0.5
" m7 j0 {. B* ^0 ]9 egt3      = sinc(2*t(1:N_sample)/Ts);                  %sin(2*pi*t(1:N_sample)/Ts)/(2*pi*(1:N_sample)/Ts)% x- E" I3 o2 M/ O
gt0      = zeros(1,N_sample);8 U5 U' G% t% s( g$ @* Y

- d4 J/ Y; x5 N  N+ y7 v; t%生成随机码元
, M' \7 u! {& M& yrandom_code = randi([0,1],1,N);- P9 a' _; ?! H8 R/ ?6 D! V
3 p: l* B! h( O. K6 c) D
%单极性波形的最后结果
7 t( T# A- z* p- h# Wyt1      = zeros(1,N*N_sample-1);      
' P2 X& t3 i6 J' lyt2      = zeros(1,N*N_sample-1);& R0 j  b1 c! i$ |0 m7 y- p
yt3      = zeros(1,N*N_sample-1);' r. M$ U& d: p7 t
for i = 1:N
$ K# k, Z& ^& X, \    if random_code(i) == 1                             %得到波形图, J$ b1 t# J; b- D6 T7 |7 y) t" B$ m
        yt1((i-1)*N_sample+1:i*N_sample) = gt1;        %单极性不归零NRZ波形" d. R  s9 D2 h+ Q7 v' ~. \! y( M5 L
        yt2((i-1)*N_sample+1:i*N_sample) = gt2;        %单极性归零RZ波形+ D) G; S1 @9 O/ n+ {- }4 u
        yt3((i-1)*N_sample+1:i*N_sample) = gt3;        %双极性sinc波形; u4 C& h# j5 b- X1 M
    else
5 i- C* x5 [: N% y( G- s        yt1((i-1)*N_sample+1:i*N_sample) = gt0;        %没有这一行会经常报错3 p) g- U) ?% E" d
        yt2((i-1)*N_sample+1:i*N_sample) = gt0;; N& Z4 y2 _2 b. ?( T$ j9 l
        yt3((i-1)*N_sample+1:i*N_sample) = (-1)*gt3;
# i5 u' T: I4 h! ]    end
; M  E5 h! i+ l6 @+ [end; o2 E7 t6 \' j( r4 j
. _4 {, y! D  u7 `6 a- [2 i5 V( Z
%*********************************************************************
3 {+ t4 e' X7 }. Y$ F%求单极性不归零时域波形于波功率谱密度
. c0 C! m- U9 x- y5 l) \6 [/ P; V" `figure(1)
: E% X  {- t, p; @% N6 }7 Bsubplot(2,1,1);
( v8 a# |* w( o, U5 T( Q( eplot(t,yt1,'r');
5 E  H# y. D) \; W, ~8 k5 u' U! M4 ]title('单极性不归零NRZ波形');- V' ?+ ~4 L9 j# G
xlabel('时间t/s');. f! N* ~. B; F2 S3 @2 `! l: K
axis([0,20,-0.5,1.5]);                %画单极性不归零NRZ波形信号幅度频谱' |% h4 y" H( f! E
grid;6 S. d0 [8 {# C, B' O, ]
  q" F6 G2 _3 _( S! l
Ft1 = fft(yt1);3 x! e' [' h) E8 y% d( M. V
Ft1 = fftshift(Ft1);) v1 ?, `2 i7 @( o
p   = (Ft1.*conj(Ft1))/N;                    %计算功率谱密度  
6 q/ g* C9 q% |ff1 = (-length(Ft1)/2:length(Ft1)/2-1)/10;
' k& m' U1 }  }Pf1 = 10*log10(p);" a) n. f; w4 m# J* q  Y
for i = 1:802 V+ @9 ]7 s3 }/ o! C2 m. ^8 {. O  W
    Pf1(i*100 + 1) = Pf1(i*10);
4 U7 K* i' V9 J+ n, W+ F  P) h1 j: \end
9 L: t; D& P% b7 {0 E. G2 Zsubplot(2,1,2);
/ \. J% R( G& D( P& C* ?9 j/ Dplot(ff1,Pf1);
, k) r5 G( Q8 r5 R4 x. a( naxis([-50,50,-50,50]);               %画出单极性不归零NRZ波形功率谱密度! y) W- I* d9 n4 k* T
grid;* D8 L5 n; k1 H# E' T  Z
%*********************************************************************; i) u1 `. ~- `& L# O9 K
3 r& s' ~2 h2 r& {
%*********************************************************************
3 u" t0 q* A! c# x7 f%求单极性归零时域波形与波功率谱密度" c! h/ `; p5 y2 T6 ?
figure(2)  `9 Q3 E" f. a. _
subplot(2,1,1);  ~% d$ \7 A% c0 r  |
plot(t,yt2,'r');$ X1 U& v! k2 p7 f4 {6 L5 z
title('单极性归零RZ波形');
3 Z% R. K% K/ w3 B4 D# Y6 txlabel('时间t/s');
7 D" W  \; r5 }; V0 r. Kaxis([0,20,-0.5,1.5]);              %画出单极性归零RZ波形功率谱密度, d0 @; M4 u) d
grid;
3 x2 s  ~# K% @" _7 y9 O- ?- N/ Q0 p7 P
. T% g" l4 O' l* o' [. ~Ft2  = fft(yt2);1 u+ J+ ^* n4 U1 Y; G
Ft2 = fftshift(Ft2);0 M) X$ P9 K1 B% E% ~" ^
p2   = (Ft2.*conj(Ft2))/N;                 %计算功率谱密度  
0 h, k! t9 ?6 }8 }ff2  = (-length(Ft2)/2:length(Ft2)/2-1)/10;5 ?. b2 J$ I+ g
Pf2  = 10*log10(p2);' G1 L; V# B7 W- H
for i = 1:806 T# h. Y9 ^  R1 r3 Y, J' q
    Pf2(i*100 + 1) = Pf1(i*10);
' ^& j5 E& N+ N$ `6 b& {5 T* |end
; E# h4 u. f: Ksubplot(2,1,2);. z& E, I/ M; P; K+ \# ~
plot(ff2,Pf2);
4 u! P& }; H* D, n9 f, zaxis([-50,50,-50,50]);             %画出单极性不归零NRZ波形功率谱密度$ d4 c0 Y8 p: T
grid;
% n7 X& n( T6 k( s( T%*********************************************************************
( B# ?4 H- ]3 z. E# f  E8 \) ~9 R  I# m
% u; k: Z) K. j  @5 Z' g%*********************************************************************
- h" }6 r$ X/ y; b  c%求双极性sinc波形时域波形与功率谱密度
8 _+ P; N# d' F3 v0 A- vfigure(3)
" `2 E) `+ _2 c. G( ]1 @; u; Ssubplot(2,1,1);
+ A4 H. y5 q+ t' g6 E3 Z: lplot(t,yt3,'r');9 p5 p9 ^4 T# l- B: \  u( o, O
title('双极性sinc波形');
; B' `. x7 r" N( h, _2 zxlabel('时间t/s');* p1 A- o8 m2 Q. R  ^! b0 K% f
axis([0,20,-1.5,1.5]);              %画出双极性sinc波形功率谱密度
4 {7 R, [% X8 F! S- ^9 G5 @; j0 tgrid;2 R: ]0 l% _( ]4 D2 a+ h
; _0 C: }, X  M5 v7 n
Ft3 = fft(yt3);
; `( X- ?" [9 l' r2 H% T  CFt3 = fftshift(Ft3);  k. C' l( q) C
p3   = (Ft3.*conj(Ft3))/20;               %计算功率谱密度  ' A# j: H. \1 N6 ]" m; |
ff3  = (-length(Ft3)/2:length(Ft3)/2-1)/10;- q: S8 Y! }) }" K2 b4 j
Pf3  = 10*log10(p3);' a6 D- U; H* o0 z
subplot(2,1,2);3 ?0 l/ q! [* |$ B/ e
plot(ff3,Pf3(1:length(Ft3)));
) P7 Z8 \- E3 T) Y) xaxis([-50,50,-50,60]);             %画出单极性不归零NRZ波形功率谱密度
0 n& }# t0 v7 G0 P5 V7 y/ ~+ ]grid;: ?/ I; D; G4 T$ x6 w% m+ _
%**************************
作者: yin123    时间: 2020-11-16 17:30
Matlab之求随机生成数字信号单极性不归零码的时域图并求功率谱




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2