伪随机序列

import numpy as np
import matplotlib.pyplot as plt
#用来正常显示中文标签
#plt.rcParams['font.family'] = ['Simhei']
plt.rcParams['font.sans-serif'] = ['Yahei consolas hybrid']
#用来正常显示负号
plt.rcParams['axes.unicode_minus']=False
# 
A = 6
N = 200
x0 = 1
M = 255
v = np.zeros([N,1])
#print(v)
x= np.arange(N)
for k in np.arange(N):

    x2 = A*x0
    x1 = x2 % M
    v1 = x1/256
    v[k] = 2*(v1 - 0.5)
    x0 = x1
#print(v.reshape(7,16))
plt.plot(x,v)
plt.xlabel('k')
plt.ylabel('v')
plt.title('伪随机序列')
plt.show()

 再来一个

import numpy as np 
import matplotlib.pyplot as plt 

plt.rcParams['font.sans-serif'] = ['Yahei consolas hybrid']
#plt.rcParams['axes.unicode_minus']=False

def xor(A,B):
	xx = (not(A) and B) or (A and not(B))

	return xx


L = 60
M = np.zeros(L)
IM = np.zeros(L)
x1 = x2 =x3 =1
x4 = 0
S = 1

for i in np.arange(L):
	if xor(x3,x4):
		M[i] = 1
	else:
		M[i] = 0

	if xor(M[i],S):
		IM[i] = 1
	else:
		IM[i] = -1


	x4 = x3
	x3 = x2
	x2 = x1
	x1 = M[i]
	S = not(S)

plt.subplot(2,1,1)
plt.title('M序列')
plt.step(np.arange(L),M)

plt.subplot(2,1,2)
plt.title('逆M序列')
plt.step(np.arange(L),IM)

plt.subplots_adjust(hspace = 0.35)
plt.show()

  

参考:系统辨识与自适应控制MATLAB仿真(修订版) 庞中华 崔红 著

posted @ 2020-07-20 15:08  华小电  阅读(434)  评论(0编辑  收藏  举报