форкнуто от main/python-labs
Вы не можете выбрать более 25 тем
Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
99 строки
3.4 KiB
Markdown
99 строки
3.4 KiB
Markdown
# Индивидуальное контрольное задание по Теме 7
|
|
Выполнил: Тимошенко А.А. Проверил: Козлюк Д.А.
|
|
## Задание:
|
|
Вариант 1: Разработайте функцию с 5 аргументами, создающую последовательность отсчетов синусоидального сигнала с заданными параметрами: амплитуда, период, фаза, число отсчетов (аргу-менты функции). Сигнал должен быть записан в виде столбца в текстовый файл с заданным именем (5-й аргумент функции), а также возвращен в вызывающую программу в виде списка.
|
|
## Решение:
|
|
```
|
|
import math
|
|
|
|
def generate_sinusoid(amplitude, period, phase, num_samples, filename):
|
|
signal_list = []
|
|
|
|
for i in range(num_samples):
|
|
#здесь я вычисляю значения синусоиды по формуле
|
|
value = amplitude * math.sin(2 * math.pi * i / period + phase)
|
|
signal_list.append(value)
|
|
|
|
#записываю в текстовый файл в виде столбца
|
|
with open(filename, 'w', encoding='utf-8') as file:
|
|
for value in signal_list:
|
|
file.write(f"{value}\n")
|
|
|
|
return signal_list
|
|
|
|
#пример использования функции:
|
|
if __name__ == "__main__":
|
|
#параметры сигнала
|
|
A = 2.0 #амплитуда
|
|
T = 10 #период
|
|
phi = 0 #фаза
|
|
N = 50 #число отсчетов
|
|
file_name = "sinusoid_signal.txt"
|
|
|
|
#вызов функции
|
|
signal = generate_sinusoid(A, T, phi, N, file_name)
|
|
|
|
#проверка результата
|
|
print(f"Сгенерировано {len(signal)} отсчетов")
|
|
print(f"Первые 10 значений: {signal[:10]}")
|
|
print(f"Файл сохранен как: {file_name}")
|
|
```
|
|
Вывод в терминал:
|
|
```
|
|
Сгенерировано 50 отсчетов
|
|
Первые 10 значений: [0.0, 1.1755705045849463, 1.902113032590307, 1.9021130325903073, 1.1755705045849465, 2.4492935982947064e-16, -1.175570504584946, -1.902113032590307, -1.9021130325903073, -1.1755705045849467]
|
|
Файл сохранен как: sinusoid_signal.txt
|
|
```
|
|
Вывод в текстовый файл sinusoid_signal.txt:
|
|
```
|
|
0.0
|
|
1.1755705045849463
|
|
1.902113032590307
|
|
1.9021130325903073
|
|
1.1755705045849465
|
|
2.4492935982947064e-16
|
|
-1.175570504584946
|
|
-1.902113032590307
|
|
-1.9021130325903073
|
|
-1.1755705045849467
|
|
-4.898587196589413e-16
|
|
1.1755705045849445
|
|
1.902113032590307
|
|
1.9021130325903073
|
|
1.1755705045849467
|
|
7.347880794884119e-16
|
|
-1.1755705045849456
|
|
-1.9021130325903068
|
|
-1.9021130325903075
|
|
-1.175570504584947
|
|
-9.797174393178826e-16
|
|
1.1755705045849454
|
|
1.9021130325903057
|
|
1.9021130325903075
|
|
1.1755705045849472
|
|
1.2246467991473533e-15
|
|
-1.1755705045849452
|
|
-1.9021130325903068
|
|
-1.9021130325903075
|
|
-1.1755705045849474
|
|
-1.4695761589768238e-15
|
|
1.175570504584945
|
|
1.9021130325903066
|
|
1.9021130325903077
|
|
1.1755705045849476
|
|
1.7145055188062944e-15
|
|
-1.175570504584945
|
|
-1.9021130325903066
|
|
-1.9021130325903077
|
|
-1.1755705045849478
|
|
-1.959434878635765e-15
|
|
1.175570504584939
|
|
1.9021130325903066
|
|
1.9021130325903077
|
|
1.1755705045849538
|
|
2.204364238465236e-15
|
|
-1.1755705045849445
|
|
-1.9021130325903086
|
|
-1.902113032590308
|
|
-1.175570504584954
|
|
``` |