функция, которая создает список времени и соответствующее значение cos (t) и выводит его на график - PullRequest
0 голосов
/ 12 октября 2019

Добрый день! Я пытаюсь сделать функцию, которая принимает время остановки и частоту от пользователя, а затем возвращает значение cos (t). Используя значение, полученное из функции, я попытался построить его с помощью matplotlib. Я сталкивался с "ValueError: x и y должны иметь одинаковое первое измерение, но иметь формы (1,) и (10000,)"

import matplotlib.pyplot as plt
import numpy as np

######################

def cos_wave(t,freq):
    freq = 1/t
    x = np.arange(0,t,.001)
    y = []
    for i in x:
        c = np.cos(i)
        y.append(i)
    return y

time = float(input("Enter stop time: "))
freq = float(input("Enter frequency in Hertz: "))
t = np.arange(0, time,freq)


fig, cosx = plt.subplots()
cosx.plot(t, cos_wave(time,freq))

plt.show()

Пожалуйста, помогите мне, чтобы я мог взять любой видt (от нано до милли до секунд), и я не совсем уверен, как включить частоту в код, потому что я однажды заставил этот код работать, но он показывал только 1 цикл.

это то, что яхочу вывести

1 Ответ

0 голосов
/ 12 октября 2019

Преобразуйте частоту (предполагая, что вы имеете в виду частоту дискретизации?) К временному шагу (dt) и используйте его в качестве третьего аргумента для np.arange.

Функция cos_wave() не нужна. Вы можете просто вызвать np.cos в массиве раз, чтобы получить значение косинуса для каждой точки.

import matplotlib.pyplot as plt
import numpy as np

######################

# You don't need this function. Just use np.cos(t) to get the cosine wave you want
def cos_wave(t,freq):
    freq = 1/t
    x = np.arange(0,t,.001)
    y = []
    for i in x:
        c = np.cos(i)
        y.append(i)
    return y

time = float(input("Enter stop time: "))
freq = float(input("Enter frequency in Hertz: "))
dt = 1./freq
t = np.arange(0, time, dt)


fig, cosx = plt.subplots()
cosx.plot(t, np.cos(t), linewidth=2)

plt.show() 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...