Ошибка в коде

Цена договорная
18 мая 2019, 09:13 • 3 отклика • 100 просмотров
Для задания определенного количества импульсов используется вот эта строчка
data_in = np.loadtxt('1.txt')
Где. '1.txt - текст. Док. с 64-мя нулями и единицами.
Внимание вопрос :почему при записи кода график с импульсами не совпадает с заданами нулями и единицами?
Вот код
import numpy as np

import pylab as pl

import scipy.signal.signaltools as sigtool

import scipy.signal as signal

from numpy.random import sample


# the following variables setup the system

Fc = 1000# simulate a carrier frequency of 1kHz

Fbit = 50# simulated bitrate of data

Fdev = 500# frequency deviation, make higher than bitrate

N = 64# how many bits to send

A = 1# transmitted signal amplitude

Fs = 10000# sampling frequency for the simulator, must be higher than twice the carrier frequency

A_n = 0.10 # noise peak amplitude

N_prntbits = 10 # number of bits to print in plots



def plot_data(y):

# view the data in time and frequency domain

# calculate the frequency domain for viewing purposes

N_FFT = float(len(y))

f = np.arange(0, Fs / 2, Fs / N_FFT)

w = np.hanning(len(y))# нужно для преобразования Фурье

y_f = np.fft.fft(np.multiply(y, w))

y_f = 10 * np.log10(np.abs(y_f[0: int(N_FFT / 2)]) / N_FFT)

pl.figure(figsize=(17, 7))

pl.subplot(3, 1, 1)

pl.plot(t[0: int(Fs * N_prntbits / Fbit)], m[0: (Fs * N_prntbits // Fbit)])

pl.xlabel('Time (s)')

pl.ylabel('Frequency (Hz)')

pl.title('Original VCO output versus time')

pl.grid(True)

pl.subplot(3, 1, 2)

pl.plot(t[0:int(Fs * N_prntbits / Fbit)], y[0: int(Fs * N_prntbits / Fbit)])

pl.xlabel('Time (s)')

pl.ylabel('Amplitude (V)')

pl.title('Amplitude of carrier versus time')

pl.grid(True)

pl.subplot(3, 1, 3)

pl.plot(f[0: int(Fc + Fdev * 2 * N_FFT / Fs)], y_f[0:int(Fc + Fdev * 2 * N_FFT / Fs)])

pl.xlabel('Frequency (Hz)')

pl.ylabel('Amplitude (dB)')

pl.title('Spectrum')

pl.grid(True)

pl.tight_layout()

pl.show()



"""

Data in

"""


data_in =np.loadtxt('1.txt')


"""

VCO

"""

t = np.arange(0, float(N) / float(Fbit), 1 / float(Fs),

dtype=np.float)# массив равномерно распределенных значений от 0 до N/Fbit (1/Fs значений между этими числами)


# extend the data_in to account for the bitrate and convert 0/1 to frequency

m = np.zeros(0).astype(float)# пустой массив

for bit in data_in:

# np.hstack горизонтально соединяет массивы

if bit == 0:

m = np.hstack((m, np.multiply(np.ones(Fs // Fbit), Fc + Fdev)))

else:

m = np.hstack((m, np.multiply(np.ones(Fs // Fbit), Fc - Fdev)))

# calculate the output of the VCO

y = np.zeros(0)# одномерный пустой массив

y = A * np.cos(2 * np.pi * np.multiply(m, t))# моделирование передачи по зашумленному каналу по формуле

plot_data(y)