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