#!/usr/bin/env python #coding=utf8 from numpy import array, arange, abs as np_abs from numpy.fft import rfft, rfftfreq from math import sin, pi import matplotlib.pyplot as plt import matplotlib as mpl mpl.rcParams['font.family'] = 'fantasy' mpl.rcParams['font.fantasy'] = 'Comic Sans MS, Arial' FD = 250000# , N = 2500# , N/FD F=250.0# w=(2.*pi*F/FD)# A=3.0# B=0.5# # F N sin_sig = array([A*sin(w*t) for t in range(N)])# plt.plot(arange(N)/float(FD), sin_sig, 'r') plt.xlabel(', .') plt.ylabel(' ') plt.title(' ') plt.grid(True) plt.show() spectr_sin = rfft(sin_sig )# rfft plt.plot(rfftfreq(N, 1./FD), np_abs(spectr_sin)/N) # plt.xlabel(', ') plt.ylabel(' ') plt.title(' ') plt.grid(True) plt.show()
# c «» A*sin(w*t) abs()>abs(B) sinp_sig =array([A*sin(w*t) if abs(A*sin(w*t))<B else A*sin(w*t)*B/abs(A*sin(w*t)) for t in range(N)]) plt.plot(arange(N)/float(FD), sinp_sig, 'r')# plt.xlabel(', .') plt.ylabel(' ') plt.title(' c ') plt.grid(True) plt.show() spectr_sinp = rfft(sinp_sig ) plt.plot(rfftfreq(N, 1./FD), np_abs(spectr_sinp)/N)# plt.xlabel(', ') plt.ylabel(' ') plt.title(' ') plt.grid(True) plt.show()
# «c » A*sin(w*t) abs()=abs(B) sinn_sig = array([A*sin(w*t) if abs(A*sin(w*t))<B else 0 for t in range(N)]) plt.plot(arange(N)/float(FD), sinn_sig, 'r') plt.xlabel(', .') plt.ylabel(' ') plt.title(' c ') plt.grid(True) plt.show() spectr_sinn = rfft(sinn_sig ) plt.plot(rfftfreq(N, 1./FD), np_abs(spectr_sinn)/N)# plt.xlabel(', ') plt.ylabel(' ') plt.title(' ') plt.grid(True) plt.show()
A=1.0 B=0.4 test_n = 2560 # - test_f = 200 # test_period_count = 10.0 # - test_t = numpy.linspace(0.0, test_period_count/test_f, test_n) # sin(wt), test_base_signal = array([A*sin(2*pi*test_f* i) for i in test_t ]) test_signal =array([A*sin(2*pi*test_f* i) if abs(sin(2*pi*test_f* i))<B else 0 for i in test_t ]) #test_signal=array([A*sin(2*pi*test_f* i) if abs(A*sin(2*pi*test_f* i))<B else A*sin(2*pi*test_f* i)*B/abs(A*sin(2*pi*test_f* i)) for i in test_t ])
Source: https://habr.com/ru/post/325502/
All Articles