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 1
9 g: h$ w0 c4 g) q& S3 u
function single_polar_code
, q( r, A7 p$ i/ M
clear all;
- `' p) B2 |( G# I
format long;
6 K# { {* w+ O: W+ i7 ~
Ts = 1; %码元周期
8 B$ ?# N% m" T
N_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 Q
t = 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% h
gt2 = [ones(1,N_sample/2),zeros(1,N_sample/2)]; %归零,占空比为0.5
" m7 j0 {. B* ^0 ]9 e
gt3 = 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& y
random_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# W
yt1 = zeros(1,N*N_sample-1);
' P2 X& t3 i6 J' l
yt2 = 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 B
subplot(2,1,1);
( v8 a# |* w( o, U5 T( Q( e
plot(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:80
2 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 Z
subplot(2,1,2);
/ \. J% R( G& D( P& C* ?9 j/ D
plot(ff1,Pf1);
, k) r5 G( Q8 r5 R4 x. a( n
axis([-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 t
xlabel('时间t/s');
7 D" W \; r5 }; V0 r. K
axis([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:80
6 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: K
subplot(2,1,2);
. z& E, I/ M; P; K+ \# ~
plot(ff2,Pf2);
4 u! P& }; H* D, n9 f, z
axis([-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- v
figure(3)
" `2 E) `+ _2 c. G( ]1 @; u; S
subplot(2,1,1);
+ A4 H. y5 q+ t' g6 E3 Z: l
plot(t,yt3,'r');
9 p5 p9 ^4 T# l- B: \ u( o, O
title('双极性sinc波形');
; B' `. x7 r" N( h, _2 z
xlabel('时间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 t
grid;
2 R: ]0 l% _( ]4 D2 a+ h
; _0 C: }, X M5 v7 n
Ft3 = fft(yt3);
; `( X- ?" [9 l' r2 H% T C
Ft3 = 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) x
axis([-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