Найти - Пользователи
Полная версия: Использование функции scipy.signal.boxcar
Начало » Python для новичков » Использование функции scipy.signal.boxcar
1
PythonLive
Добрый день!

Столкнулся с проблемой неполного описания функции scipy.signal.boxcar в официальных мануалах и в недостатке примеров на данную тему с практической точки зрения.

Официальные мануалы гласят:

———————————————
boxcar(M, sym = 1)
The M-point boxcar window.
———————————————
Если более подробно: эта функция выполняет оконное преобразование Фурье, путем построение прямоугольного окна.
Параметры: M - число отсчетов
sym - симметрия (1 - да, 0 - нет).
Вот в принципе и все что удалось нарыть по этому вопросу. Но факт остается фактом - как применить данную функцию на практике, для решения задачи анализа гармонического состава сигнала (состоящего, например, из нескольких гармоник и наложенного шума).
А имеено, как применить к данному сигналу.

Вот кусок кода, который генерирует сигнал из 3-х гармоник, накладывает шум.
После этого, необходимо к полученному сигналу применить оконное преобразование Фурье (прямоугольное окно).
Из полученных результатов будет понятно как во времени распределены гармонические составляющие сигнала.

from pylab import *
from matplotlib import pylab
from scipy import *
from scipy.signal import *
import random
# 100 000 отсчетов сигналов на интервале в 0,1 секунду
dt = 0.000001
t = arange(0.0, 0.1, dt)
# Три гармонических сигналов единичной амплитуды
s1 = sin(2*pi*50000*t)
s2 = sin(2*pi*20000*t)
s3 = sin(2*pi*40000*t)
#Создание масок и генерация случайных промежутков времени
pr = random.random()
r1= pr/100
r2 = r1+((random.random() * 8 + 2) / 100)
mask = where(logical_and(t>r1, t<r2), 1.0, 0.0)
s1 = s1 * mask

pr = random.random()
r1= pr/100
r2 = r1+((random.random() * 8 + 2) / 100)
mask = where(logical_and(t>r1, t<r2), 1.0, 0.0)
s2 = s2 * mask

pr = random.random()
r1= pr/100
r2 = r1+((random.random() * 8 + 2) / 100)
mask = where(logical_and(t>r1, t<r2), 1.0, 0.0)
s3 = s3 * mask

#Добавление шума с единичным среднеквадратичным отклонением
nse = 1*randn(len(t))
#Готовый сигнал есть сумма шума и трех составляющих
x = s1 + s2 + s3 + nse
#Вывод исходного графика с налоденным шумом
pylab.subplot (3, 1, 1)
pylab.plot(t,x)

Может кто в курсе, как к построенному сигналу применить scipy.signal.boxcar , чтобы выполнить поставленную задачу?
Андрей Светлов
А с чего вы взяли, что boxcar - преобразование Фурье?
Это просто прямоугольная оконная функция на M точек.
FFT - отдельно
PythonLive
Именно, оказалось необходими вручную для каждого окна выполнять преобразование фурье (в цикле).
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB