Example #1
0
def build_plot_by_signal_section(start: float, end: float, signal: np.array,
                                 fs: int) -> np.ndarray:
    """Функція побудови графіку за заданим інтервалом часу, масивом даних та частотою дискретизації.
    На виході функції вектор з відліками часу і сигналу"""
    time = get_signal_duration(signal, fs)
    start_id = int(start * fs)
    end_id = int(end * fs) + 1
    if start_id < 0 or end_id > len(time) or start_id > end_id:
        return f"Введено некоректний проміжок. Проміжок має бути від 0 до {round(len(time)/fs, 2)} секунд"
    section_time = time[start_id:end_id]
    section_signal = signal[start_id:end_id]
    build_single_plot(section_time, section_signal)
    return np.column_stack((section_time, section_signal))
Example #2
0
    frames = int(fs * duration)
    filename = f'{path}record_{fs}_{datetime.datetime.now().strftime("%H%M%S")}.wav'
    print('Йде запис...')
    record = sd.rec(frames=frames, samplerate=fs, channels=1)
    sd.wait()
    write(filename, fs, record)
    print('Запис завершено!')
    return filename


sample_rate = 8000  # при записі іншого аудіфайлу замінюється значення дискретизації на 44100

duration = 5
path_to_save = '../data/sound_records/'
# запис аудіофайлу
filename = record_sound(duration, sample_rate, path_to_save)
data, _ = sf.read(filename, dtype='float32')
time = get_signal_duration(data, sample_rate)
# побудова графіку
build_single_plot(time,
                  data,
                  x_label='Час, t',
                  y_label='Амплітуда, А',
                  size=(12, 4),
                  title=f'Графік аудіофайлу {sample_rate}Гц',
                  plot_name_to_save=f'sound_plot_{sample_rate}')

# відтворення записаного файлу
sd.play(data, sample_rate)
sd.wait()
Example #3
0
import numpy as np
from laba3.services import get_signal_duration, build_multiple_plot

ekg_normal = np.load('../data/norm/1600715877.npz')
ekg_anomaly = np.load('../data/anomaly/1600717447.npz')
fs = ekg_normal['fs']
save_as = 'EKG_plot'
time_normal = get_signal_duration(ekg_normal['signal'], fs)
time_anomaly = get_signal_duration(ekg_anomaly['signal'], fs)

data_list = [{
    "title": "ЕКГ в нормі",
    "time": time_normal,
    "signal": ekg_normal['signal']
}, {
    "title": "ЕКГ аномальне",
    "time": time_anomaly,
    "signal": ekg_anomaly['signal']
}]
ylabel = ['Напруга, мВ', 'Напруга, мВ']
labels = [ekg_normal['labels'], ekg_anomaly['labels']]
labels_indexes = [ekg_normal['labels_indexes'], ekg_anomaly['labels_indexes']]

build_multiple_plot(2,
                    data_list,
                    title='Графіки сигналів ЕКГ',
                    x_label='Час, с',
                    y_label=ylabel,
                    labels=labels,
                    labels_indexes=labels_indexes,
                    plot_name_to_save=save_as)
Example #4
0
import numpy as np
from laba3.services import get_signal_duration, build_single_plot

signal = np.load('../data/TBI_ICP.npy')

sample_rate = 125
time = get_signal_duration(signal, sample_rate)

build_single_plot(time, signal, x_label="Час, с", y_label="Тиск, мм рт.ст.",
                  title="Графік внутрішньочерепного тиску",
                  plot_name_to_save="intracranial_pressure_plot")
Example #5
0
import numpy as np
from laba3.services import get_signal_duration, build_multiple_plot

path_standing = '../data/standing.csv'
path_running = '../data/running.csv'
path_walking = '../data/walking.csv'

paths = [path_standing, path_running, path_walking]
saves = ['standing', 'running', 'walking']

for path, save in zip(paths, saves):
    data = np.genfromtxt(path, delimiter=';', encoding='utf-8', skip_header=True)
    accelerometers = data[:, :3]
    gyroscopes = data[:, 3:]
    sample_rate = 2
    time_array = get_signal_duration(data, sample_rate)
    data_list = [
        {'title': "Акселерометр", 'signal': accelerometers, 'time': time_array},
        {'title': "Гіроскоп", 'signal': gyroscopes, 'time': time_array}
    ]
    label_y = [r'Прискорення, $\frac{м}{с^{2}}$',
               r'Кутова швидкість, $\frac{град.}{с}$']
    legend = ["X", 'Y', 'Z']
    build_multiple_plot(2, data_list, title=f'Графіки сигналів ({save})',
                        x_label='Час, с', y_label=label_y, legend=legend,
                        plot_name_to_save=save)